Hallo zusammen,
habe mir einen kleinen Mikrocontroller zugelegt und bin mit der Sprache
C bewaffnet. Will jetzt ein kleines Projekt starten, um vor allem C
besser kennen zu lernen bzw. es in der Praxis anzuwenden.
Was würdet ihr einem Einsteiger empfehlen? Welche (nützlichen)
Projektideen habt ihr?
Bin über Input von euch Experten hier dankbar :)
Hans schrieb:> Was würdet ihr einem Einsteiger empfehlen?
Blink.
It's like Hello World.
Ansonsten: wer keine Anwendung hat, braucht das nicht lernen.
PID Regler werden gerne gebaut, Temperatur oder Motordrehzahl, inkl.
autotuning steckt da schon Software drin.
Hans schrieb:> habe mir einen kleinen Mikrocontroller zugelegt und bin mit der Sprache> C bewaffnet.
Aber überhaupt keine Idee?
Blinklicht, Lauflicht, Lichtblitzer, Lichtorgel, Tongenerator,
Melodiegong,
Temperaturanzeige, Tonaufzeichnung/Wiedergabe, Zeitschaltungen für Licht
-
um nur einige Anwendungen für den Hausgebrauch zu nennen...
Hallo,
niemand weiß, was bei Deinem kleinen aber feinen Mikrocontroller noch
dabei ist. Kannst Du nur LEDs anschließen oder sind auch Ausgaben aufs
Terminal per UART möglich oder kannst Du ein LCD anschließen?
Zum Üben läßt man meistens ein paar LEDs blinken, auf dem Display kann
man eine Variable bis 255 hoch zählen lassen, später dann bis 65535. Wer
sich dann immer noch langweilt, kann eine Uhr programmieren, einen
RC5-Empfänger, oder die oben erwähnten Tongeneratoren. DDS-Generatoren
bieten vielfältige Möglichkeiten, sowie die Ausgabe eines Sinus mittels
DA-Wandler auch in vielerlei Varianten und Qualitätsabstufungen möglich
ist, so z.B. mit TDA1543 oder anderen DA-Wandlern oder sogar mit PWM.
Oder man steuert bürstenlose Motoren an, steuert Quadcopter, baut
Netzwerkserver, GPS-gestützte Frequenznormale...
mfG
es muss ja für den Anfang nicht gleich ein sinnvolles Projekt sein.
Erstmal die Schnittstellen wie IO, UART, SPI, I2C kennenlernen. Dann
irgendwelche Sensoren auslesen und z.B. ein Display ansteuern.
Für den Anfang vielleicht mal ohne fertige Libs...
Johannes S. schrieb:> es muss ja für den Anfang nicht gleich ein sinnvolles Projekt> sein.
Warum sollte man sich damit befassen, wenn kein Ziel gegeben ist?
> Erstmal die Schnittstellen wie IO, UART, SPI, I2C kennenlernen. Dann> irgendwelche Sensoren auslesen und z.B. ein Display ansteuern.> Für den Anfang vielleicht mal ohne fertige Libs...
Klassische Hardware mit 74xx / 40xx und Analogkram habe ich jahrelang
gemacht und wurde dafür gut bezahlt. Ich habe eigene Leiterplatten mit
6502 und 6805-Controller gemacht, auch das in der Firma gut bezahlt -
bis ich dann in andere Aufgaben gerutscht bin und mich hauptberuflich
immer mehr von der Hardware entfernen musste.
Hobbymäßig kam mir eine Aufgabe in den Sinn, die ohne µC nicht machbar
ist und ich habe mir vom Chinesen zwei UNOs bestellt, ein Wiederbeleben
der alten Umgebung für 68HC05 wäre sehr aufwendig geworden.
Also erstmal drei LEDs an den UNO, ein Lauflicht gestrickt - Hurrahh,
die Umgebung funktioniert schon mal. Dann habe ich das Ding samt drei
LEDs, einem Display, drei Tastern und einem Drehpoti auf eine
Lochrasterplatte gebracht und weiter gespielt.
Wie ich es mmer wieder propagiere: Erstmal ein paar grundsätzliche Dinge
ohne direkten Nährwert geschrieben und gespeichert - das war dann die
Basis, das echte Projekt erfolgreich anzugehen.
Es ist schwierig, ohne konkretes Ziel hätte ich keine Motovation, mich
damit zu befassen.
Hans schrieb:> Will jetzt ein kleines Projekt starten, um vor allem C besser kennen zu> lernen bzw. es in der Praxis anzuwenden.
Warum? Soll heißen: Was hast Du mit C vor?
> Was würdet ihr einem Einsteiger empfehlen? Welche (nützlichen)> Projektideen habt ihr?
Irgend etwas, das annähernd mit dem zu tun hat, was Du final mit Deiner
zu erwerbenden Kompetenz vorhast.
Wenn Du das Ganze als Selbstzweck betreibst, dann kommt alles oder
nichts in Frage, je nach Deiner Motivation.
Es stellt sich die Frage, warum Du Dich überhaupt dieser Mühe
unterziehen willst, wenn Du einerseits etwas 'Nützliches" häkeln
möchtest, Dir andererseits aber ums Verrecken nichts "Nützliches'
einfällt ...
Manfred schrieb:> Warum sollte man sich damit befassen, wenn kein Ziel gegeben ist?
Der Hans hat nix von seinem Wissensstand geschrieben, da muss man eben
nicht mit einem Mars Rover anfangen. Ein 'Hello World' auf das Display
zu schreiben ist ja auch schon ein Ziel.
Johannes S. schrieb:> Manfred schrieb:
Ein 'Hello World' auf das Display
> zu schreiben ist ja auch schon ein Ziel.
Man kann aufs Display aber auch schreiben, am besten in Laufschrift:
"Sehr verehrte Mutantinnen und Mutanten, das hier ist mein erstes
Programm auf dem Arduino!"
Nimm irgendein DCF-Modul - und bekomme erstmal das DCF-Signal
µC-gerecht (Pegel) aufbereitet:
- Ohne etwas (hierzu erforderlichem) Spaß an Schaltungstechnik
brauchst du mit µCs garnicht erst anzufangen. - Tschüs!
Dann dekodiere das Signal ordentlich, so dass auch Schaltsekunden,
Sommer-Winter-Zeitumstellungen und Empfangsprobleme abgefangen werden:
- Dazu musst du den DCF-Code mit den genannten Randbedingungen
beherrschen. (Das wirst du auch bei anderen Problemen brauchen)
Ansonsten wird dafür Programmier-Können in der bevorzugten Sprache
gebraucht. - Bei Problemen wird dir hir geholfen.
Natürlich willst du die DCF-Zeit auch anzeigen - dann sieh mal zu,
wie du ein 2 x 16 LCD-Modul ansteuerst.
Dann könntest du noch die
- für Kaufleute die Kalenderwoche
- für Sternfreunde das Julianische Datum
- für Esoteriker die (mittlere) Mondphase
aus Datum und Zeit berechnen.
- Dazu musst du dir die Rechenregeln besorgen und mit deiner
Progrmmiersprache in das Projekt einarbeiten....
Also - Los geht's!!!
Persönlich würde ich was hardwarenahes programmieren wo man die Funktion
analog nachmessen kann. So habe ich auf einem uC ein Batteriemanagement
implementiert: Abschalten des Verbrauchers bei Unterspannung -
Verwendung des internen AD-Wandler. "Totmannschaltung", d.h. wenn länger
als 15Min kein AudioSignal anliegt, wird alles heruntergefahren
(Verwendung des analog-Komparator-Einganges). Erzeugung von
zeitverzögerten Steuersignalen um das System rauf-/runter zu fahren
(Power-sequenzer). Das Ganze möglichst stromsparend: Der Prozessor wird
die meiste Zeit in deep sleep versetzt und nur gelegentlich aktiviert:
Watchdog timer mit Interrupt. All das paßt in einen 8-füßigen Attiny25
hinein und wurde in C ohne irgendeinen debugger programmiert. Auf der
Basis lassen sich naürlich beliebig andere Anwendungen denken, z.B. eine
Akku-Entladestation mit Messung der Kapazität etc ppp.
Hans schrieb:>> Was würdet ihr einem Einsteiger empfehlen? Welche (nützlichen)> Projektideen habt ihr?>
Ich würde an deiner Stelle noch nicht auf ein Projekt fixieren, denn die
Zukunft ist völlig unvorhersehbar.
An deiner Stelle habe ich weitergelernt wie man Schrittmotoren, Servos
und DC-Motoren ansteuert. Die werden überall benötigt für: CNC,
Lasercutter, 3D-Drucker, Roboterarme, automatisierte Schablonen,
bewegliche Kameras.
Und das Auslesen von Sensoren, sich erkundigen was es so für Sensoren
auf dem Markt gibt.
Wahrsager schrieb:> bau nen quadcopter. da lernst du dann was über die ansteuerung von> motoren, regelung, modellierung und übertragungstechnik. ^^
Die Idee ist prinzipiell gut. Fliegende Drohnen bauen die in Fabriken
(Industrie 4.0) bestimmte Bauteile hin und her liefern. Das erspart
Einhängeschienen und Fließbänder.
Hans schrieb:> Was würdet ihr einem Einsteiger empfehlen? Welche (nützlichen)> Projektideen habt ihr?
Wir wissen ja nicht welchen Micro - Controller Du hast. Ein sehr
interessanter Einstieg wäre der ESP32 oder der ESP8266.
Ich habe eine Seite ausfindig gemacht die gute Tutorials bietet, die
auch nachbausicher sind. Zumindest habe ich alles was mich interessierte
zum Laufen gebracht.
https://randomnerdtutorials.com/
mfg klaus
Manfred schrieb:> Warum sollte man sich damit befassen, wenn kein Ziel gegeben ist?
Das kommt mit der Zeit automatisch das die Projekte die Überhand nehmen
Lasst den Jung doch mal etwas machen. Vorschläge hat er ja schon genug.
Wie wärs mit einer Wetterstation? Anfangen mit Temperaturmessung. Es
gibt viele verschiedene Sensoren, viele Möglichkeiten für eine Anzeige.
Kann man ausbauen, Luftfeuchte oder mit funk einen draußensensor,
Luftdruck, Sonne, Wind, Wetterverlauf, größeres Display,.....
Ansteuerung eines Textdisplays ist eine schöne Herausforderung.
Vielleicht erst mit Library und dann mal selber nach Datenblatt
programmieren.
Wenn man das hat kann man darauf aufbauen: Die Wetterstation finde ich
eine gute Idee. Ich selber habe als Anfänger ein einfaches Messgerät für
Kondensatoren gebaut, weil mein damaliges Multimeter das nicht konnte.
D.h. Kondensator aufladen/entladen und dabei Zeit messen... Später kann
man seine Messstation ja beliebig weiter ausbauen.
Falls du selber Musik machst, ist der Bau von MIDI-Controllern auch
immer ne coole und nützliche Sache. Sicher nicht billiger als kaufen,
aber dafür kann man alles so bauen/programmieren wie man es selber gerne
hätte. Und an Reglern drehen macht ja eh Spaß ;-)
irgendeintollername schrieb:> Ansteuerung eines Textdisplays ist eine schöne Herausforderung.
Macht mit dem WiFi Kit 8 Board besonders Spaß:
http://stefanfrings.de/esp8266/index.html#wifikit8
Allerdings würde ich dennoch dazu raten, erst mal einen LED Blinker zu
versuchen und die Programmiersprache zu lernen. Zumindest das bisschen
davon, dass Arduino voraus setzt.
Als Fortgeschrittenenprojekte ein Akkuladegerät mit U/I logging?
Entweder die Kurven zwischenspeichern und auf dem PC ausgeben
oder mit Grafikdisplay ausgeben.