Block 1 - Erste Schritte mit Arduino und C

Block 1

Erste Schritte

In diesem Video wird Ihnen erklärt, was die Arduino IDE ist und wie man sie herunterlädt und installiert.

Hier können Sie sich die Arduino IDE herunterladen:

https://www.arduino.cc/en/Main/Software

Auf der nächsten Seite erklären wir Ihnen, wie ein Programm aufgebaut ist und schreiben ein kleines Programm für Ihren Arduino

Das erste Programm

Aufbau eines Programms

Um ein Programm schreiben zu können, muss man verstehen, wie Programme für den Arduino aufgebaut sind.

Das erste Programm

Da Sie nun wissen, wie ein Programm aufgebaut ist, können Sie nun Ihr erstes Programm schreiben.

Verwendeter Code:

Das erste Programm:
void setup(){
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop(){
  // put your main code here, to run repeatedly:
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(2000);
}

Übungsaufgaben

Jetzt können Sie Ihr neu erworbenes Wissen in Übungsaufgaben verfestigen.

1.) Baulampe

Programmieren Sie den Blink-Rhythmus einer Baustellenlampe, ähnlich wie in diesem Video. Die Lampe soll 0,5 Sekunden an, und 0,5 Sekunden aus sein. Nutzen Sie die eingebaute Light-Emitting Diode (LED) und implementieren Sie dieses Muster.

So soll Ihre LED blinken:

2.) Wesertonne

Damit Schiffe im Dunkeln Seezeichen erkennen können, blinken diese in unterschiedlichen Farben und Rhythmen. Die letzte Tonne (Fahrwassermarkierung) auf der Weser bei Lemwerder/Bremen trägt die Nummer 125. Sie leuchtet grün für 1 Sekunde, dann 1 Sekunde Pause, erneut eine Sekunde leuchten, dann 6 Sekunden Pause, dann wird das Muster wiederholt. In der Seefahrt wird dies mit "FL(2)G.9s" bezeichnet.

Nutzen Sie die eingebaute LED und implementieren Sie das Muster.

In diesem Rhythmus soll Ihre LED blinken:

3.) Windrad

Die "Allgemeine Verwaltungsvorschrift zur Kennzeichnung von Luftfahrthindernissen" beschreibt unter anderem die Licht-Markierungen an Windenergieanlagen. Ab 100m Höhe müssen sie durch das sogenannte Blinklicht "Feuer W, rot" markiert werden. Dieses leuchtet in folgendem Muster: 1s an - 0,5s aus - 1s an - 1,5s aus. Nutzen Sie die eingebaute LED und implementieren Sie dieses Muster.

In diesem Rhythmus soll Ihre LED blinken:

4.) SOS Notsignal - Teil 1

Schreiben Sie ein Programm, welches das SOS-Zeichen im Morsealphabet blinkt. Das SOS-Zeichen besteht aus der folgenden Abfolge von Ein-/Auszuständen der LED:

... --- ...

Die Zeichen bedeuten: Punkt: kurzes EIN Strich: langes EIN, dreimal so lange wie ein Punkt Leerstelle: langes AUS, so lange wie ein Strich Zwischen zwei Punkten oder Strichen wird eine kurze AUS-Pause gelassen, die so lange ist wie ein Punkt. Zwischen den Dreiergruppen befindet sich jeweils eine Leerstelle. Die Länge eines kurzen Zeichens ist 200 Millisekunden.

Variablen

Um mit Programmen auch rechnen zu können, benötigt man Variablen.

Verwendeter Code:

Variablen:
int wait_time;

void setup(){
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
  wait_time = 1000;
}

void loop(){
  // put your main code here, to run repeatedly:
  digitalWrite(LED_BUILTIN, HIGH);
  delay(wait_time);
  digitalWrite(LED_BUILTIN, LOW);
  delay(3*wait_time);
}

Übungsaufgaben

Jetzt können Sie Ihr neu erworbenes Wissen in Übungsaufgaben verfestigen.

1.) Definitionen und Werte

Wo wird eine globale Variable definiert? a) vor "void setup()" b) in "void setup()" c) in "void loop()"

Wo kann einer Variable ein Wert zugewiesen werden? a) in "void setup()" b) in "void loop()"

2.) Lückentext

Welche Zeichen müssen in die Lücken, damit am Ende der Funktion loop() c=-17 gilt?

void loop()  [   ]
int a = 5;
int [   ] = 22;
a = 6;

int c = a [   ]  b - 1;
}

3.) Kommentar

Welche Zeichensequenz wird genutzt, um einen Kommentar zu beginnen?

4.) Blinkvariation

Schreiben Sie ein Programm, dass eine LED im Rhythmus 5s an, 1s aus blinken lässt. Nutzen Sie eine Variable, um die An-Zeit zu speichern.

Wenn dieses Programm funktioniert, verändern Sie es, sodass nach jeder eingeschalteten Phase der Wert der Variable um 0,5 Sekunden erhöht wird.

5.) SOS Notsignal - Teil 2

Erweitern Sie das Programm aus dem ersten Teil so, dass die Geschwindigkeit des SOS-Blinkens (die Länge des kurzen Zeichens) leicht verändert werden kann. Verwenden Sie hierzu genau eine Variable, in der die Länge für ein kurzes Zeichen gespeichert ist. Berechnen Sie alle anderen Zeiten abhängig von dieser Variable.

While-Schleife

Übungsaufgaben

1.) Lückentext

Die LED blinkt im folgenden Muster (1 Sek an, 1 Sek aus; 2 Sek an, 1 Sek aus; 3 Sek an, 1 Sek aus; 4 Sek an, 1 Sek aus). Verwenden Sie eine while-Schleife und füllen Sie die Lücken:

 [   ] i=1;
while(i<=4)
{
digitalWrite(13, HIGH);
delay([   ]);
digitalWrite(13, LOW);
delay([   ]);
i++;
[   ]

2.) Blinkschleife Einfach

Lassen Sie die interne LED blinken, wobei sie in jedem Blinkdurchgang jeweils 500 Millisekunden ein- und wieder ausgeschaltet werden soll. Verwenden Sie eine Schleife, um das Blinken zu erzeugen.

3.) Blinkschleife Erweitert

Schreiben Sie eine while-Schleife, die die interne LED 10 mal blinken lässt, dann 4 Sekunden dunkel ist. Achten Sie auf die Lesbarkeit des Codes durch Einrückungen. In der Arduino-IDE hilft die Tastenkombination Strg+T.Angehängte Dateien:

In diesem Rhythmus soll Ihre LED blinken:

4.) SOS

Morsen Sie SOS (drei mal kurz, drei mal lang, drei mal kurz) mit drei Schleifen.

In diesem Rhythmus soll Ihre LED blinken:

5.) Zeilenverkürzung

Lassen Sie die interne LED im sich wiederholenden Rhythmus

1s an, 1s aus, 2s an, 1s aus, 1s an, 1s aus, 2s an, 1s aus, 5s aus, blinken. Welchen Teil können Sie geschickt durch eine while-Schleife verkürzen?

In diesem Rhythmus soll Ihre LED blinken:

6.) SOS blinken - Teil 3

Ändern Sie das Programm aus dem zweiten Teil so, dass für die Ausgabe der Blinkzeichen eine while-Schleife verwendet wird. Verwenden Sie für die Ausgabe jeder Dreiergruppe von langen oder kurzen Zeichen jeweils eine while-Schleife.

Setup und Loop

Setup und Loop sind die beiden wichtigsten Funktionen im Arduino. Im folgenden werden Sie lernen, wie diese Funktionen aufgebaut sind.

Breadboard

Das Breadboard (auch Steckbrett genannt) ist wichtig, um Schaltungen aufzubauen. Sie werden im Folgenden, die Funktionen und die Verkabelung des Breadboards kennen lernen.

Interne Verkabelung des Breadboards:

Widerstände

Video einfügen: "Widerstände im Arduino-Kit"

Übungsaufgaben

1.) 5 Band Code

Welcher Widerstand liegt vor Ihnen, wenn die Farbringkombination gelb - grün - braun - orange - rot aufgedruckt ist? Mit Hilfe der Tabelle können Sie die benötigten Farbringe ablesen:

2.) Vorwiderstände für LED und Helligkeitssensor

Sie möchten eine LED benutzen. Welchen Widerstand sollten Sie wählen?

a) 220 Ohm

b) 10kOhm

Sie möchten den Helligkeitssensor benutzen. Welchen Widerstand müssen Sie vor den Sensor schalten?

a) 220 Ohm

b) 1 kOhm

c) 10 kOhm

Lösung zu Aufgabe 1.):

