Tinkercad controlla i led con i tempi del bottone

Tinkercad controlla i led con i tempi del bottone è un tutorial semplice nella realizzazione pratica che introduce un livello di programmazione superiore rispetto a quelli introdotti fino ad oggi con questa serie di tutorial.

Tinkercad controlla i led con i tempi del bottone

Come hai letto nei precedenti tutorial Tinkercad sei partito con l’accensione di un led e pian piano sei arrivato a controllare più led  contemporaneamente.

In questo tutorial vedrai come usare attivamente la programmazione per realizzare l’accensione di due led in funzione del tempo di pressione del pulsante.

Il tutorial tinkercad controlla i led con i tempi del bottone accende il primo led, il rosso, se premi il pulsante per un tempo inferiore al secondo ( 1000 millisecondi ); viceversa se tieni il pulsante premuto oltre il secondo si accende il secondo led ( giallo ).

Il video Tinkercad controlla i led con i tempi del bottone

Il video Tinkercad controlla i led con i tempi del bottone, di seguito, ti mostra come realizzare il circuito, il codice ed il test simulato con tinkercad:

puoi trovare il progetto didattico condiviso con il nome “Tinkercad controlla i led con i tempi del bottone” a questo link.

Lo sketch del progetto

Lo sketch del tinkercad controlla i led con i tempi del bottone è disponibile sul progetto steso che hai raggiunto cliccando sul link sopra:

unsigned long tempoPressione;
boolean isPressed = false;
boolean wasPressed = false;

void setup()
{
  Serial.begin( 9600 );
  pinMode(2, INPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);

  digitalWrite( 3,0 );
  digitalWrite( 4,0 );
}

void loop()
{
  Serial.print( tempoPressione );   Serial.print( " - " );
  Serial.print( millis() );   Serial.print( " - " );
  Serial.println( digitalRead(2) );

  if ( digitalRead(2) == 0 ) {
    digitalWrite( 3,0 );
        digitalWrite( 4,0 );

    isPressed = true;
    wasPressed = true;
  } else {
    tempoPressione = millis();
    isPressed = false;
  }

  if ( (millis() - tempoPressione) < 1000 && !isPressed && wasPressed) {
    digitalWrite( 3,1 );
    wasPressed = false;
  }
  if ( (millis() - tempoPressione) > 1000 ) {
        digitalWrite( 4,1 );
    wasPressed = false;
  }

  delay(10);
}

iniziando dalla linea 01: definisci una variabile tempoPressione nella quale memorizzi il tempo trascorso dall’avvio dello sketch, tale variabile è di tipo unsigned long per contenere il valore di millis();

linee 02-03: definisci due variabili di tipo boolean in cui memorizzare lo stato del pulsante ( isPressed ) e se è già stato premuto in precedenza ( wasPressed );

linea 07: attiva la comunicazione con il monitor seriale del simulatore tinkercad;

linee 08-10: imposta i pin in modalità INPUT ed OUTPUT in funzione di ciò che hai collegato, OUPUT per i led ed INPUT per il pulsante;

linee 12-13: imposta a LOW, zero, il valore sui pin 3 e 4;

linea 18: scrivi sul monitor seriale il valore della variabile tempoPressione seguito dalla sequenza ” – “;

linee 19-20: scrivi sul monitor seriale il valore del comando millis() seguito da ” – ” e successivamente il valore letto sul pin 2 di Arduino;

linea 22: se il valore letto sul pin a cui è connesso il bottone è 0, bottone premuto, esegui le linee succesive:

linee 23-24: imposta a LOW, zero, il valore dei pin 3 e 4, spegnendo i led;

linee 26-27: imposta a true le due variabili booleane definite alle linee 2 e 3;

linea 28: l’else ti serve per definire tutte le istruzioni da eseguire se non è verificata la condizione di if;

linee 29-30: imposta il valore di tempoPressione come millis() e isPressed a false;

linea 33: controlla che il tempo trascorso dalla pressione del pulsante ( tempoPressione – millis() ) sia inferiore a 1000 millisecondi ( 1 secondo ) ed allo stesso tempo il pulsante sia stato rilasciato ( !isPressed ) ed il valore di wasPressed sia true;

linee 34-35: porta a HIGH il pin 3 ( led rosso ) e imposta il valore di wasPressed a false;

linea 37: controlla che il tempo per il quale il pulsante sia stato premuto è superiore a 1000 millisecondi;

linee 38-39: porta a HIGH il pin 4 ( led giallo ) e imposta il valore di wasPressed a false;

linea 42: attendi 10 millisecondi prima di ripetere il ciclo di loop();

Il codice dello sketch tinkercad controlla i led con i tempi del bottone è semplice e puoi osservare il suo funzionamento nel video seguente:

Al prossimo tutorial.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/tinkercad-controlla-i-led-con-i-tempi-del-bottone.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.