Hey everyone, I am trying to associate the digital pins (and some of the analog ones) on my arduino UNO to a certain frequency. (i.e when it sees that this button is pushed, it does this sound). This is the code I have so far:
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, INPUT);
pinMode(11, INPUT);
pinMode(10, INPUT);
pinMode(9, INPUT);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);
pinMode(4, INPUT);
pinMode(3, INPUT);
pinMode(A1, INPUT);
pinMode(A0, INPUT);
}
int C4 = 1911;
int CS4 = 1804;
int D4 = 1703;
int DS4 = 1607;
int E4 = 1517;
int F4 = 1433;
int FS4 = 1351;
int G4 = 1276;
int GS4 = 1204;
int LA4 = 1136;
int LAS4 = 1073;
int B4 = 1012;
int note = 0;
int c = 0;
int cs = 0;
int d = 0;
int ds = 0;
int e = 0;
int f = 0;
int fs = 0;
int g = 0;
int gs = 0;
int a = 0;
int as = 0;
int b = 0;
void loop() {
c = digitalRead(A0);
cs = digitalRead(A1) * 2;
d = digitalRead(3) * 3;
ds = digitalRead(4) * 4;
e = digitalRead(5) * 5;
f = digitalRead(6) * 6;
fs = digitalRead(7) * 7;
g = digitalRead(8) * 8;
gs = digitalRead(9) * 9;
a = digitalRead(10) * 10;
as = digitalRead(11) * 11;
b = digitalRead(12) * 12;
note = c + cs + d + ds + e + f + fs + g + gs + a + as + b;
switch(note){
case 1:
digitalWrite(13, HIGH);
delayMicroseconds(C4);
digitalWrite(13, LOW);
delayMicroseconds(C4);
break;
case 2:
digitalWrite(13, HIGH);
delayMicroseconds(CS4);
digitalWrite(13, LOW);
delayMicroseconds(CS4);
break;
case 3:
digitalWrite(13, HIGH);
delayMicroseconds(D4);
digitalWrite(13, LOW);
delayMicroseconds(D4);
break;
case 4:
digitalWrite(13, HIGH);
delayMicroseconds(DS4);
digitalWrite(13, LOW);
delayMicroseconds(DS4);
break;
case 5:
digitalWrite(13, HIGH);
delayMicroseconds(E4);
digitalWrite(13, LOW);
delayMicroseconds(E4);
break;
case 6:
digitalWrite(13, HIGH);
delayMicroseconds(F4);
digitalWrite(13, LOW);
delayMicroseconds(F4);
break;
case 7:
digitalWrite(13, HIGH);
delayMicroseconds(FS4);
digitalWrite(13, LOW);
delayMicroseconds(FS4);
break;
case 8:
digitalWrite(13, HIGH);
delayMicroseconds(G4);
digitalWrite(13, LOW);
delayMicroseconds(G4);
break;
case 9:
digitalWrite(13, HIGH);
delayMicroseconds(GS4);
digitalWrite(13, LOW);
delayMicroseconds(GS4);
break;
case 10:
digitalWrite(13, HIGH);
delayMicroseconds(LA4);
digitalWrite(13, LOW);
delayMicroseconds(LA4);
break;
case 11:
digitalWrite(13, HIGH);
delayMicroseconds(LAS4);
digitalWrite(13, LOW);
delayMicroseconds(LAS4);
break;
case 12:
digitalWrite(13, HIGH);
delayMicroseconds(B4);
digitalWrite(13, LOW);
delayMicroseconds(B4);
break;
}
}
This code does not work. I assume that it's because the cases don't loop, so the square wave is not created. If I just use this piece of code alone in void loop it gives me the right tone:
digitalWrite(13, HIGH);
delayMicroseconds(LA4);
digitalWrite(13, LOW);
delayMicroseconds(LA4);
How do I fix this? Is there a way to make a part of the void loop repeat itself untill it sees something else?
Thanks for helping a newbie out!
Cheers