451.000 Ohm +/- 2% => 451kOhm

Externe LED

Da Sie jetzt das Breadboard kennen gelernt haben, können Sie nun auch externe LEDs an den Arduino anschließen.

Verwendeter Code:

int wait_time;
int unsere_led_out = 12;

void setup(){
  // put your setup code here, to run once:
  pinMode(unsere_led_out, OUTPUT);
  wait_time = 1000;
}

void loop(){
  // put your main code here, to run repeatedly:
  digitalWrite(unsere_led_out, HIGH);
  delay(wait_time);
  digitalWrite(unsere_led_out, LOW);
  delay(3*wait_time);
}

Übungsaufgaben

1.) Baustellenlampe

Nutzen Sie den Code, den Sie als erstes für die Baustellenlampe programmiert haben (Übung 1 aus "Das erste Programm"). Eine Light-Emitting Diode (LED) blinkte dabei mit 1Hz = 0,5 Sekunden an, 0,5 Sekunden aus.

Nutzen Sie den gezeigten Steck-Plan, um eine externe LED anzuschliessen.

In diesem Rhythmus soll Ihre LED blinken:

2.) Ampel

Aufbau:

Sie bauen eine Ampel. Bauen Sie dazu drei LEDs mit je einem Vorwiderstand auf Ihrem Steckbrett auf. Verbinden Sie jede LED mit einem einzelnen digitalen PIN. Sie können den vorgeschlagenen Aufbau verwenden.

Programmierung:

Steuern Sie die Ampel im richtigen Muster: 5 Sekunden Rot, 1 Sekunde Rot-Gelb, 6 Sekunden Grün, 2 Sekunden Gelb. Wiederholung.

Vorgeschlagener Aufbau:

3.) Lauflicht

Bauen Sie an alle 14 digitalen Pins eine LED mit Vorwiderstand. Programmieren Sie ein Lauflicht, wie in der Abbildung gezeigt. Jede LED soll 0,5 Sekunden leuchten, dann ausgeschaltet werden, danach soll die nächste LED eingeschaltet werden. Nutzen Sie eine Schleife, um Code-Dopplungen zu vermeiden.

Verändern Sie das Lauflicht, dass von links nach rechts und dann rechts nach links läuft.

5.) Blinkmuster

Ordnen Sie drei externe LEDs nebeneinander auf dem Breadboard an. Steuern Sie diese so an, dass folgende Blinkmuster erscheinen:

In der ersten Sekunde nach Start des Programms soll Muster Nr. 1 erscheinen, in der zweiten Sekunde Nr. 2 usw. Wenn alle acht Muster ausgegeben wurden, soll wieder mit Nr. 1 begonnen werden.

Der Button

Um nun auch Eingaben in den Arduino tätigen zu können, kann man einen Button anschließen. Im Folgenden lernen Sie, wie man den Button anschließt und mit Hilfe von If-Anweisungen auf die Eingaben reagiert.

Übungsaufgaben

1.) INPUT

Schließen Sie einen Button und eine LED an je einen PIN an. Beachten Sie den Widerstand vor der LED (Vorwiderstand). Stecken Sie eine 10 kOhm Widerstand vom Button zum Ground Pin (pull-down Widerstand). Wenn der Button gedrückt wird, soll die LED leuchten. Wenn der Button losgelassen wird, soll die LED nicht mehr leuchten. Nutzen Sie den gezeigten Steck-Plan.

Vorgeschlagener Aufbau:

2.) INPUT_PULLUP

Wie in Aufgabe 1 soll beim Button-Druck eine LED leuchten. Dieses mal soll jedoch nicht INPUT (wie oben in Übung 1), sondern INPUT_PULLUP verwendet werden.

Die Seite des Buttons, die vorher an 5V angeschlossen war, wird nun an Ground angeschlossen. Der pull-down Widerstand soll nun entfernt werden.

Bauen Sie die Schaltung nach und passen Sie Ihren Programmcode aus Aufgabe 1 an.

Erklärung pull-up und pull-down Widerstand:

