pugliasos newlogoDEF

Orario della segreteria: tutti i martedì, dalle ore 17 alle 19, su appuntamento.

Un LED commuta il suo stato se si hanno due suoni ciascuno seguito da una pausa; trovare il battito ottimale per tentativi.

   Durante l’esecuzione dell’esercitazione precedente ti sarai reso conto che anche un rumore qualsiasi può creare una commutazione dello stato del LED non desiderata. Proviamo con un doppio battito di mani in un breve intervallo di tempo.

Nell’esempio che segue il LED commuta il suo stato se si hanno due suoni ciascuno seguito da una pausa; trovare il battito ottimale per tentativi.

#define tempo 100
#define attesa 100

int k;
long inizio;

void setup() {
  pinMode(8,INPUT);
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  k=0;
  if(digitalRead(8)){
    Serial.println("PRIMO battito");
    delay(attesa);
    inizio=millis();
    k=1;
    while(millis()-inizio<200){ // se vi è un suono prima di 200 millisecondi azzera il contatore ed esci
      if(digitalRead(8)){
        Serial.println("Prima pausa non coerente");
        k=0;
        break;
      }
    }
    if(k==1){ // se vi è stato il primo battito seguito dalla pausa, attendi il secondo battito
      delay(attesa);
      inizio=millis();
      while(millis()-inizio<200){
        if(digitalRead(8)){
          Serial.println("SECONDO battito");
          k=2;
          break;
        }
      }
      if(k==2){ // controlla che ci sia anche la seconda pausa, altrimenti azzera il contatore
        delay(attesa);
        inizio=millis();
        while(millis()-inizio<200){
          if(digitalRead(8)){
            Serial.println("Manca SECONDA PAUSA");
            k=0;
            break;
          }
        }
        if(k==2){
          Serial.println();
          Serial.println();
          Serial.println();
          Serial.println("Commutazione effettuata\n\n\n");
          commuta();
        }
      }
    }
  }
}

 

void commuta(){
  digitalWrite(13,!digitalRead(13));
  delay(200);
}

 

 Sitografia

https://www.youtube.com/watch?v=Uom--PyCVGw

Save
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Read more
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline