Esercizi

Esercizio 1:

Nel circuito di figura il led blu lampeggia con un periodo di 2 secondi (2 secondi acceso e 2 secondi spento), il led verde invece si accende solo quando il pulsante è premuto.

Suggerimento: si parta considerando i seguenti sketch che rispettivamente fanno lampeggaire un led con periodo di 1 secondo in non-blocking mode e fa accendere un led in corrispondenza alla pressione di un tasto

unsigned long timenow;
unsigned long lastUpdate = 0;
unsigned long interval = 1000;
boolean statoLed = LOW;

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
timenow = millis();

if (timenow >= lastUpdate + interval){ // controlla se è passato 1 secondo
if (statoLed == LOW){
digitalWrite(LED_BUILTIN, HIGH);
statoLed = HIGH;
}
else{
digitalWrite(LED_BUILTIN, LOW);
statoLed = LOW;
}
lastUpdate = timenow;
}

/* qui potrebbero essere messe altre righe di codice che verrebbero eseguite ripetutamente senza alcuna attesa */

}
#define ledpin 12
#define buttonpin 7

bool buttonState = LOW;

void setup()
{
  pinMode(buttonpin, INPUT);
  pinMode(ledpin, OUTPUT);
}

void loop()
{
  buttonState = digitalRead(buttonpin);  
  // se il pulsante è premuto il valore del pin è HIGH
  if (buttonState == HIGH) {
    digitalWrite(ledpin, HIGH);     // accendi il led
  } else {
    digitalWrite(ledpin, LOW);      // spegni il led
  }
  delay(100); // Delay a little bit to improve simulation performance
} 

Ultime modifiche: sabato, 28 marzo 2020, 20:41