Skip to content

Instantly share code, notes, and snippets.

@einarpersson
Last active February 18, 2021 14:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save einarpersson/b77e4e00d7495b8cdf3a767e374e9d2b to your computer and use it in GitHub Desktop.
Save einarpersson/b77e4e00d7495b8cdf3a767e374e9d2b to your computer and use it in GitHub Desktop.
Example of non blocking arduino code
// Fråga: Behöver man två Arduinos för att anropa två funktioner samtidigt?
// Svar: I teorin så är det omöjligt att köra två funktioner samtidigt
// MEN i praktiken så kan du lösa det problemet genom att strukurera ditt program annorlunda.
// Det behöver bli "icke-blockerande", genom att sluta använda delay och börja använda millis.
unsigned long lastBlink;
int ledState = 0
void setup() {
pinMode(12, OUTPUT);
lastBlink = millis();
}
void loop() {
unsigned long currentTime = millis();
if (currentTime - lastBlink > 1000) {
toggleLed();
lastBlink = currentTime;
}
// Vi kan göra saker här, t.ex. kolla om en knapp är nedtryckt eller ej
// digitalRead(10)
}
void toggleLed() {
if (ledState == 0) {
ledState = 1;
digitalWrite(12, ledState);
} else {
ledState = 0;
digitalWrite(12, ledState);
}
}
// ----------------------------------------------------------------------------
// Jämför allt detta med ett blockerande standard-blink som nedan
// Programmet pausar 10 sekunder
//digitalWrite(12, HIGH);
//delay(5000);
//digitalWrite(12, LOW);
//delay(5000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment