Programa "Tocadiscos binario"
/* incluimos el fichero en el que aparecen las notas relacionadas con su frecuencia*/
#include "pitches.h"
int piezo=8; //el piezo lo conectaremos en el pin digital 8
int sensorVal[3]; //En esta variable se irán almacenando os valores de los 3 sensores de IR
int frontera=500; //Fijamos el limite a a partir del que consideramos negro o blanco el color de lectura
int salida=0; //en salida iremos guardando el valor en binario de la combinación de los tres sensores
void setup() {
pinMode(piezo,OUTPUT);
Serial.begin(9600);
}
void loop() {
// almacenamos las lecturas de los sensores
sensorVal[1]=analogRead(A1);
sensorVal[2]=analogRead(A2);
sensorVal[3]=analogRead(A3);
// Podemos imprimir el valor de las lecturas para comprobar los límites
// (por si hubiera que cambiar la frontera)
//Serial.print(sensorVal[1]);Serial.print(" ");
//Serial.print(sensorVal[2]);Serial.print(" ");
//Serial.println(sensorVal[3]);
/* Iremos comprobando los valores de las lecturas y dependiendo de si son altas
o bajas y su combinación obtendremos los valores de la salida:
Sensor1 sensor2 sensor 3 Salida
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
*/
if ((sensorVal[1]>frontera)&&(sensorVal[2]>frontera)&&(sensorVal[3]>frontera)){
salida=0;}
if ((sensorVal[1]>frontera)&&(sensorVal[2]>frontera)&&(sensorVal[3]<frontera)){
salida=1;}
if ((sensorVal[1]>frontera)&&(sensorVal[2]<frontera)&&(sensorVal[3]>frontera)){
salida=2;}
if ((sensorVal[1]>frontera)&&(sensorVal[2]<frontera)&&(sensorVal[3]<frontera)){
salida=3;}
if ((sensorVal[1]<frontera)&&(sensorVal[2]>frontera)&&(sensorVal[3]>frontera)){
salida=4;}
if ((sensorVal[1]<frontera)&&(sensorVal[2]>frontera)&&(sensorVal[3]<frontera)){
salida=5;}
if ((sensorVal[1]<frontera)&&(sensorVal[2]<frontera)&&(sensorVal[3]>frontera)){
salida=6;}
if ((sensorVal[1]<frontera)&&(sensorVal[2]<frontera)&&(sensorVal[3]<frontera)){
salida=7;}
Serial.println(salida);
// Dependiendo de la salida se toca una nota u otra
if (salida==0){
noTone(piezo);
}
if (salida==1){
tone(piezo, NOTE_C4);
delay(10);
}
if (salida==2){
tone(piezo, NOTE_D4);
delay(10);
}
if (salida==3){
tone(piezo, NOTE_E4);
delay(10);
}
if (salida==4){
tone(piezo, NOTE_F4);
delay(10);
}
if (salida==5){
tone(piezo, NOTE_G4);
delay(10);
}
if (salida==6){
tone(piezo, NOTE_A5);
delay(10);
}
if (salida==7){
tone(piezo, NOTE_B5);
delay(10);
}
}
No hay comentarios:
Publicar un comentario