Ciao a tutti,
per un progetto che ho in mente, sto tentando di modificare 4 variabili mediante la pressione di un pulsante.
La mia idea per ridurre al minimo il numero di pulsanti necessari è quella di usarne 4 (P1, P2, P3 e P4).
Attraverso la loro pressione posso aumentare di 10 il valore della variabile.
Mentre per diminuirli pensavo di usarne solo 1 (P5)così da ottenere attraverso un AND con uno dei 4 pulsanti la sottrazione della variabile collegata.
Queste sono le combinazioni dei tasti:
P1(HIGH) + P5(LOW) = variabile1 + 10
P1(HIGH) + P5(HIGH) = variabile1 - 10
P2(HIGH) + P5(LOW) = variabile2 + 10
P2(HIGH) + P5(HIGH) = variabile2 - 10
P3(HIGH) + P5(LOW) = variabile3 + 10
P3(HIGH) + P5(HIGH) = variabile3 - 10
P4(HIGH) + P5(LOW) = variabile4 + 10
P4(HIGH) + P5(HIGH) = variabile4 - 10
Ho simulato il collegamento su Tinkercad più l'esecuzione sul monitor seriale ma le variabili non cambiano e rimangono sempre 1000.
Di seguito lo sketch, vedeve dov'è l'errore?
int variabile1 = 1000;
int variabile2 = 1000;
int variabile3 = 1000;
int variabile4 = 1000;
const int P1 = 2; //Pulsante per aumentare di 10 la variabile1
const int P2 = 3; //Pulsante per aumentare di 10 la variabile2
const int P3 = 4; //Pulsante per aumentare di 10 la variabile3
const int P4 = 5; //Pulsante per aumentare di 10 la variabile4
const int P5 = 6; //Pulsante per diminuire di 10 la variabile
int button_State_1 = 0; //Controllo stato P1
int button_State_2 = 0; //Controllo stato P2
int button_State_3 = 0; //Controllo stato P3
int button_State_4 = 0; //Controllo stato P4
int button_State_5 = 0; //Controllo stato P5
void setup (){
pinMode(P1, INPUT);
pinMode(P2, INPUT);
pinMode(P3, INPUT);
pinMode(P4, INPUT);
pinMode(P5, INPUT);
Serial.begin(9600);
}
void loop (){
if (button_State_5 == 0 && digitalRead(P5)== LOW)
{
if (button_State_1 == 0 && digitalRead(P1)== HIGH)
{
button_State_1 = 1;
variabile1 = variabile1+ 10;
}
if (button_State_1 == 1 && digitalRead(P1)== LOW)
{
button_State_1 = 0;
}
if (button_State_2 == 0 && digitalRead(P2)== HIGH)
{
button_State_2 = 1;
variabile2 = variabile2 + 10;
}
if (button_State_2 == 1 && digitalRead(P2)== LOW)
{
button_State_2 = 0;
}
if (button_State_3 == 0 && digitalRead(P3)== HIGH)
{
button_State_3 = 1;
variabile3 = variabile3 + 10;
}
if (button_State_3 == 1 && digitalRead(P3)== LOW)
{
button_State_3 = 0;
}
if (button_State_4 == 0 && digitalRead(P4)== HIGH)
{
button_State_4 = 1;
variabile4 = variabile4 + 10;
}
if (button_State_4 == 1 && digitalRead(P4)== LOW)
{
button_State_4 = 0;
}
}
if (button_State_5 == 0 && digitalRead(P5)== HIGH)
{
button_State_5 = 1;
}
if (button_State_5 == 1 && digitalRead(P5)== HIGH)
{
if (button_State_1 == 0 && digitalRead(P1)== HIGH)
{
button_State_1 = 1;
variabile1 = variabile1 - 10;
}
if (button_State_1 == 1 && digitalRead(P1)== LOW)
{
button_State_1 = 0;
}
if (button_State_2 == 0 && digitalRead(P2)== HIGH)
{
button_State_2 = 1;
variabile2 = variabile2 - 10;
}
if (button_State_2 == 1 && digitalRead(P2)== LOW)
{
button_State_2 = 0;
}
if (button_State_3 == 0 && digitalRead(P3)== HIGH)
{
button_State_3 = 1;
variabile3 = variabile3 - 10;
}
if (button_State_3 == 1 && digitalRead(P3)== LOW)
{
button_State_3 = 0;
}
if (button_State_4 == 0 && digitalRead(P4)== HIGH)
{
button_State_4 = 1;
variabile4 = variabile4 - 10;
}
if (button_State_4 == 1 && digitalRead(P4)== LOW)
{
button_State_4 = 0;
}
}
if (button_State_5 == 1 && digitalRead(P5)== LOW)
{
button_State_5 = 0;
}
Serial.println("INIZIO");
Serial.println(variabile1);
Serial.println(variabile2);
Serial.println(variabile3);
Serial.println(variabile4);
}
Se avete anche consigli per come migliorare lo sketch ditelo pure
Grazie in anticipo.