Salve ragazzi, volevo chiedervi gentilmente un aiuto con uno sketch che non riesco a far funzionare.
Quello che vorrei ottenere è un contatore a 4 pulsanti, che partendo da 20 aumenta di uno o diminuisce di uno alla pressione.
I pulsanti sono 4 perchè devo cambiare 2 costanti, in pratica è un contatore per in gioco in cui ci sono 2 giocatori con 20 punti vita, ognuno dei quali usa 2 pulsanti per aumentarli o diminuirli.
Non ci sono problemi di elettronica in quanto ci sono solo 4 pulsanti collegati tutti nella stessa maniera:
5 volt a pulsante, altra uscita del pulsante a pin e resistenza 10k, altro capo della resistenza a terra.
Lo sketch gira benissimo con un giocatore, aumenta e diminuisce i punti correttamente. Il problema lo riscontro quando copio, incollo e modifico opportunamente il void loop() per ottenere la parte del 2 giocatore... A quel punto Arduino inizia a far ele bizze e conta numeri a caso anche se i pulsanti non vengono premuti.
(più precisamente solo uno dei due valori di vita cambia a ripetizione di +1 e -1.... l'altro rimane fisso posso cambiarlo coi pulsanti.)
di seguito vi aggiungo lo sketch che non funziona, e quello che funziona successivamente... grazie dell'aiuto preventivamente! non li ho commentati perchè sono davvero semplicissimi e lineari ma se serve qualche chiarimento sono qua.
//sketch a 2 giocatori che non funziona
const int butt1up=11;
const int butt1down=12;
const int butt2up= 6;
const int butt2down=7;
int vitauno = 20;
int vitadue = 20;
void setup() {
Serial.begin(9600);
pinMode(butt1up, INPUT);
pinMode(butt1down, INPUT);
pinMode(butt2up, INPUT);
pinMode(butt2down,INPUT);
}
void loop() {
int readingunoup = digitalRead(butt1up);
int readingunodown = digitalRead(butt1down);
int readingdueup = digitalRead(butt2up);
int readingduedown = digitalRead(butt2down);
if (readingdueup == HIGH) {
vitadue++;
delay(300);
Serial.print(vitauno);
Serial.print("----");
Serial.println(vitadue);
}
if (readingduedown == HIGH) {
vitadue--;
delay(300);
Serial.print(vitauno);
Serial.print("----");
Serial.println(vitadue);
}
if (readingunoup == HIGH) {
vitauno++;
delay(300);
Serial.print(vitauno);
Serial.print("----");
Serial.println(vitadue);
}
if (readingunodown == HIGH) {
vitauno--;
delay(300);
Serial.print(vitauno);
Serial.print("----");
Serial.println(vitadue);
}
}
//sketch che funziona a 1 giocatore
const int butt1up=11;
const int butt1down=12;
int vitauno = 20;
int vitadue = 20;
void setup() {
Serial.begin(9600);
pinMode(butt1up, INPUT);
pinMode(butt1down, INPUT);
}
void loop() {
int readingunoup = digitalRead(butt1up);
int readingunodown = digitalRead(butt1down);
if (readingunoup == HIGH) {
vitauno++;
delay(300);
Serial.print(vitauno);
Serial.print("----");
Serial.println(vitadue);
}
if (readingunodown == HIGH) {
vitauno--;
delay(300);
Serial.print(vitauno);
Serial.print("----");
Serial.println(vitadue);
}
}