Hashtag più usati
1 | #include |
2 | #drone |
3 | #dlcitalia |
4 | #ets2 |
5 | #eurotrucksimulator2 |
6 | #arduino |
7 | #youtube |
8 | #aukey |
9 | #xiaomi |
Ultimi argomenti attivi
» Comunicazione termine servizio Arduino BT ControlDa Admin Mar Mag 10, 2022 12:55 pm
» Robot aspirapolvere per Alexa: Dreame D9
Da Admin Mar Feb 09, 2021 9:42 am
» Come costruire un robot smart con Arduino
Da Admin Mar Nov 17, 2020 12:15 pm
» TOPPS Trading Cards Match Attax Champsion League/Europa League 2020/21
Da Admin Mar Nov 10, 2020 3:21 pm
» Guida per utilizzare Arduino BT Control v1.2
Da Admin Gio Lug 09, 2020 12:01 pm
» Recensione Umidigi A3 Pro - Smartphone sotto i 100€
Da Admin Gio Apr 04, 2019 12:22 pm
» [Arduino] aiuto programma
Da Glak Mar Mar 12, 2019 9:30 am
» ERRORE NELLA COMPILAZIONE NEXTION
Da papat Mar Feb 26, 2019 7:11 am
» Comandare la Smart TV con Alexa senza broadlink (gratis)
Da Admin Mar Feb 19, 2019 4:31 pm
I postatori più attivi del mese
Nessun utente |
Semaforo con millis aut./man.
2 partecipanti
Pagina 1 di 1
Semaforo con millis aut./man.
Ciao a tutti,
dopo aver capito più o meno la funzione millis ho provato realizzare uno sketch con questa funzione. Si tratta di gestire un comune semaforo stradale. Avrei due domande da sottoporti: per primo vorrei sapere se il codice è stato scritto nella maniera corretta, per secondo vorrei inserire un pulsante con il quale premendolo una prima volta attivo il lampeggio del semaforo,premendolo una seconda volta resetto il lampeggio e così via. Ho provato ad inserirlo prima e dopo la funzione millis ma non funziona,come e dove lo devo inserire? Se è possibile non scrivermi il codice, ma dimmi solo la logica. Ti ringrazio in anticipo
Guido
dopo aver capito più o meno la funzione millis ho provato realizzare uno sketch con questa funzione. Si tratta di gestire un comune semaforo stradale. Avrei due domande da sottoporti: per primo vorrei sapere se il codice è stato scritto nella maniera corretta, per secondo vorrei inserire un pulsante con il quale premendolo una prima volta attivo il lampeggio del semaforo,premendolo una seconda volta resetto il lampeggio e così via. Ho provato ad inserirlo prima e dopo la funzione millis ma non funziona,come e dove lo devo inserire? Se è possibile non scrivermi il codice, ma dimmi solo la logica. Ti ringrazio in anticipo
Guido
- Codice:
int semaforo_rosso = 2; // led rosso collegato al pin digitale 2
int semaforo_verde = 3; // led verde collegato al pin digitale 3
int semaforo_giallo = 4; // led giallo collegato al pin digitale 4
int puls = 5;
int val = 0;
int stato = 0;
int interval = 5000; // intervallo di tempo per lampeggio semaforo
int contatore = 0; // conta la sequenza del semaforo
long previousMillis = 0; // memorizza l'ultima volta l'intervallo è stato aggiornato
void setup() {
pinMode(semaforo_rosso,OUTPUT); // imposta pin 2 come outpu
pinMode(semaforo_verde,OUTPUT); // imposta pin 3 come outpu
pinMode(semaforo_giallo,OUTPUT); // imposta pin 4 come outpu
pinMode(puls,INPUT);
}
void loop() {
val=digitalRead(puls);
if(val==1){
stato = 1 - stato;
delay(30);
}
if (millis() - previousMillis > interval) {
previousMillis = millis ();
contatore++;
}
switch ( contatore ){
case 1 :
digitalWrite(semaforo_rosso,LOW);
digitalWrite(semaforo_verde,HIGH);
break;
case 2 :
digitalWrite(semaforo_giallo,HIGH);
break;
}
if (contatore > 2 ){
digitalWrite(semaforo_rosso,HIGH);
digitalWrite(semaforo_verde,LOW);
digitalWrite(semaforo_giallo,LOW);
contatore=0;
}
}
Guido Laferrari- Livello due
- Messaggi : 34
Crediti : 54
Reputazione : 2
Data d'iscrizione : 30.04.16
Re: Semaforo con millis aut./man.
Ciao Guido, prima di tutto complimenti... Hai fatto passi da gigante dalla prima volta!
Il codice è strutturato molto bene ed è leggibile . Per quanto riguarda la tua seconda richiesta, se ho capito bene vuoi che con un pulsante se clicchi si disattiva e lampeggia e se riclicchi riparte a fare il suo mestiere.
Una cosa del genere l'ho fatta anch'io ma non con il millis ma bensì con il delay (il mio è poco ottimale mentre con il millis è meglio, quindi molto bravo per la scelta!! ). In pratica dovrai aggiungere nel codice il tuo pulsante e due variabili: Una che legge se il pulsante è premuto (quindi leggera 0 o 1) e una che ricorda lo stato del pulsante (nel primo stato i semafori lampeggiano mentre nel secondo i semafori funzionano correttamente). Per fare ciò dovrai prima di tutto leggere il pulsante e con un if cambiare la variabile stato. Continuando con il codice, dovrai fare due if nella quale nel primo if i semafori lampeggiando mentre nel secondo if il semaforo fa il suo lavoro. A grandi linee, in questo modo dovresti riuscire nel tuo progetto .
Fammi sapere
Il codice è strutturato molto bene ed è leggibile . Per quanto riguarda la tua seconda richiesta, se ho capito bene vuoi che con un pulsante se clicchi si disattiva e lampeggia e se riclicchi riparte a fare il suo mestiere.
Una cosa del genere l'ho fatta anch'io ma non con il millis ma bensì con il delay (il mio è poco ottimale mentre con il millis è meglio, quindi molto bravo per la scelta!! ). In pratica dovrai aggiungere nel codice il tuo pulsante e due variabili: Una che legge se il pulsante è premuto (quindi leggera 0 o 1) e una che ricorda lo stato del pulsante (nel primo stato i semafori lampeggiano mentre nel secondo i semafori funzionano correttamente). Per fare ciò dovrai prima di tutto leggere il pulsante e con un if cambiare la variabile stato. Continuando con il codice, dovrai fare due if nella quale nel primo if i semafori lampeggiando mentre nel secondo if il semaforo fa il suo lavoro. A grandi linee, in questo modo dovresti riuscire nel tuo progetto .
Fammi sapere
Semaforo con millis aut./man.
Ciao ,
sono riuscito a terminare il mio primo sketch da solo,ho portato alcune modifiche e grazie alle quali sono riuscito a realizzarlo come mi ero prefissato. In sostanza si tratta di questo: con il selettore aut./man. svolgo due funzioni ,quando è posizionato in manuale lampeggia solo il semaforo giallo,quando si passa in automatico parte la sequenza di un comune semaforo stradale . Ti sottopongo il codice così mi potrai dare un tuo giudizio. Ti ringrazio in anticipo.
Guido
sono riuscito a terminare il mio primo sketch da solo,ho portato alcune modifiche e grazie alle quali sono riuscito a realizzarlo come mi ero prefissato. In sostanza si tratta di questo: con il selettore aut./man. svolgo due funzioni ,quando è posizionato in manuale lampeggia solo il semaforo giallo,quando si passa in automatico parte la sequenza di un comune semaforo stradale . Ti sottopongo il codice così mi potrai dare un tuo giudizio. Ti ringrazio in anticipo.
Guido
- Codice:
int semaforo_rosso = 2; // led rosso collegato al pin digitale 2
int semaforo_verde = 3; // led verde collegato al pin digitale 3
int semaforo_giallo = 4; // led giallo collegato al pin digitale 4
int selett = 5; // selettore aut./manu.collegato al pin digitale 5
int val = 0; // variabile dove memorizzare aut./man.
int contatore = 0; // conta la sequenza del semaforo
int giallo_stato = 0; // variabile per lampeggio in manuale
const long interval1 = 500; // intervallo di tempo per lampeggio semaforo giallo in manuale
unsigned long previousMillis1 = 0; // memorizza l'ultima volta che l'intervallo è stato aggiornato
const long interval = 5000; // intervallo di tempo per lampeggio semaforo in automatico
unsigned long previousMillis = 0; // memorizza l'ultima volta che l'intervallo è stato aggiornato
unsigned long time = 0; // variabile dove copio valore millis
// usare " unsigned long " per le variabili che tengono il tempo
void setup() {
pinMode(semaforo_rosso,OUTPUT); // imposta pin 2 come outpu
pinMode(semaforo_verde,OUTPUT); // imposta pin 3 come outpu
pinMode(semaforo_giallo,OUTPUT); // imposta pin 4 come outpu
pinMode(selett,INPUT); // imposta pin 5 come input
time=millis(); // copio valore millis
}
void loop() {
time=millis(); // copio valore millis
val=digitalRead(selett);
if (val==0){ // val=0 semaforo in manuale
digitalWrite(semaforo_rosso,LOW);
digitalWrite(semaforo_verde,LOW);
contatore = 0;
previousMillis = time; // memorizzo il valore time nella previousMillis
if (time-previousMillis1 >interval1){
previousMillis1 = time ;
if (giallo_stato == LOW){
giallo_stato = HIGH;
}
else {
giallo_stato = LOW;
}
digitalWrite(semaforo_giallo,giallo_stato);
}
}
if (val==1){ // val=1 semaforo in automatico
previousMillis1 = time ; // memorizzo il valore time nella previousMillis1
if (contatore==0){
digitalWrite (semaforo_rosso,HIGH);
digitalWrite(semaforo_giallo,LOW);
}
if (time - previousMillis > interval) {
previousMillis = time; // dopo che si è verificato vero l'if memorizzo il valore time nella previousMillis
contatore++; // incremento di 1 il valore del contatore
}
switch ( contatore ){
case 1 :
digitalWrite(semaforo_rosso,LOW);
digitalWrite(semaforo_verde,HIGH);
break;
case 2 :
digitalWrite(semaforo_giallo,HIGH);
break;
case 3 :
digitalWrite(semaforo_verde,LOW);
digitalWrite(semaforo_giallo,LOW);
contatore=0;
break;
}
}
}
Ultima modifica di Admin il Mer Giu 29, 2016 6:51 pm - modificato 1 volta. (Motivazione : sistemato layout messaggio)
Guido Laferrari- Livello due
- Messaggi : 34
Crediti : 54
Reputazione : 2
Data d'iscrizione : 30.04.16
Re: Semaforo con millis aut./man.
Ciao, posso dirti che hai fatto passi da gigante?
La struttura del codice è leggibile e addirittura hai commentato tutto! Direi che è il top del top. Che ne pensi di fare un piccolo video e di caricarlo su Youtube? Così fai anche una dimostrazione .
Fammi sapere cosa ne pensi
La struttura del codice è leggibile e addirittura hai commentato tutto! Direi che è il top del top. Che ne pensi di fare un piccolo video e di caricarlo su Youtube? Così fai anche una dimostrazione .
Fammi sapere cosa ne pensi
Re: Semaforo con millis aut./man.
Ciao
Ti ringrazio per le belle parole, per quanto riguarda il video e la dimostrazione non me la sento,ti ringrazio ancora per il tuo prezioso aiuto a risentirci al prossimo progetto.
Guido
Ti ringrazio per le belle parole, per quanto riguarda il video e la dimostrazione non me la sento,ti ringrazio ancora per il tuo prezioso aiuto a risentirci al prossimo progetto.
Guido
Guido Laferrari- Livello due
- Messaggi : 34
Crediti : 54
Reputazione : 2
Data d'iscrizione : 30.04.16
Re: Semaforo con millis aut./man.
Prego Guido, non preoccuparti. Al massimo puoi fare anche solo qualche foto e caricarle. Se non te la senti, nessun problema .
Buona giornata
Buona giornata
Argomenti simili
» Conoscere funzione "millis"
» Sketch per realizzare un semplice semaforo con Arduino
» Come creare un semplice semaforo (circuito e codice) con Arduino
» Sfreccia davanti alla polizia con il semaforo rosso e gli suona pure!
» Sketch per realizzare un semplice semaforo con Arduino
» Come creare un semplice semaforo (circuito e codice) con Arduino
» Sfreccia davanti alla polizia con il semaforo rosso e gli suona pure!
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.