Ciao a tutti siccome sono alle prime armi con la programmazione avrei alcune domande da porre su un piccolo progetto che devo realizzare, mi spego meglio:
devo realizzare un lampeggiatore sequenziale avanti indietro con lampade a 220Vac, la parte hardware è funzionante e realizzata tramite relè di interfaccia che nello schema che allego ovviamente simulo con dei led, il mio problema nasce quando devo regolare la velocità delle lampade, ovvero forse ho sbagliato a compilare lo sketch e qui che chiedo aiuto. In pratica faccio leggere il valore del potenziometro e lo scrivo tramite il delay nel loop, il mio problema è che non riesco ad interagire col potenziometro diciamo in real time, in questo modo devo aspettare giustamente la fine del loop
int LED1 = 0; //uscita LED 1
int LED2 = 1; //uscita LED 2
int LED3 = 2; //uscita LED 3
int LED4 = 3; //uscita LED 4
int LED5 = 4; //uscita LED 5
int LED6 = 5; //uscita LED 6
int pot = A0; //Ingresso potenziometro
int potval = 0; //memorizza il valore letto su POT
void setup()
{
pinMode(LED1,OUTPUT); //LED 1
pinMode(LED2,OUTPUT); //LED 2
pinMode(LED3,OUTPUT); //LED 3
pinMode(LED4,OUTPUT); //LED 4
pinMode(LED5,OUTPUT); //LED 5
pinMode(LED6,OUTPUT); //LED 6
}
void loop()
{
potval = analogRead(pot);
digitalWrite(LED1,HIGH);
delay(potval);
digitalWrite(LED1,LOW);
delay(potval);
digitalWrite(LED2,HIGH);
delay(potval);
digitalWrite(LED2,LOW);
delay(potval);
digitalWrite(LED3,HIGH);
delay(potval);
digitalWrite(LED3,LOW);
delay(potval);
digitalWrite(LED4,HIGH);
delay(potval);
digitalWrite(LED4,LOW);
delay(potval);
digitalWrite(LED5,HIGH);
delay(potval);
digitalWrite(LED5,LOW);
delay(potval);
digitalWrite(LED6,HIGH);
delay(potval);
digitalWrite(LED6,LOW);
delay(potval);
digitalWrite(LED5,HIGH);
delay(potval);
digitalWrite(LED5,LOW);
delay(potval);
digitalWrite(LED4,HIGH);
delay(potval);
digitalWrite(LED4,LOW);
delay(potval);
digitalWrite(LED3,HIGH);
delay(potval);
digitalWrite(LED3,LOW);
delay(potval);
digitalWrite(LED2,HIGH);
delay(potval);
digitalWrite(LED2,LOW);
delay(potval);
}
lo shetc è corretto, solo che pensato così, è logico che devi aspettare la fine del loop per variare la velocità, che logicamente pi lenta è più aspetti.
devi usare un altra tecnica, che ora non ricordo il nome che cambi lo stato solo se è passato un tott di tempo se non lo è il programma continua a girare.
da un occhio qui
Philomix:
Grazie non avevo pensato di incorporare i pin nel ciclo for ora ci studio sopra.
Grazie per l'aiuto ho compreso il ciclo for ma faccio a botte con l'IF
Allora ho abbandonato completamente quel codice buttato li per caso e ho preso spunto da quello che mi hai postato e sono giunto a questo per fare un conteggio avanti indietro con la possibilità di variare la velocità di conteggio, ora mi si presenta un'altro quesito: il tempo di lampeggio del primo e dell'utlimo pin devono essere esattamente la metà degli altri per avere una costante nel tempo, se includo nei due cicli for inclusi nel loop una condizione if ed else posso arrivare alla soluzione, ma il problema mio è che non riesco ad integrare if nel codice. Ovvero fino a quando il ciclo thispin rimane sotto a 12 il tempo T è uguale a potval a 12 va a potval/2
cyberhs:
Scusa ma non riesco a capire cosa tu voglia ottenere: spiegati meglio.
in pratica ora il conteggio è questo 1 2 3 n n n 8 9 10 10 9 8 n n n 3 2 1
mi piacerebbe capire come far eseguire un conteggio del tipo 1 2 3 n n n 8 9 10 9 8 n n n 3 2 1 in pratica mi piacerebbe che non contasse per due volte 1 e 10 essendo una sequenza avanti indietro