Pestañas

sábado, 19 de enero de 2019

Bloque 3: Tocadiscos binario

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