int v0 = 0;
int v1 = 0;
int v2 = 0;
int v3 = 0;
int d0 = 0;
int d1 = 0;
int d2 = 0;
int d3 = 0;
const int indexPin = 26;
const int middlePin = 25;
const int ringPin = 12;
const int littlePin = 14;
const int chord[8][4] = {
{100, 100, 41, 35}, // C
{100, 100, 60, 8}, // Dm
{100, 90, 65, 8}, // Em
{100, 100, 60, 77}, // F
{0, 75, 0, 100}, // G
{100, 70, 87, 28}, // Am
{100, 100, 52, 0}, // G7
{0, 0, 0, 0} // Muting
};
const String chord_name[8] = {
"C", "Dm", "Em", "F", "G", "Am", "G7", "Muting"
};
void setup()
{
pinMode(indexPin, INPUT);
pinMode(middlePin, INPUT);
pinMode(ringPin, INPUT);
pinMode(littlePin, INPUT);
Serial.begin(115200);
}
void loop()
{
// read the sensor value:
v0 = analogRead(indexPin);
v1 = analogRead(middlePin);
v2 = analogRead(ringPin);
v3 = analogRead(littlePin);
d0 = map(v0, 0, 4095, 0, 100);
d1 = map(v1, 0, 4095, 0, 100);
d2 = map(v2, 0, 4095, 0, 100);
d3 = map(v3, 0, 4095, 0, 100);
//print out the value you read:
Serial.print("Index finger is ");
Serial.println(d0);
Serial.print("Middle finger is ");
Serial.println(d1);
Serial.print("Ring finger is ");
Serial.println(d2);
Serial.print("Little finger is ");
Serial.println(d3);
find_chord(d0, d1, d2, d3);
delay(1000);
}
void find_chord(int d0, int d1, int d2, int d3){
int d[4] = {d0, d1, d2, d3};
int mins = 401;
int it = 0;
for(int i=0; i<7; i++){
if(d[0]+d[1]+d[2]+d[3] == 0){
it = 7; break;
}
else if(d[0] + d[2] == 0){
it = 4; break;
}
int s = 0;
for(int j=0; j<4; j++){
s += abs(d[j] - chord[i][j]);
}
if(mins > s){
mins = s;
it = i;
Serial.print(chord_name[it]);
Serial.print(" is more closer: ");
Serial.println(s);
}
}
Serial.print("Chord ");
Serial.print(chord_name[it]);
Serial.println(" is playing now.");
}