Pagina 1 di 2

cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 18:12
da lga83
salve a tutti, sto realizzando una centralina che mi genera giochi di luce con dei led, ho fatto il programma per il gioco e anche un potenziometro che mi vara la velocità dei del singolo gioco, ora con il pulsante quando premuto voglio far cambiare gioco di luce il problema e che per cambiare lo devo tenere premuto a lungo e a me non piace, posto lo sketch mi potete indicare dove sbaglio, grazie anticipatamente..

Codice: Seleziona tutto
int puls=12;
int val=0;
int contatore=0;
int i = 0;


void setup () {
DDRD=B11111111;
pinMode(puls,INPUT);
}

void loop () {
val=digitalRead(puls);
if (val==1){
contatore=contatore +1;

}


for (i = 0; i < 5; i++)
if (contatore==1) {
PORTD = B10000001;
delay(analogRead(0));
PORTD = B11000011;
delay(analogRead(0));
PORTD = B10100101;
delay(analogRead(0));
PORTD = B10011001;
delay(analogRead(0));
PORTD = B10100101;
delay(analogRead(0));
PORTD = B11000011;
delay(analogRead(0));


}


for (i = 0; i < 5; i++)
if (contatore==2) {
PORTD = B11111111;
delay(analogRead(0));
PORTD = B11111111;
delay(analogRead(0));
PORTD = B11111111;
delay(analogRead(0));
PORTD = B11111111;
delay(analogRead(0));
PORTD = B11111111;
delay(analogRead(0));
PORTD = B11111111;
delay(analogRead(0));
}
if (contatore==3) {
contatore=0;


}

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 22:15
da WALTERmwp
Ciao @lga83, mi pare che gli statement del for siano privi di parentesi graffa, perché ?
E' corretta la sintassi ?
Codice: Seleziona tutto
(...)
for (i = 0; i < 5; i++)  <--- qui ?
if (contatore==1) {
(...)

Saluti

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 22:23
da lga83
Si e giusta perché funziona il gioco di luce, solo che quando vado a premere il pulsante per cambiare gioco lo devo tenere prempremuto un paio secondi, non capisco dove sbaglio..

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 22:28
da WALTERmwp
lga83 ha scritto:Si e giusta (...)
e allora qual è il senso di quei for ?
Messi in quel modo mi pare non servano a nulla.

Saluti

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 22:46
da lga83
Il for mi serve per far ripetere piu volte il gioco di luce

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 22:49
da WALTERmwp
Io non me la ricordo, mi sapresti scrivere qual è la sintassi del for ?
Grazie.

Saluti

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 22:58
da lga83
Guarda non sono uno esperto di programmazione arduino adesso nn riesco a spiegarti la sintesi, io vado per concetto guardando altri programmi simili già fatti e cercare di capire come funzionano

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 23:37
da elfo
Il motivo e' spiegato nei commenti del codice (ho "potato" il listato, lasciando solo la struttura principale).

La soluzione,a mio avviso, sarebbe preferibile che la trovassi autonomamente studiando un po' di programmazione
Codice: Seleziona tutto
void loop () {
val=digitalRead(puls); // Leggo il pulsante
if (val==1){
contatore=contatore +1;
}


for (i = 0; i < 5; i++) // il programma e' "cieco" (o sordo - se preferisci) per tutte le istruzioni che seguono
if (contatore==1) {  // compresi i ritardi - il tutto per i 5 cicli del "for"
[cut]                      // cioe' legge il pulsante solo "ogni tanto"
}

for (i = 0; i < 5; i++)
if (contatore==2)
[cut]
}

if (contatore==3) {
contatore=0;


}

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 29 gen 2018, 23:57
da lga83
Grazie, ho capito adesso vedo di studiare un po almeno vediamo se.ci riesco da solo, comunque. Grazie tanto per i consigli.. buona serata!

Re: cambio scena con 1 pulsante centralina giochi di luce

MessaggioInviato: 30 gen 2018, 0:17
da MassimoB
A parte studiare un po' che non fa male e ti darà sicuramente soddisfazioni nel vedere i tuoi sforzi trasformati in risultati, ti consiglio di prendere l'abitudine di identare il codice in modo da essere più chiaro a te e a chi leggerà il codice.