Ein pull-down Widerstand sorgt dafür, dass an dem Input-Pin des Arduinos eine Spannung von 0V anliegt, wenn der Button nicht gedrückt wird. Ist der Button nicht gedrückt, so ist der Widerstand zwischen dem Button und Ground 10kOhm, da der verwendete Widerstand diesen Wert hat. Zwischen dem Input-Pin und 5V ist der Widerstand nahezu unendlich, da der Button nicht gedrückt wurde. Sobald der Button gedrückt wird, verbindet er den Input-Pin mit 5V, sodass der Widerstand zwischen dem Pin und 5V nahezu 0 Ohm beträgt. Da der Widerstand zwischen Input-Pin und Ground weiter 10kOhm beträgt liegen an dem Input-Pin nach drücken des Buttons 5V an. Ohne den pull-down Widerstand wäre bei nicht gedrücktem Button sowohl der Widerstand zwischen dem Input-Pin und Ground, als auch zwischen dem Input_Pin und 5V nahezu unendlich. Der Input-Pin hätte daher keinen definierten Wert und der Arduino würde zufällig 0V oder 5V erkennen. Ein pull-up Widerstand funktioniert analog. Durch ihn ist die Spannung am Arduino 5V wenn der Button nicht gedrückt wurde und wird zu 0V wenn der Button gedrückt wurde.

3.) Up and On

Nutzen Sie den Aufbau aus Aufgabe 1 oder 2.

Mit jedem Knopf-Druck soll eine Variable um 1 erhöht werden.

Daraufhin soll die LED genau so viele Sekunden leuchten, wie der Wert der Variablen. Anschließend soll die LED 0,1 Sekunden aus sein.

Wenn der Wert 10 erreicht ist, soll die Variable auf den Wert 0 zurückgesetzt werden.

4.) Timing

Sie sollen drei LEDs ansteuern. Lassen Sie in der void loop() eine Zählvariable mit jedem Durchlauf von loop() um 1 hochzählen.

Solange der Wert kleiner als 10000 ist, sollen alle drei LEDs an sein. Solange der Wert unter 20000 ist, sollen noch zwei LEDs an sein, solange der Wert unter 30000 ist, soll nur noch eine LED an sein. Danach geht die LED für 4 Sekunden ganz aus. Dann wird die Zählvariable wieder auf 0 gesetzt und alles wiederholt sich.

5.) Zeitmessung

Schreiben Sie ein Programm, das auf einen Button-Druck des Benutzers wartet. Die Zeit zwischen Drücken und Loslassen soll gemessen werden. Nach dem Loslassen des Buttons soll die LED aufleuchten, und zwar so lange, wie vorher der Button gedrückt wurde. Hinweis: Verwenden Sie für die Zeitmessung des Button-Drucks die Funktion millis() jeweils beim Drücken und Loslassen des Buttons und für das Timing der LED die Funktion delay().

Potentiometer und Serieller Monitor

Möchte man einen Analogen Wert einlesen, z.B. um eine Lampe zu dimmen, hilft der Button nicht viel. Abhilfe schafft das Potentiometer (kurz Poti), ein einstellbarer Widerstand.

Serieller Monitor

Um die Messwerte des analogen Pins des Arduinos, der mit dem Potentiometer verbunden ist, anzuzeigen, kann man den seriellen Monitor verwenden.

Übungsaufgaben

1.) Print

Benutzen Sie eine for-Schleife, um mit Hilfe des Seriellen Monitors (Konsole) die Zahlen von 1 bis 10 auszugeben. Bauen Sie ein Delay von 2 Sekunden zwischen zwei Zahlenausgaben ein.

2.) P_i_t

Geben Sie nun die Zahlen von 20 bis 2 in 2er-Schritten aus. Bauen Sie ein Delay von 2 Sekunden zwischen zwei Zahlenausgaben ein.

3.) millis()

Geben Sie die aktuelle Anzahl an Millisekunden nach Systemstart aus. Suchen Sie dazu in der Arduino Reference nach der Funktion millis().

Nutzen Sie eines Ihrer älteren Programme, das in einem Muster geblinkt hat. Ergänzen Sie es so, dass eine 0 an die Konsole gesendet wird, wenn die LED ausgeschaltet wird und eine 1, wenn sie eingeschaltet wird.

5.) Poti

Bauen Sie eine Schaltung mit einem Potentiometer und einer LED. Wenn das Poti einen Wert von über 500 meldet, soll die LED leuchten, sonst nicht.

Vorgeschlagener Aufbau:

6.) Einstellbares Blinklicht

Schreiben Sie ein Programm, dass die Blinkgeschwindigkeit der LED abhängig von der Einstellung eines Potentiometers steuert. Wenn das Potentiometer am linken Anschlag steht, soll die LED jeweils abwechselnd für 2 Sekunden ein- und ausgeschaltet werden. Wenn es am rechten Rand steht, soll die Ein- und Auszeit jeweils 0,5 Sekunden sein. Bei allen Stellungen dazwischen soll die Ein- und Auszeit entsprechend angepasst werden. Die Werte der Ein- bzw. Auszeit sollen bei jedem Ein-/Aus-Zyklus auf dem seriellen Monitor ausgegeben werden.

Zufallszahlengenerator

VIDEO EINFÜGEN: "Zuffalszahlengenerator (RNG)"

VIDEO EINFÜGEN: "Random mit Arduino"

Übungsaufgaben

1.) 798634697234569

Lassen Sie sich zufällige Zahlen auf der Konsole ausgeben. Benutzen Sie dafür die Funktion random() aus der Arduino-Standardbibliothek. Die Dokumentation dazu finden Sie auf der Arduino Webseite, Resources -> Reference

2.) An - Aus - An - Aus - An - Aus

Lassen Sie eine LED in zufälligen Zeitabständen blinken.

3.) Romantik

Auch wenn es vielleicht noch etwas hin ist: Denken Sie an Weihnachten. Nicht mehr wegzudenken sind diese kleinen, elektronischen, mittel-romantischen LED-Teelichter.

Ihre Aufgabe ist es nun, solch eins zu bauen. Dafür brauchen Sie noch eine Funktion, die unterschiedliche Helligkeiten an der LED erzeugt.

"analogWrite(PIN, HELLIGKEIT);" kann in 256 Stufen die Helligkeit angeben. 0 bedeutet ganz aus, 255 ganz an. Damit das klappt können nur die Pins 3,5,6,9,10 und 11 verwendet werden. Denn nur an ihnen wird die Pulsweitenmodulation (PWM) unterstützt, die für das Dimmen der LED zuständig ist. Diese Pins sind auf dem Arduino-Board mit einer ~ (Tilde) markiert.

4.) Zufällig blinkende LEDs

Lassen Sie den Zufallsgenerator eine Zahl zwischen 1 und 10 auswürfeln. Entsprechend der gewürfelten Zahl soll die LED jeweils für 500 msec ein- und wieder ausgeschaltet werden. Beispiel: Es wird die Zahl drei gewürfelt, die LED erzeugt dann das Blinkmuster EIN-AUS-EIN-AUS-EIN-AUS. Nach dem Ende dieser Blinkserie soll die LED für weitere 2 Sekunden ausgeschaltet bleiben, anschließend würfelt der Zufallsgenerator eine neue Zahl und die nächste Blinkserie beginnt.

Aufbau des Arduino UNO-Boards

Debuggen

[Video einfügen: "Einführung ins Debuggen"]

Übungsaufgaben

1.) Falsche Start- und Endwerte

Der folgende Code soll die interne LED 5 mal blinken lassen, danach erfolgt eine Pause von 2 Sekunden, danach soll sie wieder 5 mal blinken usw. Tatsächlich blinkt sie aber jeweils nur 4 mal. Prüfen Sie mit einer Serial.println()-Anweisung, wo das Problem liegt und verbessern Sie den Code entsprechend.

Falsche Start- und Endwerte
void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  int a;
  a=1;

  while (a<5) {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(500);
    digitalWrite(LED_BUILTIN, LOW);
    delay(500);
    a++;
  }
  delay(1500);
}

2.) Dimmer

Betrachten Sie den im Bild gezeigten Schaltungsaufbau, es ist derselbe, der zur Einführung des Potis verwendet wurde. Der folgende Code soll einen Dimmer implementieren - die LED soll umso heller leuchten, je weiter das Poti nach rechts gedreht ist. Tatsächlich wird die LED aber dunkler, wenn es nach rechts gedreht wird. Prüfen Sie mit Serial.println()-Anweisungen, wo das Problem liegt und verbessern Sie den Code entsprechend.

Dimmer
void setup()
{
  pinMode(A0, INPUT);
  pinMode(11, OUTPUT);
}

void loop()
{
  wert=analogRead();
  analogWrite(wert/4);
}c

3.) Summe

Das folgende Arduino-Programm soll die Summe der Zahlen von 1 bis 100 berechnen und über den seriellen Monitor ausgeben. Es befindet sich aber ein Fehler im Code.

