Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
1.11 Intervall
Überblick
Manchmal müssen Sie zwei Dinge auf einmal tun. Zum Beispiel könnten Sie
eine LED blinken lassen und gleichzeitig einen Tastendruck lesen. In diesem Fall können Sie nicht
delay()
verwenden, da Arduino das Programm während delay()
anhält. Wenn
Taste gedrückt wird, während Arduino pausiert und auf den Ablauf von delay()
durchläuft, verpasst Ihr Programm den Tastendruck.
Dieser Sketch demonstriert, wie man eine LED ohne delay()
zum Blinken bringt. Er
schaltet die LED ein und notiert dann die Zeit. Dann, jedes Mal
durch loop()
, um zu sehen, ob die gewünschte Blinkzeit verstrichen ist.
Ist dies der Fall, wird die LED ein- oder ausgeschaltet und die neue Zeit notiert.
Auf diese Weise blinkt die LED kontinuierlich, während die Ausführung des Sketches nie
einer einzigen Anweisung verzögert.
Eine Analogie wäre das Aufwärmen einer Pizza in der Mikrowelle und das
eine wichtige E-Mail warten. Sie legen die Pizza in die Mikrowelle und stellen
sie für 10 Minuten. Die Analogie zur Verwendung von delay()
wäre, sich vor die Mikrowelle zu setzen
vor der Mikrowelle zu sitzen und zuzusehen, wie der Timer von 10 Minuten herunterzählt, bis er
Timer Null erreicht. Wenn die wichtige E-Mail in dieser Zeit eintrifft, werden Sie
wird man sie verpassen.
Im wirklichen Leben würde man erst die Pizza anmachen und dann und dann Ihre E-Mails abrufen, dann vielleicht etwas anderes tun (das nicht zu lange dauert!) (das dauert zu lange!), und ab und zu kommen Sie zur Mikrowelle zurück, um zu sehen um zu sehen, ob der Timer Null erreicht hat, was bedeutet, dass die Pizza fertig ist.
Erforderliche Komponenten

Fritzing-Schaltung
In diesem Beispiel verwenden wir den digitalen Pin 9, um die LED anzusteuern, und wir verbinden eine Seite des Widerstands an die entsprechenden digitalen Pins. Der längere Pin der LED (eine positive Elektrode, Anode genannt) ist mit der anderen der anderen Seite des Widerstands verbunden. Der kürzere Stift (eine negative Elektrode, bezeichnet als Kathode) der LED ist mit GND verbunden.

Schematische Darstellung

Code
Bemerkung
Sie können die Datei
1.11_interval.ino
unter dem Pfadsunfounder_vincent_kit_for_arduino\code\1.11_interval
direkt öffnen.Oder kopieren Sie diesen Code in Arduino IDE.
Wenn Sie das Hochladen der Codes auf das Mega2560-Board abgeschlossen haben, sehen Sie, wie die LED hochgeladen wird.
Code-Analyse
Deklarieren Sie den digitalen Pin 9 als ledPin.
const int ledPin = 9;
Setze den Zustand von ledState auf LOW, um die LED auszuschalten.
int ledState = LOW;
Initialisiere eine Variable namens previousMillis, um die vorherige Betriebszeit des Mikrocontrollers zu speichern.
unsigned long previousMillis = 0;
Setzt die Intervallzeit auf 1000ms (Millisekunden).
const long intervall = 1000;
Setze ledPin in den OUTPUT-Modus.
pinMode(ledPin, OUTPUT);
In loop() deklarieren wir currentMillis, um die aktuelle Zeit zu speichern.
unsigned long currentMillis = millis();
Wenn das Intervall zwischen der aktuellen Betriebszeit und der letzten Aktualisierungszeit größer als 1000ms ist, werden bestimmte Funktionen ausgelöst. In der Zwischenzeit wird previousMillis auf die aktuelle Zeit für die nächste Auslösung aktualisiert, die 1 Sekunde später erfolgen soll.
if (currentMillis - previousMillis >= Intervall) {
previousMillis = currentMillis;// speichere das letzte Mal, als die LED blinkte
//..
}
Hier werden bestimmte Funktionen in Intervallen ausgeführt, um den Zustand der LED zu ändern.
if (ledState == LOW)
{ledState = HIGH;}
else
{ledState = LOW;}
digitalWrite(ledPin, ledState);
Phänomen Bild
