3. Egen delay
Video/inbäddat innehåll: Kodexempel för 3. Egen delay.
// Kod 3 Egen delay #include <Arduino.h> void KlickDelay(unsigned long time); // Kan tas bort i Arduino IDE #define KNAPP_PINNE 2 // Vald pinne 2 för knapp. #define PIEZO_PINNE 11 // Vald pinne 11 med PWM. unsigned long _TimeToNextTick; // Tidpunkt för nästa klick. void setup() { pinMode(KNAPP_PINNE, INPUT_PULLUP); pinMode(PIEZO_PINNE, OUTPUT); _TimeToNextTick = millis() + 999; } void loop() { KlickDelay(1); bool statusKnapp = digitalRead(KNAPP_PINNE); if (statusKnapp == LOW) { for (int i = 0; i < 50; i++) { digitalWrite(PIEZO_PINNE, HIGH); delay(1); digitalWrite(PIEZO_PINNE, LOW); delay(10); } } } void KlickDelay(unsigned long time) { for (size_t i = 0; i < time; i++) { if (millis() > _TimeToNextTick) { digitalWrite(PIEZO_PINNE, HIGH); delay(1); digitalWrite(PIEZO_PINNE, LOW); _TimeToNextTick = millis() + 999; } delay(1); } }
Det finns flera lösningar istället för långa pauser med funktionen delay(1000), en lösning är att göra en egen delay.
Den nya funktionen kallar vi för KlickDelay(1000) där vi kan skicka med antal millisekunder som den ska pausa, i detta fall 1000.
Det värde som skickas med i en funktion kallas för parameter. En funktion kan returnera ett värde, men i denna funktion behövs inte detta.
Void betyder att den inte ska returnera något.
Den parameter som skickas till KlickDelay(1000) får namnet time i funktionen.
Om funktionen startas med värdet 1000 som parameter kommer funktionen göra en delay(1) tusen gånger och varje gång kollas om tiden kommit ikapp och om det behövs ett nytt klickljud.
millis() är en funktion som returnerar antal millisekunder som Uno-kortet varit på. Därför måste detta värde sparas i en variabel av typen unsigned long.
Nu ska problemet vara löst. Även alla snabba klick på en av knapparna funkar.
Inköpslista.
Artikel: 2805 Trafikljus kit, med kod som passar nybörjare.
Direkt länk: https://pchbutik.se/mcu/1794-trafikljus-kit-med-kod-som-passar-nyborjare.html
Denna sida är konverterad med hjälp av AI.
En sida för dig som bygger elektronik själv, experimenterar och laborerar.
Skapad av Per-Anders Hult för PchButik.se.