Summe
void setup() {
  Serial.begin(9600);

  Serial.print("Die Summe der Zahlen von 1 bis 100 ist ");

  int i=1, sum=0;
  while (i<=100) {
    sum+=i;
    i==i+1;
  }

  Serial.println(sum);
}

void loop() {
  // leer
}

a) Wie verhält sich das fehlerhafte Programm?

b) Schlagen Sie eine Stelle im Code vor, an der sinnvollerweise eine Serial.println()-Anweisung eingefügt werden sollte, um den Fehler zu finden.

c) Geben Sie Code an, der den Fehler beseitigt.

Fehler ABC

Häufige Fehler und deren Problemlösungen:

LED

  • LED aus => verpolt: Prüfen Sie, ob Anode (+) und Kathode (-) korrekt sind. Tauschen Sie die Anschlüsse gegebenenfalls. Tipp: Langes Bein: Plus. Oder: Flache Seite am Gehäuse: Minus.

  • LED aus => defekt: Tauschen Sie die LED aus.

  • LED aus => Vorwiderstand defekt (Überprüfung durch Multimeter): Tauschen Sie den Vorwiderstand aus.

  • LED aus oder glimmt leicht => Widerstand vor der LED (Vorwiderstand) zu groß: Wählen Sie einen kleineren Vorwiderstand (Achtung: Bei einem zu geringen Vorwiderstand kann die LED zerstört werden).

  • LED glimmt nur => Geben Sie in void setup() "pinMode(pin_nummer, OUTPUT);" an.

  • LED unzuverlässig => Wackelkontakt im Steckbrett: Nehmen Sie eine andere Loch-Reihe

Potentiometer

  • Potentiometer raucht => verpolt: Kurzschluss zwischen GND und 5V, schließen Sie die beiden äußeren Pins an die Spannungsversorgung an, nicht den mittleren.

  • Komische Zeichen im seriellen Monitor => falsche Baudrate: stellen sie im Programm und im seriellen Monitor die richtige Baudrate an (in der Regel 9600 Baud)

Button

  • Problem: Beim Drücken des Buttons wird eine Variable nicht wie erwartet um 1, sondern um mehrere Schritte erhöht.

  • Ursache: Dieser Effekt wird als Prellen (engl.: bouncing) bezeichnet: Durch die mechanischen Eigenschaften des Tasters "springt" der Kontakt beim schalten. Dies führt ggf. zu mehreren sehr kurzen Schaltimpulsen bei einer Betätigung (zusätzlich zum Hauptimpuls).

  • Lösung: Es gibt mehrere Ansätze, das Prellen in Software zu eliminieren. Die einfachste Lösung ist, eine gewisse Zeit (Entprellzeit) zu warten, bevor die Zustandsänderung registriert wird. Zusatzaufgabe: Implementieren Sie eine Entprellung für den Arduino. Was sind die Vor- und Nachteile? Was ist zu beachten?

Sonstiges

  • Probleme beim hochladen o.ä. => Nicht die Pins 0 und 1 benutzen, das führt häufig zu Problemen!

  • Nix geht => Kabel defekt: Tauschen sie das Kabel aus!

Fortgeschrittene Aufgaben

Zeitgefühl testen

Lassen Sie die LED für eine zufällig gewählte Zeit zwischen 1 und 5 Sekunden aufleuchten. Anschließend soll der Benutzer den Button für dieselbe Zeit drücken. Die Differenz zwischen der Zeit, die die LED aufgeleuchtet hat, und der Zeit, während derer der Benutzer den Button gedrückt hat, soll auf dem seriellen Monitor ausgegeben werden. Anschließend beginnt das Programm von vorne. Hinweis 1: Verwenden Sie für die Erfassung der Button-Druck-Dauer die Funktion millis(). Sie müssen die Funktion jeweils nach dem Drücken und Loslassen des Buttons aufrufen. Hinweis 2: Es kann gelegentlich vorkommen, dass der Button unmittelbar nach dem Drücken keinen sauberen Kontakt gibt, sondern mehrfach kurz hintereinander den Kontakt öffnet und schließt, bis dieser sich stabilisiert hat. Dieses Verhalten wird als Kontaktprellen bezeichnet. Nehmen Sie für Ihren Code an, dass der Taster immer sauber funktioniert. Sollte sich das Programm wegen des Kontaktprellens aufhängen oder unerwartet verhalten, starten Sie den Arduino neu.

Zusatzinhalte

Last updated