Paso 6: Codificación del Sensor
Novio de Lanetta, Andrew, nos ayudó a saber cuáles son las notas de las canciones y luego, cuando pruebas las canciones que nos dice qué notas donde fuera. Fue de gran ayuda!
Conocer la frecuencia de las notas fue duro al principio. Ayudado una vez nos dimos cuenta de cómo las notas emparejado el piano en la siguiente página web: http://en.wikipedia.org/wiki/Piano_key_frequencies (gracias por la ayuda de Andrew!) Arduino dispone de una biblioteca para las notas pero ya habíamos hecho las frecuencias para las notas. Si utilizas la biblioteca las canciones no funcionará si se mezcla en las notas que es definir frecuencias. Para saber qué tipo de valores de las lecturas del sensor de luz con luz varios exponen puede utilizar el código serial que se da en Arduino.
Configuración de PIN
int altavoz = 9;
int sensorPin = A3; Sensor de luz conectado
int sensorValue; variable para almacenar el valor que viene desde el sensor
Sitio web para las notas: http://www.phy.mtu.edu/~suits/notefreqs.html
int a = 440;
int b = 493.883;
int c = 523.251;
int e = 329.628;
int mc = 261.626;
int d = 293.665;
int f = 349.228;
eflat int = 311.127;
bflat int = 466.164;
int g = 391.995;
nosound int = 0;
A la izquierda
Todas las notas se colocan en una matriz
int totheleft [] = {d, f, f, d, f, f, nosound, eflat, f, f, eflat, f, f};
por cuánto tiempo cada nota es 4 = Nota del trimestre, 3 = cuarto con el punto, 8 = corchea, 2 = media nota
int durationleft [] = {16,16,8,16,16,4,1,16,16,8,16,16,4};
Elegir el derecho, el principio de la canción
int chooseright [] = {e, f, g, g, g, a, c, b, a, g, e, d, e, f, g, b, a, g, f, e};
int durationCTR [] = {4,4,3,16,16,8,8,8,8,4,4,4,4,3,8,9,16,8,8,2};
Configuración de las clavijas, el A3 es una entrada (cuanta luz) donde el orador es una salida (no hay ruido que sale)
void setup()
{
pinMode(speaker,OUTPUT);
pinMode (A3, entrada);
}
void loop()
{
sensorValue = analogRead(sensorPin); leer el valor del sensor
Si (sensorValue > = 40 & & sensorValue < = 100) //Light detectado
{
para (int thisNote = 0; thisNote < 100; thisNote ++) {//go a través de la gama de notas
int noteDuration = 18000/durationleft [thisNote];
tono (altavoz, totheleft [thisNote], noteDuration); //play cada no
retardo (noteDuration * 0.30); //have un corto tiempo entre cada nota para que el oído puede escuchar la nota
noTone(9);
}
}
else if (sensorValue > 101) {//lots de la luz detectada
para (int thisNote = 0; thisNote < 100; thisNote ++) {}
int noteDuration = 18000/durationCTR [thisNote];
Tone(Speaker,chooseright[thisNote],noteDuration);
Delay(noteDuration*0.30);
noTone(9);
}
}
Else //No luz detectado
{
noTone(9); no hacer nada
}
}