Programmieren lernen mit dem Arduino UNO R4 Minima: 10 praktische Beispiele
In diesem Beitrag zeige ich dir 10 spannende Beispiele mit dem Arduino UNO R4 Minima. Wir werden Schritt für Schritt durch jeden Aufbau und die Programmierung führen, sodass du ein tieferes Verständnis für diesen Mikrocontroller gewinnst. Du erinnerst dich vielleicht an die Projekte, die ich dir bereits für den Arduino UNO R3 vorgestellt habe. Diesmal wirst du jedoch sicherlich Neues entdecken und lernen. Auch wenn du noch ein Anfänger bist, keine Sorge! Die Projekte sind speziell für Menschen wie dich konzipiert, um dir einen praktischen Einstieg in die Welt der Programmierung zu ermöglichen. Von der Steuerung von LED-Blinkmustern bis hin zur Nutzung von Sensoren wie Temperatur- und Ultraschallsensoren - wir werden eine Vielzahl von Anwendungen erkunden. Ich bin mir sicher, dass du jede Menge Spaß haben wirst, während du dein Wissen erweiterst. Also schnapp dir deinen Arduino UNO R4 Minima und lass uns beginnen! Gemeinsam werden wir die Grundlagen meistern und faszinierende Projekte realisieren.
Die Beispiele sind von ganz leicht bis etwas anspruchsvoll, aber trotzdem oder gerade für Anfänger bestens geeignet. Zu jedem Beispiel werde ich dir eine kleine Liste mit Bezugsquellen für die benötigten Bauteile bereitstellen. Wobei du jedoch den Arduino UNO R4 Minima derzeit nur exklusiv im Arduino Store bekommst.
Anschluss an den PC und einrichten der Arduino IDE 2.0 für den Arduino UNO R4 Minima
Bevor wir jedoch mit der Programmierung beginnen können, müssen wir den Mikrocontroller einrichten. Dieser wird zwar in der Arduino IDE 2.0 erkannt, aber den kompletten Leistungsumfang (Speicher & CPU) können wir nur nutzen, wenn wir den Boardtreiber installieren. Den Boardverwalter finden wir in der Arduino IDE 2.0 in der Symbolleiste auf der linken Seite (1) dort suchen wir dann nach "arduino uno r4" (2) und wählen dort die Schaltfläche "INSTALL" (3). Wenn der Boardtreiber installiert wurde, dann wird dieses über einen Text " installed" (4) angezeigt und die Schaltfläche "INSTALL" wird zu "REMOVE".
Nun finden wir unter dem Pfad "Tools > Board:xyz > Arduino UNO R4 Boards" das Board "Arduino Uno R4 Minima".
Beispiel 1 - Ausgabe von Text auf der seriellen Schnittstelle
Im ersten Beispiel wollen wir einen Text auf der seriellen Schnittstelle ausgeben. Dieses können wir unter anderem dazu nutzen, um zusätzliche Ausgaben in unseren Quellcode einzubauen und so auf Fehlersuche zu gehen. //Funktion setup wird einmalig beim Starten //des Mikrocontrollers ausgeführt. //Diese wird auch ausgeführt, wenn du die Reset-Taste //auf dem Board drückst. void setup() { //begin der seriellen Kommunikation //mit 9600 baud Serial.begin(9600); } //Die Funktion loop wird fortlaufen ausgeführt. void loop() { //Ausgabe des Textes "Hallo Welt!" Serial.println("Hallo Welt!"); //einlegen einer kleinen Pause //von 500 Millisekunden delay(500); } Wenn du den obigen Quellcode auf dem UNO R4 Minima ausführst, dann solltest du im Intervall von 0,5 Sekunden die Ausgabe von "Hallo Welt!" sehen.
Beispiel 2 - eine Leuchtdiode (LED) programmieren
Eine Leuchtdiode kannst du mit einer kleinen Glühbirne vergleichen, jedoch wird diese nicht warm und verbraucht nur einen Bruchteil des Stromes. Die Leuchtdiode hat zwei Pins / Beinchen, wovon einen kürzer ist, am Gehäuse findest du zusätzlich noch eine abgeflachte Stelle. Dieses beide sind Indikatoren für die Kathode, welche der Minuspol der LED ist.
Aufbau einer LED Bei einer LED ist die Einbaurichtung zu beachten, denn dieses Bauteil leitet den Strom nur in eine Richtung. Du musst also immer GND an Kathode und die 5 V an die Anode (das lange Beinchen). ABER niemals darfst du eine LED ohne einen Vorwiderstand an eine Stromquelle anschließen. Im Grunde kannst du mit einem Vorwiderstand von 220 Ohm an einer 5 V Stromquelle nichts falsch machen. https://youtu.be/83pfTniHA9I LED blinken lassen Fangen wir mit einer einfachen Schaltung und einem ebenso einfachen Programm an und lassen eine LED blinken. Dazu schließen wir die Leuchtdiode mit einem 220 Ohm Vorwiderstand an den digitalen Pin D13 an.
eine LED am Arduino UNO Im Code müssen wir uns nun ein Feld mit dem Pin belegen und diesen in der Funktion setup als Ausgang definieren. In der loop wird jetzt fortwährend immer der Pin aktiviert und nach einer Pause wieder deaktiviert. #define ledBlau 13 void setup() { pinMode(ledBlau, OUTPUT); } void loop() { digitalWrite(ledBlau, HIGH); delay(500); digitalWrite(ledBlau, LOW); delay(500); } zwei LEDs wechsel blinken Im nächsten Schritt bauen wir eine zweite LED ein und erweitern unser Programm um diese so das beide LEDs im wechsel blinken.
zwei LEDs am Arduino UNO Das Wechselblinken entsteht dadurch, dass wir immer nur eine LED aktiv haben. #define ledBlau 13 #define ledGruen 8 void setup() { pinMode(ledBlau, OUTPUT); pinMode(ledGruen, OUTPUT); } void loop() { digitalWrite(ledBlau, HIGH); digitalWrite(ledGruen, LOW); delay(500); digitalWrite(ledBlau, LOW); digitalWrite(ledGruen, HIGH); delay(500); } eine Ampelschaltung mit drei LEDs Mit drei kleinen farbigen LEDs und der Erkenntnis von den beiden vorherigen Beispielen können wir nun eine Ampelschaltung programmieren. Eine Ampelschaltung besteht aus den vier nachfolgenden Phasen:
Wechsellichtzeichen nach §37 Abs.2 StVO Die rote LED schließen wir am digitalen Pin D13, die gelbe am digitalen Pin D12 und die grüne am Pin D11 an. Natürlich jeweils mit einem 220 Ohm Vorwiderstand.
Schaltung - Ampelphasen am Arduino UNO Im Code fügen wir eine weitere Funktion hin zu welcher wir als Parameter die Status der LEDs übergeben. Mit dieser Funktion halten wir unseren Code deutlich kürzer und wir verhindern doppelten Code. #define ledRot 13 #define ledGelb 12 #define ledGruen 11 void setup() { pinMode(ledRot, OUTPUT); pinMode(ledGelb, OUTPUT); pinMode(ledGruen, OUTPUT); } //Funktion zum setzen der Status der LEDs void setLEDs(bool ledR, bool ledGe, bool ledGr) { digitalWrite(ledRot, ledR); digitalWrite(ledGelb, ledGe); digitalWrite(ledGruen, ledGr); delay(450); } void loop() { setLEDs(false, false, true); setLEDs(false, true, false); setLEDs(true, false, false); setLEDs(true, true, false); } Wenn wir den Code auf dem Arduino UNO R4 Minima ausführen, dann sollten wir an den LEDs die vier Ampelphasen sehen. Ampelschaltung am Arduino UNO R4 Minima RGB LED programmieren Es gibt aber auch LEDs welche drei Farben in einem haben, dieses sind die RGB LEDs. Wobei hier die Abkürzungen RGB für die Farben rot, grün und blau stehen. Nachfolgend zeige ich dir ein kleines Beispiel, wie du diese RGB LED an den UNO R4 anschließt und programmierst. In diesem Beispiel verwenden wir eine reine RGB LED, also kein NeoPixel oder eine WS18B20 LED, welche einen größeren Farbraum abdecken würde. Die RGB LED verfügt über vier Kontakte, wobei jeweils ein Kontakt für jede Farbe dient und ein gemeinsamer Minuspol (GND).
Pinout der 10 mm RGB LED An den Mikrocontroller schließen wir die RGB LED wiefolgt an: - rot > D11, - blau > D10, - grün > D9, - GND > GND Die verwendeten Pins sind PWM Pins und somit können wir die Farben mixen und somit theoretisch aus dem 32bit Farbraum eine Farbe einstellen.
Schaltung - RGB LED am Arduino UNO Die Kontakte der RGB LED werden mit PWM Pins des UNOs verbunden, somit können wir nicht nur eine der drei Grundfarben Rot, Blau und Grün anzeigen, sogar auch eine mischen. #define ledRot 11 #define ledBlau 10 #define ledGruen 9 //Konstante für die Pause const int PAUSE = 1000; void setup() { pinMode(ledRot, OUTPUT); pinMode(ledBlau, OUTPUT); pinMode(ledGruen, OUTPUT); } //Funktion zum setzen eines PWM Wertes an der RGB LED void setLEDsValues(int valR, int valB, int valG) { analogWrite(ledRot, valR); analogWrite(ledBlau, valB); analogWrite(ledGruen, valG); } void loop() { //Rot setLEDsValues(255, 0, 0); delay(PAUSE); //Blau setLEDsValues(0, 255, 0); delay(PAUSE); //Grün setLEDsValues(0, 0, 255); delay(PAUSE); //Farben mischen setLEDsValues(128, 0, 55); delay(PAUSE); } Der Code bewirkt, dass die 3 Grundfarben Rot, Blau & Grün angezeigt werden. Zusätzlich wird noch eine Farbe gemischt.
Beispiel 3 - ein Drehpotentiometer am analogen Pin auslesen
Wie ein Drehpotentiometer aufgebaut ist, habe ich dir im Beitrag Bauteile: 50kOhm Drehpotentiometer gezeigt. Des Weiteren habe ich dir in diversen Beiträgen auch bereits gezeigt, wie man diesen am Arduino programmiert. Gerne möchte ich hier nun dir zeigen, wie dieser Drehpoti am Arduino UNO R4 Minima angeschlossen und programmiert wird. Auslesen des analogen Wertes vom Drehpotentiometer Zunächst schließen wir einen Drehpotentiometer am UNO R4 am analogen Pin A0 an.
Drehpotentiometer am Arduino UNO Den Wert eines analogen Sensors kann man mit der Funktion analogRead auslesen. Man erhält von dieser Funktion je nach verwendeter Spannung einen der beiden Wertebereiche: - bei 3.3V - 0 bis 679, - bei 5 V - 0 bis 1023 //der Drehpotentiometer ist //am analogen Pin A0 angeschlossen #define rotaryResistor A0 //Feld für das speichern des //Wertes für den Drehpoti int value = 0; void setup() { //begin der seriellen Kommunikation //mit 9600 baud Serial.begin(9600); //definieren das der Pin A0 //als Eingang dient pinMode(rotaryResistor, INPUT); } void loop() { //lesen des aktuellen Wertes vom Pin A0 value = analogRead(rotaryResistor); //ausgeben des Wertes auf //der seriellen Schnittstelle Serial.println(value); //einlegen einer kleinen Pause //von 25 Millisekunden delay(25); } In dem nachfolgenden Video siehst du den Wert im seriellen Monitor der Arduino IDE. Dieser ändert sich mit dem Drehen des angeschlossenen Drehpoti. Regeln der Helligkeit einer LED mit einem Drehpotentiometer Nachdem wir wissen, wie man den Wert eines Drehpoti auslesen kann, wollen wir nun dieses Bauteil nutzen, um die Helligkeit einer LED zu regeln. Man muss jedoch darauf achten, dass die LED an einen der sechs PWM Pins angeschlossen wird!
Schaltung - Arduino UNO mit Drehpotentiometer und LED Im Code müssen wir den analogen Wert, welcher zwischen 0 und 1023 liegen kann auf den PWM Wert welcher wiederum zwischen 0 und 255 liegt mappen. Dafür gibt es die Funktion map welche uns die Arbeit abnimmt. //Drehpotentiometer am analogen Pin A0 angeschlossen #define rotaryResistor A0 //LED am digitalen PWM Pin D3 angeschlossen #define led 3 void setup() { //der Pin A0 als Eingang definieren pinMode(rotaryResistor, INPUT); //der Pin D3 als Ausgang definieren pinMode(led, OUTPUT); } void loop() { //auslesen des aktuellen Wertes vom Drehpoti int value = analogRead(rotaryResistor); //mappen des gelesenen Wertes //von dem Gültigkeitsbereich eines analogen Wertes //0 bis 1023 auf den Gültigkeitsbereich //eines PWM Signals von 0 bis 255 int ledBrigthness = map(value, 0,1023, 0,255); //schreiben des ermittelten Wertes an den Pin der LED analogWrite(led, ledBrigthness); //einlegen einer kleinen Pause von 25 Millisekunden delay(25); } Im folgenden YouTube Video erläutere ich dir den Aufbau der Schaltung sowie wie du das Programm in der Arduino IDE programmierst. https://youtu.be/azJoXvXtxhE
Beispiel 4 - einen Taster programmieren
Im nächsten Beispiel soll es nun darum gehen, wie du einen Taster am Arduino UNO R4 Minima programmieren kannst. https://youtu.be/kBLyII4pCSE Es gibt hier diverse Möglichkeiten, einen Taster am Arduino zu programmieren. Zum einen mit einem PullUp oder PullDown Widerstand sowie über die internen 10kOhm Widerstände. Die Lösung mit dem internen 10 kOhm Widerstand ist deutlich einfacher, da wir hier auf einen zusätzlichen Widerstand in unserer Schaltung verzichten können. In der Grafik siehst du die 3 möglichen Anschlüsse eines Tasters am Arduino UNO.
3 Varianten zum Anschluss eines Tasters am Arduino UNO Prellen eines Tasters verhindern Das Problem mit einem Taster am Arduino ist, dass dieser prellt, das heißt, es werden mehrere Signale empfangen und ausgewertet. Dieses sollten wir nach Möglichkeit verhindern. Aber auch hier gibt es Abhilfe, eine recht einfache brauchbare Lösung mit dem Aufruf der Funktion delay und eine deutlich bessere mit der Bibliothek Bounce2. Lösung 1 - entprellen mit einem delay Die wie erwähnt einfachste Lösung ist mit dem Aufruf der Funktion delay. Hier legen wir eine kleine Pause am Mikrocontroller ein, um dem Benutzer Zeit zu lassen, den Taster loszulassen. //Taster am digitalen Pin D8 angeschlossen #define button 8 void setup() { //begin der seriellen Kommunikation mit 9600 baud Serial.begin(9600); //der Taster wurde über den internen 10 kOhm //Widerstand angeschlossen pinMode(button, INPUT_PULLUP); } void loop() { //Wenn der Taster gedrückt ist, dann... if(digitalRead(button)==LOW){ //Ausgeben des Textes Serial.println("Taster gedrückt!"); //einlegen einer kleinen Pause von 125 Millisekunden delay(125); } } Im Video siehst du, dass wenn der Taster gedrückt wird, die Ausgabe "Taster gedrückt!" im seriellen Monitor angezeigt wird. Lösung 2 - entprellen mit der Bibliothek Bounce2 Die deutlich bessere Lösung ist die mit der Verwendung der Bibliothek Bounce2, hier können wir sogar drauf reagieren, wenn der Taster gedrückt und ebenso losgelassen wird. D.h. wir könnten den Taster mit einer zusätzlichen Funktion belegen. Die Bibliothek Bounce2 findest du im Bibliotheksverwalter der Arduino IDE, indem wir dort nach "Bounce2" suchen und die Schaltfläche "INSTALL" betätigen.
Eintrag der Bounce2 Bibliothek im Bibliotheksverwalter der Arduino IDE Hier nun ein kleines Beispiel mit der Bibliothek, der Taster ist über den internen PullUp Widerstand verbunden. #include //Taster am digitalen Pin D8 angeschlossen #define button 8 //erstellen eines Button Objektes Bounce2::Button btn = Bounce2::Button(); void setup() { //begin der seriellen Kommunikation mit 9600 baud Serial.begin(9600); //verbinden des Button Objektes mit dem Pin und //definieren das dieser über den internen 10 kOhm //Widerstand angeschlossen ist btn.attach(button, INPUT_PULLUP); //Intervall für das entprellen auf 5 Millisekunden btn.interval(5); Read the full article









