Seguimi su Youtubue
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Google AdSense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» DUE SKETCH INSIEME? SI PUO' FARE?
Da Alessandro2003 Ieri alle 6:51 pm

» programma arduino
Da Poderak Gio Mag 25, 2017 3:12 pm

» pilotare 5 matrix: max7219
Da Poderak Gio Mag 25, 2017 3:10 pm

» orologio con LCD.
Da fulvio Lun Mag 22, 2017 12:51 am

» rilevare/intercettare solo la chiusura di una pagina web
Da Poderak Sab Mag 20, 2017 9:36 pm

» Arduino Create
Da Poderak Dom Mag 14, 2017 6:42 pm

» Dove acquistare relè arduino
Da Ilfalco78 Gio Mag 04, 2017 7:43 am

» Comprata Scorpion King Farming Simulator 2017 - Mappa Sosnovka
Da Poderak Lun Mag 01, 2017 7:25 pm

» Live di 1 ora su Farming Simulator 2017
Da Poderak Lun Mag 01, 2017 7:23 pm

I postatori più attivi del mese
Poderak
 
brody09
 
fulvio
 
Ilfalco78
 
luigiaguilar
 
Alessandro2003
 

Terminare un lampeggio on/off al click del pulsante con Arduino

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Terminare un lampeggio on/off al click del pulsante con Arduino

Messaggio Da Guido Laferrari il Dom Giu 12, 2016 4:50 pm

Ciao a tutti,
sono ancora qui,il progetto che vorrei sottoporvi è semplice ma non riesco a venirne a capo. Si tratta di questo: all'accensione il led blu si accende,premo il pulsante una prima volta il led si spegne e un led verde inizia a lampeggiare e fino a qui tutto bene ma quando premo il pulsante una seconda volta vorrei che il lampeggio terminasse e che si accendesse il led blu,purtroppo questo non accade. Scusate per questo sketch banale ma sono all'inizio. Vi ringrazio anticipatamente.

Codice:

int semaforo_verde = 2;                    // led verde collegato al pin digitale 2
int semaforo_blu = 3;                      // led blu collegato al pin digitale 3
int puls    = 4;                           // pulsante collegato al pin digitale 4
int val        =0;                         // si userà val per conservare lo stato del pin di input 
int stato      =0;                         // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso

void setup() {
 pinMode(semaforo_verde,OUTPUT);           // imposta pin 2 come outpu
 pinMode(semaforo_blu,OUTPUT);             // imposta pin 3 come outpu
 pinMode(puls,INPUT);                      // imposta il pin 5 come input
}

void loop() {
  
 val=digitalRead(puls);                   // legge il valore dell'input e lo conserva nella variabile VAL
 if (val==1) {                            // controlla che l'input sia HIGH (pulsante premuto)
 stato = 1 - stato;                       // variazione variabile stato               
                                          
 delay(30);                               // attendere che questi rimbalzi spuri si concludano 
  }                                    
  if (stato == 1) {
  digitalWrite(semaforo_blu,LOW);         // spengo semaforo blu
  digitalWrite(semaforo_verde,HIGH);      // accendo semaforo verde
  delay(1000);                            // attesa
  digitalWrite(semaforo_verde,LOW);       // spengo semaforo verde
  delay(1000);                            // attesa
}
 else   {                             
  digitalWrite(semaforo_blu,HIGH);         // accendo semaforo blu
  digitalWrite(semaforo_verde,LOW);        // spengo semaforo verde
}
 
}
avatar
Guido Laferrari
Livello due
Livello due

Messaggi Messaggi : 34
Crediti Crediti : 54
Reputazione Reputazione : 2
Data d'iscrizione Data d'iscrizione : 30.04.16

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Terminare un lampeggio on/off al click del pulsante con Arduino

Messaggio Da Poderak il Dom Giu 12, 2016 6:58 pm

Ciao Guido,

Cliccando nuovamente il pulsante non ti cambia perché deve prima eseguire il blocco di istruzioni.

Una volta che ha finito il blocco di istruzioni di un determinato IF, successivamente fa un controllo per vedere se il pulsante sia premuto o meno. Questo accade perché con i delay blocchi praticamente l'Arduino e quindi non può fare altre operazioni come controllare se il pulsante è premuto o meno.

Per risolvere, potresti utilizzare Millis ma è piuttosto complicato comprenderlo per chi inizia con Arduino. Un consiglio che ti posso dare è quello di premere il pulsante quando sai che il blocco di istruzione sta per finire o quando appunto giunge al termine. Ciao!
avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4184
Crediti Crediti : 11706
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Re: Terminare un lampeggio on/off al click del pulsante con Arduino

Messaggio Da Guido Laferrari il Lun Giu 13, 2016 5:52 pm

Ciao, innanzitutto ti ringrazio per la correzione del titolo così è più appropriato, ho letto la tua risposta e quindi mi dici che con i delay che ho inserito , blocco Arduino e di conseguenza non posso fare altre operazioni come controllare lo stato del pulsante. Domanda : ma al termine dell’ultimo delay non si può non si può scrivere  “ un qualcosa ” che permette poi di leggere lo stato del pulsante ? Magari è una stupidata , ma è quello che mi è venuto in mente. Ti ringrazio anticipatamente.

Guido
avatar
Guido Laferrari
Livello due
Livello due

Messaggi Messaggi : 34
Crediti Crediti : 54
Reputazione Reputazione : 2
Data d'iscrizione Data d'iscrizione : 30.04.16

Vedere il profilo dell'utente

Tornare in alto Andare in basso

Re: Terminare un lampeggio on/off al click del pulsante con Arduino

Messaggio Da Poderak il Lun Giu 13, 2016 6:59 pm

Potresti provare ad aggiungere prima di ciascun delay la lettura del pulsante, anche se è una soluzione un po' "bizzarra". Ciao!
avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4184
Crediti Crediti : 11706
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum