Blinka flera lysdioder i olika takt, 1 funktion, nr dröjsmål (1 / 2 steg)
Steg 1: Från BlinkWithoutDelay till en enda funktion
Här är ett kort exempel på standard skissen som använder millis() i stället för Delay().
#define blueLed 3
osignerade långa previousMillis = 0; lagrar förra gången lampan blinkade
långa intervall = 100; intervall som blinka (millisekunder)
void setup() {
Ange den digitala pin:
pinMode (blueLed, produktionen);
}
void loop() {
om (millis() - previousMillis > = intervall) {
spara den senaste gången du blinkade lysdioden
previousMillis = millis();
digitalWrite (blueLed,! digitalRead(blueLed)); ändra ledde tillstånd
}
}
Och detta är hur vi kan komprimera det i en funktion, med vissa begränsningar ännu.
#define blueLed 3
void setup() {
pinMode (blueLed, produktionen); PIN3 utgång
}
void loop() {
BlinkBlue(200); led blinkar varje 200ms
}
void BlinkBlue (int intervall) {
statiska lång prevMill = 0; prevMill lagrar förra gången lampan blinkade
om (((long)millis()-prevMill) > = intervall) {
prevMill = millis(); butiker med millis() aktuella värde
digitalWrite (blueLed,! digitalRead(blueLed));
}
Med denna funktion vi behöver inte deklarera alla variabler utom ledde PIN-koden och de kan ha olika intervall men vi kan inte använda det för mer än en ledde. Varje led måste har sin egen funktion, ganska irriterande:
#define blueLed 3
#define greenLed 2
void setup() {
pinMode (blueLed, produktionen); PIN3 utgång
pinMode (greenLed, produktionen); PIN2-utdata
}
void loop() {
BlinkGreen(100);
BlinkBlue(200);
}
void BlinkBlue (int intervall) {
statiska lång prevMill = 0;
om (((long)millis()-prevMill) > = intervall) {
prevMill = millis();
digitalWrite (blueLed,! digitalRead(blueLed));
}
}
void BlinkGreen (int intervall) {
statiska lång prevMill = 0;
om ((millis()-prevMill) > = intervall) {
prevMill = millis();
digitalWrite (greenLed,! digitalRead(greenLed));
}
}
I nästa steg ska vi försöka skriva en funktion som kan användas med flera led.