Tinkercad interrupt pir unisce un sensore pir ad un arduino per mostrarti come funziona un interrupt e come funziona sull’arduino uno.
La serie di articoli a cui questo tutoril si unisce è quella dedicata alle semplici lezioni per comprendere Arduino e basata sul simulatore tinkercad.
Trovi le precedenti lezioni catalogate qui.
Tinkercad interrupt pir
In questo tutorial dal titolo “tinkercad interrupt pir” ho deciso di unire un sensore pir, classico, ad un esperimento che probabilmente hai già letto: Tutorial: Arduino interrupt
L’obiettivo di entrambi i progetti è dimostrati, in modo pratico, come funziona l’interrupt in arduino ed in generale in elettronica.
Grazie al tutoril online ed al simulatore tinkercad potrai verificare il circuito e modificarlo per comprendere a pieno i concetti esposti.
Trovi questo mio esempio condiviso qui e puoi copiarlo nella tua area di lavoro e modificarlo come meglio preferisci.
Video tutorial: Tinkercad interrupt pir
Ecco il video tutorial dedicato alla simulazione con tinkercad dell’esperimento:
anche in questo, come nei precedenti, trovi sia la parte dedicata alla realizzazione dello schema elettronico sia quella della scrittura del codice.
Eseguendo la simulazione vedrai i due led rosso e verde lampeggiare in modo indipendente, controllati dal ciclo di loop() ed il led giallo che si accende solo se il sensore pir rileva qualche ostacolo.
Dopo 10 cicli di loop, dall’accensione del led giallo, quest’ultimo si spegnerà per effetto della variabile interruptCount che si incremneta di 1 ad ogni ciclo di loop.
Sketch e descrizione
Lo sketch che ho utilizzato, e che hai visto nel video, è il seguente:
#define ledR 8 #define ledG 7 #define ledY 12 int interrCount = 0; void setup() { pinMode( ledR,OUTPUT ); pinMode( ledG,OUTPUT ); pinMode( ledY,OUTPUT ); digitalWrite( ledR,0 ); digitalWrite( ledG,0 ); digitalWrite( ledY,0 ); attachInterrupt(0, interruptChange, RISING ); } void loop() { interrCount++; digitalWrite( ledR,1 ); digitalWrite( ledG,0 ); delay(300); digitalWrite( ledR,0 ); digitalWrite( ledG,1 ); delay(300); if ( interrCount == 10 ) { interrCount = 0; digitalWrite( ledY,0 ); } } void interruptChange() { digitalWrite( ledY,1 ); }
che è del tutto identico allo sketch spiegato nel Tutorial: Arduino interrupt e che eviterò di rispiegare in quanto pupo andare a leggere direttamente dal link indicato tale spiegazione.
Ho deciso di non riscrivere in modo differente lo sketch in quanto trovo interssante la continuità data da un articolo scritto qualche anno fa e oggi simulato online.