Problema apparentemente semplice, ma mi sto perdendo in un bicchiere d'acqua:
Ho due pulsanti sulla breadboard, e una variabile globale nello sketch, in base al pulsante che premo la variabile deve incrementarsi/decrementarsi di 1..
NOTA: nello sketch ho messo che il valore della variabile non deve essere inferiore a 0, e maggiore di 3...
PROBLEMA: Guardando i valori che vengono stampati sulla seriale noto che se premo il pulsante che aumenta la variabile , lui funziona, ma non mi caga quell'altro del decremento...
Vi metto lo sketch:
const int BUTTON_FORZA = 2;
const int BUTTON_FOR = 7;
int val;
int VALUE;
int forza = 0;
int forza_su(int f) {
f=f+1;
Serial.println(f);
return f;
}
int forza_giu(int f) {
f=f-1;
Serial.println(f);
return f;
}
void setup() {
pinMode(BUTTON_FORZA, INPUT);
pinMode(BUTTON_FOR, INPUT);
Serial.begin(9600);
}
void loop() {
VALUE=digitalRead(BUTTON_FORZA);
val=digitalRead(BUTTON_FOR);
if(VALUE==HIGH && forza<'3') {
forza=forza_su(forza);
delay(500);
}
if(val==HIGH && forza>'0'){
forza=forza_giu(forza);
delay(500);
}
}
Il controllo di superamento valore consentito scrivilo in ogni funzione, poi se chiami più volte una funzione non importa in quanto il valore limite verra gestito dalla funzione chiamata che esegue anche il decremento/incremento.
Visto che "forza" è globale perchè non scrivere direttamente:
Forse ho capito dove sbaglio ; sulla bredboard ho semplicemente due pulsanti collegati all'arduino e all'alimentazione; il problema è che la massa di ogni pulsante l'ho collegata ad UNA sola resistenza da 10K , quindi è probabile che nella digitalRead() ogni tanto venga sbagliata la lettura dello stato logico dei pulsanti..
Dopo provo a mettere una resistenza PER OGNI pulsante, e vedo se cambia qualcosa