PchButik.se

3. Egen delay

3. Egen delay koppling

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.