Buonasera a tutti, come ho già scritto quando mi sono presentato, mi sono avvicinato al mondo di Arduino in quanto mia figlia ha una disabilità che non le permette di premere dei pulsanti e ha la mobilità solo del dito indice e grazie ai sensori capacitivi sono riuscito a modificare diversi giochi per farla divertire.
Adesso ho un altro progetto un telecomando per una macchinina però sto avendo problemi per lo sketch.
Praticamente vorrei fare 4 led che in sequenza si accendono e attribuire a ogni led un relè che chiuderà il contatto del telecomando.
Per esempio si accende il primo led, non preme il pulsante non succede niente.
Si accende il secondo led, preme il pulsante la macchinina va a destra e affinchè tiene premuto la macchinina cammina a destra, nel momento in cui lascia la macchina si ferma e i led ricominciano la sequenza.
Ho provato questo sketch ma il programma non si ferma una volta che preme il pulsante.
Come faccio a bloccare il programma su quello stato? fino al rilascio del pulsante?
#define led1 2
#define led2 3
#define led3 4
#define led4 5
#define button 6
#define rele1 7
#define rele2 8
#define rele3 9
#define rele4 10
#define pausa 500 //imposta velocità
unsigned long istantePausa = 0;
int pos = 0;
int val = 0;
void setup() {
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
pinMode (led4, OUTPUT);
pinMode (button, OUTPUT);
pinMode (rele1, OUTPUT);
pinMode (rele2, OUTPUT);
pinMode (rele3, OUTPUT);
pinMode (rele4, OUTPUT);
}
void loop()
{
switch (pos) {
case 0:
digitalWrite (led1, HIGH);
digitalWrite (led4, LOW);
val=digitalRead(button);
if (val == HIGH) {
digitalWrite (rele1, HIGH);
}
else {
digitalWrite (rele1, LOW);
}
break;
case 1:
digitalWrite (led2, HIGH);
digitalWrite (led1, LOW);
val=digitalRead(button);
if (val == HIGH) {
pos==1;
digitalWrite (rele2, HIGH);
}
else {
digitalWrite (rele2, LOW);
pos==2;
}
break;
case 2:
digitalWrite (led3, HIGH);
digitalWrite (led2, LOW);
val=digitalRead(button);
if (val == HIGH) {
digitalWrite (rele3, HIGH);
}
else {
digitalWrite (rele3, LOW);
}
break;
case 3:
digitalWrite (led4, HIGH);
digitalWrite (led3, LOW);
val=digitalRead(button);
if (val == HIGH) {
digitalWrite (rele4, HIGH);
}
else {
digitalWrite (rele4, LOW);
}
break;
}
if ((millis() - istantePausa) >= pausa) {
istantePausa = millis();
pos++;
if (pos == 4) {
pos = 0;
}
}
}
grazie a chi mi aiuterà