/*
Gesture based piano using HC-SR04 , microSDcard reader and arduino uno
*/
#include "SD.h" //Lib to read SD card
#include "TMRpcm.h" //Lib to play auido
#include "SPI.h" //SPI lib for SD card
#define SD_ChipSelectPin 4 //Chip select is pin number 4
TMRpcm music; //Lib object is named "music"
const int trig=2;
const int echo=3;
const int trigb=7;
const int echob=5;
int lkey = 500; // Last white key of piano
int lkeyb = 500; // Last black key of piano
void setup(){
music.speakerPin = 9; //Auido out on pin 9
Serial.begin(9600); //Serial Com for debugging
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
pinMode(echob, INPUT);
pinMode(trigb, OUTPUT);
music.setVolume(6);
music.quality(1);
}
void loop()
{
long dur; // In Micro-seconds
long dis; // In milli-meter
long durb; // In Micro-seconds
long disb; // In milli-meter
digitalWrite(trigb,LOW);
delayMicroseconds(2);
digitalWrite(trigb,HIGH);
delayMicroseconds(10);
digitalWrite(trigb,LOW);
durb = pulseIn(echob,HIGH);
disb = (durb*343)/2000; // Function defined to convert duration to distance in mm
Serial.print("Distance black : ");
Serial.println(String(disb));
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
dur = pulseIn(echo,HIGH);
dis = (dur*343)/2000; // Function defined to convert duration to distance in mm
Serial.print("Distance white : ");
Serial.println(String(dis));
if(disb > 210){
if( dis > 25 && dis < 50 && (lkey > 50)){ // White key width is taken 2.5cm
music.play("1.wav");
delay(400);
}
if( dis > 50 && dis < 75 && (lkey < 50 || lkey > 75)){
music.play("2.wav");
delay(400);
}
if( dis > 75 && dis < 100 && (lkey < 75 || lkey > 100)){
music.play("3.wav");
delay(400);
}
if( dis > 100 && dis < 125 && (lkey < 100 || lkey > 125)){
music.play("4.wav");
delay(400);
}
if( dis > 125 && dis < 150 && (lkey < 125 || lkey > 150)){
music.play("5.wav");
delay(400);
}
if( dis > 150 && dis < 175 && (lkey < 150 || lkey > 175)){
music.play("6.wav");
delay(400);
}
if( dis > 175 && dis < 200 && (lkey < 175 || lkey > 200)){
music.play("7.wav");
delay(400);
}
}
// Black key width is taken 2cm
if( disb > 65 && disb < 85 && (lkeyb > 65)){
music.play("8.wav");
delay(400);
}
if( disb > 90 && disb < 110 && (lkeyb < 90 || lkeyb > 110)){
music.play("9.wav");
delay(400);
}
if( disb > 140 && disb < 160 && (lkeyb < 140 || lkeyb > 160)){
music.play("10.wav");
delay(400);
}
if( disb > 165 && disb < 185 && (lkeyb < 165 || lkeyb > 185)){
music.play("11.wav");
delay(400);
}
if( disb > 190 && disb < 210 && (lkeyb < 190 || lkeyb > 210)){
music.play("12.wav");
delay(400);
}
delay(1000);
if(dis>25){
lkey = dis;
}
if(dis>65){
lkeyb = disb;
}
}
Comments