Arduino: programació dirigida per events

De wikijoan
Salta a la navegació Salta a la cerca

La manera més senzilla de fer-ho és com en el segon enllaç. Ara bé, aquesta és la manera senzilla de fer-ho: fer que el LED s'encengui i s'apagui cada segon, però no bloquejar tot el codi amb un delay.


// constants won't change. Used here to
// set pin numbers:
const int ledPin =  13;      // the number of the LED pin

// Variables will change:
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(ledPin, OUTPUT);      
}

void loop()
{
  // here is where you'd put code that needs to be running all the time.

  // check to see if it's time to blink the LED; that is, if the
  // difference between the current time and last time you blinked
  // the LED is bigger than the interval at which you want to
  // blink the LED.
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;  

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;

    // set the LED with the ledState of the variable:
    digitalWrite(ledPin, ledState);
  }
}

Una cosa més interessant és mirar altres exemples i llebreries que realment fan programació orientada als events, o programació orientada al pin (detectar l'event canvi d'estat en el pin).


creat per Joan Quintana Compte, desembre 2013