Recensisci!
Diventa un recensore per ricevere prodotti gratuiti o scontati!
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Amazon
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» Meglio Android o iOS? Video spiegazione
Da Admin Ven Nov 17, 2017 9:52 pm

» Primo gameplay Platinum Edition - Farming Simulator 2017
Da Admin Ven Nov 17, 2017 9:47 pm

» Errore sketch braccio robotico
Da papat Mer Nov 15, 2017 3:39 pm

» Miglior smartphone sotto i €150 - 2017
Da Admin Sab Nov 11, 2017 10:50 am

» Miglior smartphone sotto i €100 - 2017
Da Admin Ven Nov 10, 2017 10:10 pm

» Recensione protettore RFID
Da Entop Dom Ott 29, 2017 10:01 pm

» Presentati al forum
Da Entop Dom Ott 29, 2017 9:40 pm

» Formato delle recensioni Amazon consigliato
Da Admin Dom Ott 29, 2017 4:12 pm

» Come localizzare in diretta i propri contatti di Whatsapp
Da Admin Sab Ott 28, 2017 9:35 pm

I postatori più attivi del mese
Admin
 
papat
 

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

Vedi il profilo dell'utente

Tornare in alto Andare in basso

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

Messaggio Da Admin 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
Admin
♔ Amministratore

Messaggi Messaggi : 4224
Crediti Crediti : 11792
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Vedi 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

Vedi il profilo dell'utente

Tornare in alto Andare in basso

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

Messaggio Da Admin 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
Admin
♔ Amministratore

Messaggi Messaggi : 4224
Crediti Crediti : 11792
Reputazione Reputazione : 186
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Vedi 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