Salve a tutti sono nuovo da queste parti , e stavo realizzando un progetto che aveva come obbiettivo riprodurre attraverso un telecomando la combinazione dei tasti che venivano premuti cioè una tastiera con 4 bottoni che suonano le note do re mi fa, e successivamente attraverso un telecomando riprodurre la sequenza, spero di essermi spiegato bene ![]()
il problema nel quelle mi sono imbattuto e nella realizzazione del ciclo che riconosca quale tra i 4 bottoni e stato premuto per primo,secondo,terzo,quarto ho provato diverse volte.
questo e il codice normale che fa funziona i 4 bottoni
int notes[] = {262, 294, 330, 349};
int buttonPin = 2;
int buttonPin2 = 3;
int buttonPin3 = 4;
int buttonPin4 = 5;
int buz = 8;
int buttonState = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
void setup()
{
pinMode(buz, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
if(buttonState == HIGH){
tone(buz, notes[0]);
delay(500);
ordine[t] = primo;
a++;
}
buttonState2=digitalRead(buttonPin2);
if(buttonState2 == HIGH){
ordine[t] = secondo;
tone(buz, notes[1]);
delay(500);
}
buttonState3 = digitalRead(buttonPin3);
if(buttonState3 == HIGH){
ordine[t] = terzo;
tone(buz, notes[2]);
delay(500);
}
buttonState4 = digitalRead(buttonPin4);
if(buttonState4 == HIGH){
ordine[t] = quarto;
tone(buz, notes[3]);
delay(500);
}
noTone(buz);
}
questo un altro contenete le combinazione e il ciclo ma privo della libreria tone
const int puls1 = 2;
const int puls2 = 3;
const int puls3 = 4;
const int puls4 = 5;
int stato1;
int stato2;
int stato3;
int stato4;
int primo;
int secondo;
int terzo;
int quarto;
void setup() {
pinMode(puls1, INPUT);
pinMode(puls2, INPUT);
pinMode(puls3, INPUT);
pinMode(puls4, INPUT);
Serial.begin(9600);
}
void loop()
{
stato1=digitalRead(puls1);//100
Serial.println(stato1);
stato2=digitalRead(puls2);//200
Serial.println(stato2);
stato3=digitalRead(puls3);//300
Serial.println(stato3);
stato4=digitalRead(puls4);//400
Serial.println(stato4);
primo=pos1();
secondo=pos2();
terzo=pos3();
quarto=pos4();
int prova[]={primo,secondo,terzo,quarto};
for(int i=0; i<4; i++)
Serial.println(prova[i]);
}
int pos1()
{
if(stato1==HIGH && stato2==LOW && stato3==LOW && stato4==LOW)
return stato1;
if(stato1==LOW && stato2==HIGH && stato3==LOW && stato4==LOW)
return stato2;
if(stato1==LOW && stato2==LOW && stato3==HIGH && stato4==LOW)
return stato3;
if(stato1==LOW && stato2==LOW && stato3==LOW && stato4==HIGH)
return stato4;
}
int pos2()
{
if(primo==stato1)
{
if(stato2==HIGH && stato3==LOW && stato4==LOW)
return stato2;
if(stato2==LOW && stato3==HIGH && stato4==LOW)
return stato3;
if(stato2==LOW && stato3==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato2)
{
if(stato1==HIGH && stato3==LOW && stato4==LOW)
return stato1;
if(stato1==LOW && stato3==HIGH && stato4==LOW)
return stato3;
if(stato1==LOW && stato3==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato3)
{
if(stato1==HIGH && stato2==LOW && stato4==LOW)
return stato1;
if(stato1==LOW && stato2==HIGH && stato4==LOW)
return stato2;
if(stato1==LOW && stato2==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato4)
{
if(stato1==HIGH && stato2==LOW && stato3==LOW)
return stato1;
if(stato2==LOW && stato3==HIGH && stato4==LOW)
return stato2;
if(stato2==LOW && stato3==LOW && stato4==HIGH)
return stato3;
}
}
int pos3()
{
if(primo==stato2 && secondo==stato3)
{
if(stato1==HIGH && stato4==LOW)
return stato1;
if(stato1==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato2 && secondo==stato1)
{
if(stato3==HIGH && stato4==LOW)
return stato3;
if(stato3==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato3 && secondo==stato2)
{
if(stato1==HIGH && stato4==LOW)
return stato1;
if(stato1==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato3 && secondo==stato1)
{
if(stato2==HIGH && stato4==LOW)
return stato2;
if(stato2==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato1 && secondo==stato3)
{
if(stato2==HIGH && stato4==LOW)
return stato2;
if(stato2==LOW && stato4==HIGH)
return stato4;
}
if(primo==stato1 && secondo==stato2)
{
if(stato3==HIGH && stato4==LOW)
return stato3;
if(stato3==LOW && stato4==HIGH)
return stato4;
}
}
int pos4()
{
if(primo==stato1 && secondo==stato2 && terzo==stato3)
return stato4;
if(primo==stato1 && secondo==stato2 && terzo==stato4)
return stato3;
if(primo==stato1 && secondo==stato3 && terzo==stato2)
return stato4;
if(primo==stato1 && secondo==stato3 && terzo==stato4)
return stato2;
if(primo==stato1 && secondo==stato4 && terzo==stato2)
return stato3;
if(primo==stato1 && secondo==stato4 && terzo==stato3)
return stato2;
if(primo==stato2 && secondo==stato1 && terzo==stato3)
return stato4;
if(primo==stato2 && secondo==stato1 && terzo==stato4)
return stato3;
if(primo==stato2 && secondo==stato3 && terzo==stato1)
return stato4;
if(primo==stato2 && secondo==stato3 && terzo==stato4)
return stato1;
if(primo==stato2 && secondo==stato4 && terzo==stato1)
return stato3;
if(primo==stato2 && secondo==stato4 && terzo==stato3)
return stato1;
if(primo==stato3 && secondo==stato1 && terzo==stato2)
return stato4;
if(primo==stato3 && secondo==stato1 && terzo==stato4)
return stato2;
if(primo==stato3 && secondo==stato2 && terzo==stato1)
return stato4;
if(primo==stato3 && secondo==stato2 && terzo==stato1)
return stato2;
if(primo==stato3 && secondo==stato4 && terzo==stato2)
return stato1;
if(primo==stato4 && secondo==stato1 && terzo==stato2)
return stato3;
if(primo==stato4 && secondo==stato1 && terzo==stato3)
return stato2;
if(primo==stato4 && secondo==stato2 && terzo==stato1)
return stato3;
if(primo==stato4 && secondo==stato2 && terzo==stato3)
return stato1;
if(primo==stato4 && secondo==stato3 && terzo==stato1)
return stato2;
if(primo==stato4 && secondo==stato3 && terzo==stato2)
return stato1;
}
nei diversi sketch realizzati utilizzo un vettore e diversi if