//Digital pins 2-11: LEDs
//Digital pin 12: Speaker
//Analog pin 1: photodiode
int lyd;
int kalibrerLav;
int kalibrerHoy;
void setup() {
//Setting the pins
for(int nr = 2; nr <= 12; nr++)
{
pinMode(nr, OUTPUT);
}
Serial.begin(9600);
//Beep 3 times
for (int a = 1; a <= 3; a++){
tone(12, (a * 450));
delay(250);
noTone(12);
}
// Running lights left
for (int wow3 = 2; wow3 <= 11; wow3++)
{
digitalWrite(wow3, HIGH);
delay(100);
}
for (int wow3 = 2; wow3 <= 11; wow3++)
{
digitalWrite(wow3, LOW);
delay(100);
}
//Beep 3 times low
for (int a = 1; a <= 3; a++){
tone(12, 262);
delay(150);
noTone(12);
}
//We need to calibrate the light-sensor for different lighting conditions.
//Calibrate low
kalibrerLav = analogRead(0);
// Running lights right
for (int wow = 11; wow >= 2; wow--)
{
digitalWrite(wow, HIGH);
delay(100);
}
for (int wow = 11; wow >=2; wow--)
{
digitalWrite(wow, LOW);
delay(100);
}
//Beep 3 times high
for (int b = 1; b <= 3; b++){
tone(12, 1047);
delay(150);
noTone(12);
}
//Calibrate high
kalibrerHoy = analogRead(0);
//Printing the result from the calibration
Serial.println("Kalibrering av lyssensor:");
Serial.print("Lav: ");
Serial.println(kalibrerLav);
Serial.print("Hoy: ");
Serial.println(kalibrerHoy);
}
void loop(){
Serial.println(lyd); //Printing sensor values
lyd = map(analogRead(0), (kalibrerLav + 30), (kalibrerHoy - 10), 262, 1047); //Setting the sound scope
//Make noice!
tone(12, lyd);
//LEDs showing the scale
//C
if ((lyd > 127 && lyd < 137) || (lyd > 255 && lyd < 270) || (lyd > 509 && lyd < 539) || (lyd > 1018 && lyd < 1050)){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
}else
//D
if ((lyd > 143 && lyd < 152) || (lyd > 286 && lyd < 303) || (lyd > 571 && lyd < 605)){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}else
//E
if ((lyd > 161 && lyd < 170) || (lyd > 321 && lyd < 340) || (lyd > 641 && lyd < 679)){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}else
//F
if ((lyd > 170 && lyd < 180) || (lyd > 340 && lyd < 360) || (lyd > 679 && lyd < 719)){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}else
//G
if ((lyd > 191 && lyd < 202) || (lyd > 381 && lyd < 404) || (lyd > 762 && lyd < 808)){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}else
//A
if ((lyd > 214 && lyd < 227) || (lyd > 428 && lyd < 453) || (lyd > 856 && lyd < 906)){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}else
//H
if ((lyd > 240 && lyd < 255) || (lyd > 480 && lyd < 509) || (lyd > 960 && lyd < 1018)){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}
}
|