Hi, I'm trying to build a laser harp implementing Arduino Uno.
It works in this way: 6 lasers, each one hitting a photodiode. When the photodiode doesn't receive the laser (because the hand is interrupting it), a range sensor gives voltage based on the point where the hand is interrupting the laser (from 0 to 2.5V). There is a sensor for each laser.
I'm trying to write the code to load into the Arduino board, and there is something wrong.
Forgetting about the range sensors, I tried to build a code based exclusively on the status of the laser (interrupted/uninterrupted) and if it is interrupted, the board should send a "sound" to the speakers I connected.
This is the code (the frequences should be the same as a guitar):
int diodo1 = 2;
int diodo2 = 4;
int diodo3 = 7;
int diodo4 = 8;
int diodo5 = 12;
int diodo6 = 13;
int sens1 = A0;
int sens2 = A1;
int sens3 = A2;
int sens4 = A3;
int sens5 = A4;
int sens6 = A5;
int suoni = 5;
void setup()
{
pinMode(diodo1, INPUT);
pinMode(diodo2, INPUT);
pinMode(diodo3, INPUT);
pinMode(diodo4, INPUT);
pinMode(diodo5, INPUT);
pinMode(diodo6, INPUT);
pinMode(sens1, INPUT);
pinMode(sens2, INPUT);
pinMode(sens3, INPUT);
pinMode(sens4, INPUT);
pinMode(sens5, INPUT);
pinMode(sens6, INPUT);
}
void loop()
{
if (digitalRead(diodo1)==0)
{
noTone(suoni);
tone (suoni,82.4);
}
if (digitalRead(diodo1)==1 && digitalRead(diodo2)==1 && digitalRead(diodo3)==1 && digitalRead(diodo4)==1 && digitalRead(diodo5)==1 && digitalRead(diodo6)==1)
{
noTone(suoni);
}
if (digitalRead(diodo2)==0)
{
noTone(suoni);
tone (suoni,110);
}
if (digitalRead(diodo1)==1 && digitalRead(diodo2)==1 && digitalRead(diodo3)==1 && digitalRead(diodo4)==1 && digitalRead(diodo5)==1 && digitalRead(diodo6)==1)
{
noTone(suoni);
}
if (digitalRead(diodo3)==0)
{
noTone(suoni);
tone (suoni,146.8);
}
if (digitalRead(diodo1)==1 && digitalRead(diodo2)==1 && digitalRead(diodo3)==1 && digitalRead(diodo4)==1 && digitalRead(diodo5)==1 && digitalRead(diodo6)==1)
{
noTone(suoni);
}
if (digitalRead(diodo4)==0)
{
noTone(suoni);
tone (suoni,196);
}
if (digitalRead(diodo1)==1 && digitalRead(diodo2)==1 && digitalRead(diodo3)==1 && digitalRead(diodo4)==1 && digitalRead(diodo5)==1 && digitalRead(diodo6)==1)
{
noTone(suoni);
}
if (digitalRead(diodo5)==0)
{
noTone(suoni);
tone (suoni,246.9);
}
if (digitalRead(diodo1)==1 && digitalRead(diodo2)==1 && digitalRead(diodo3)==1 && digitalRead(diodo4)==1 && digitalRead(diodo5)==1 && digitalRead(diodo6)==1)
{
noTone(suoni);
}
if (digitalRead(diodo6)==0)
{
noTone(suoni);
tone (suoni,329.6);
}
if (digitalRead(diodo1)==1 && digitalRead(diodo2)==1 && digitalRead(diodo3)==1 && digitalRead(diodo4)==1 && digitalRead(diodo5)==1 && digitalRead(diodo6)==1)
{
noTone(suoni);
}
}
But this is the result:
These are the problems I noticed:
1)I heard the "electric sound" and it shouldn't be so... dirty;
2)When there aren't interrupted lasers, I can hear a sound. This shouldn't happen.
3)Interrupting more lasers together makes a sound which becomes lower and lower, but what I wanted was that only THE LAST INTERRUPTED LASER makes the sound.
Can someone help me?
(I'm sorry for my english, in case of grammar mistakes)