#include <SD.h>
#include <Servo.h>
const int chipSelect = 53;
const int buttonpin = 38;
int button; // Change this to the pin you are using to connect to the SD card module
String CS;
String bpms[4];
String chord[100];
String beats[100];
String c;
float bpm;
float beat;
char inputChar;
float mdelay;
//For strings 1,3,5 fret1=50 fret2=70 fret3=110 Open=130
//For strings 2,4,6 fret1=130 fret2=110 fret3=70 Open=50
int ang1 = 50;
int ang2 = 70;
int ang3 = 90;
int ang4 = 110;
int ang5 = 130;
bool first = true;
// A
int Z1;int Z2;int Z3;int Z4;int Z5;int Z6;
int Zs1;int Zs2;int Zs3;int Zs4;int Zs5;int Zs6;
int Zm1;int Zm2;int Zm3;int Zm4;int Zm5;int Zm6;
// B
int P1;int P2;int P3;int P4;int P5;int P6;
int Ps1;int Ps2;int Ps3;int Ps4;int Ps5;int Ps6;
int Pm1;int Pm2;int Pm3;int Pm4;int Pm5;int Pm6;
// C
int C1;int C2;int C3;int C4;int C5;int C6;
int Cs1;int Cs2;int Cs3;int Cs4;int Cs5;int Cs6;
int Cm1;int Cm2;int Cm3;int Cm4;int Cm5;int Cm6;
// D
int D1;int D2;int D3;int D4;int D5;int D6;
int Ds1;int Ds2;int Ds3;int Ds4;int Ds5;int Ds6;
int Dm1;int Dm2;int Dm3;int Dm4;int Dm5;int Dm6;
// E
int E1;int E2;int E3;int E4;int E5;int E6;
int Es1;int Es2;int Es3;int Es4;int Es5;int Es6;
int Em1;int Em2;int Em3;int Em4;int Em5;int Em6;
// F
int F1;int F2;int F3;int F4;int F5;int F6;
int Fs1;int Fs2;int Fs3;int Fs4;int Fs5;int Fs6;
int Fm1;int Fm2;int Fm3;int Fm4;int Fm5;int Fm6;
// G
int G1;int G2;int G3;int G4;int G5;int G6;
int Gs1;int Gs2;int Gs3;int Gs4;int Gs5;int Gs6;
int Gm1;int Gm2;int Gm3;int Gm4;int Gm5;int Gm6;
const int servo1pin=40;
const int servo2pin=41;
const int servo3pin=42;
const int servo4pin=43;
const int servo5pin=44;
const int servo6pin=45;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
void setup() {
Serial.begin(115200);
pinMode(buttonpin, INPUT);
servo1.attach(servo1pin);
servo2.attach(servo2pin);
servo3.attach(servo3pin);
servo4.attach(servo4pin);
servo5.attach(servo5pin);
servo6.attach(servo6pin);
servo1.write(90);
servo2.write(90);
servo3.write(90);
servo4.write(90);
servo5.write(90);
servo6.write(90);
// Initialize the SD card
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed");
return;
}
Serial.println("SD card initialization successful");
// Open the file
File file = SD.open("heyjude.txt");
// If the file exists, read it and print its contents to the serial monitor
if (file) {
while (file.available())
{
for(int i=0; i<100; i++)
{
inputChar = file.read();
if(inputChar == ',' && first == true )
{
bpms[i] = c;
c = "";
bpm = bpms[i].toInt();
first = false;
}
if(inputChar == ',' || inputChar == '\n')
{
chord[i]=CS;
CS="";
}
else if (inputChar == '\r')
{
beats[i] = CS;
CS = "";
}
else
{
CS += inputChar;
c += inputChar;
}
}
}
file.close();
}
else {
Serial.println("File not found");
}
}
void loop() {
button = digitalRead(buttonpin);
if (button == HIGH)
{
delay(3000);
for (int i=0; i<100; i++)
if(beats[i] == "1" && i>5)
{
beat = beats[i].toInt();
mdelay = (((1/bpm)*60)*beat);
Serial.print(mdelay);
}
else if(beats[i] == "2" && i>5)
{
beat = beats[i].toInt();
mdelay = (((1/bpm)*60)*beat);
Serial.print(mdelay);
}
else if(beats[i] == "3" && i>5)
{
beat = beats[i].toInt();
mdelay = (((1/bpm)*60)*beat);
Serial.print(mdelay);
}
else if(beats[i] == "4" && i>5)
{
beat = beats[i].toInt();
mdelay = (((1/bpm)*60)*beat);
Serial.print(mdelay);
}
else if(chord[i] == "A")
{
Z1=ang3; Z2=ang1; Z3=ang2; Z4=ang4; Z5=ang2; Z6=ang3;
servo1.write(Z1);
servo2.write(Z2);
servo3.write(Z3);
servo4.write(Z4);
servo5.write(Z5);
servo6.write(Z6);
delay(mdelay*1000);
}
else if(chord[i] == "A7")
{
Zs1=ang3; Zs2=ang1; Zs3=ang2; Zs4=ang1; Zs5=ang2; Zs6=ang1;
servo1.write(Zs1);
servo2.write(Zs2);
servo3.write(Zs3);
servo4.write(Zs4);
servo5.write(Zs5);
servo6.write(Zs6);
delay(mdelay*1000);
}
else if(chord[i] == "Am")
{
Zm1=ang3; Zm2=ang1; Zm3=ang2; Zm4=ang5; Zm5=ang1; Zm6=ang1;
servo1.write(Zm1);
servo2.write(Zm2);
servo3.write(Zm3);
servo4.write(Zm4);
servo5.write(Zm5);
servo6.write(Zm6);
delay(mdelay*1000);
}
else if(chord[i] == "B")
{
P1=ang3;P2=ang4;P3=ang4;P4=ang2;P5=ang4;P6=ang4;
servo1.write(P1);
servo2.write(P2);
servo3.write(P3);
servo4.write(P4);
servo5.write(P5);
servo6.write(P6);
delay(mdelay*1000);
}
else if(chord[i] == "B7")
{
Ps1=ang3;Ps2=ang4;Ps3=ang1;Ps4=ang4;Ps5=ang5;Ps6=ang4;
servo1.write(Ps1);
servo2.write(Ps2);
servo3.write(Ps3);
servo4.write(Ps4);
servo5.write(Ps5);
servo6.write(Ps6);
delay(mdelay*1000);
}
else if(chord[i] == "Bm")
{
Pm1=ang3;Pm2=ang4;Pm3=0;Pm4=0;Pm5=ang5;Pm6=ang4;//uses forth fret
servo1.write(Pm1);
servo2.write(Pm2);
servo3.write(Pm3);
servo4.write(Pm4);
servo5.write(Pm5);
servo6.write(Pm6);
delay(mdelay*1000);
}
else if(chord[i] == "C")
{
C1=ang3;C2=ang2;C3=ang2;C4=ang1;C5=ang1;C6=ang1;
servo1.write(C1);
servo2.write(C2);
servo3.write(C3);
servo4.write(C4);
servo5.write(C5);
servo6.write(C6);
Serial.print("C");
delay(mdelay*1000);
}
else if(chord[i] == "C7")
{
Cs1=ang3;Cs2=ang2;Cs3=ang2;Cs4=ang2;Cs5=ang1;Cs6=ang1;
servo1.write(Cs1);
servo2.write(Cs2);
servo3.write(Cs3);
servo4.write(Cs4);
servo5.write(Cs5);
servo6.write(Cs6);
delay(mdelay);
}
else if(chord[i] == "Cm")
{
Cm1=ang3;Cm2=ang2;Cm3=0;Cm4=0;Cm5=0;Cm6=ang2;//uses forth and fith frets
servo1.write(Cm1);
servo2.write(Cm2);
servo3.write(Cm3);
servo4.write(Cm4);
servo5.write(Cm5);
servo6.write(Cm6);
delay(mdelay);
}
else if(chord[i] == "D")
{
D1=ang3;D2=ang3;D3=ang5;D4=ang4;D5=ang4;D6=ang4;
servo1.write(D1);
servo2.write(D2);
servo3.write(D3);
servo4.write(D4);
servo5.write(D5);
servo6.write(D6);
delay(mdelay*1000);
}
else if(chord[i] == "D7")
{
Ds1=ang3;Ds2=ang3;Ds3=ang5;Ds4=ang4;Ds5=ang1;Ds6=ang4;
servo1.write(Ds1);
servo2.write(Ds2);
servo3.write(Ds3);
servo4.write(Ds4);
servo5.write(Ds5);
servo6.write(Ds6);
delay(mdelay);
}
else if(chord[i] == "Dm")
{
Dm1=ang3;Dm2=ang3;Dm3=ang5;Dm4=ang4;Dm5=ang4;Dm6=ang5;
servo1.write(Dm1);
servo2.write(Dm2);
servo3.write(Dm3);
servo4.write(Dm4);
servo5.write(Dm5);
servo6.write(Dm6);
delay(mdelay);
}
else if(chord[i] == "E")
{
E1=ang5;E2=ang4;E3=ang2;E4=ang5;E5=ang5;E6=ang1;
servo1.write(E1);
servo2.write(E2);
servo3.write(E3);
servo4.write(E4);
servo5.write(E5);
servo6.write(E6);
delay(mdelay);
}
else if(chord[i] == "E7")
{
Es1=ang5;Es2=ang4;Es3=ang5;Es4=ang5;Es5=ang5;Es6=ang1;
servo1.write(Es1);
servo2.write(Es2);
servo3.write(Es3);
servo4.write(Es4);
servo5.write(Es5);
servo6.write(Es6);
delay(mdelay);
}
else if(chord[i] == "Em")
{
Em1=ang5;Em2=ang4;Em3=ang2;Em4=ang1;Em5=ang5;Em6=ang1;
servo1.write(Em1);
servo2.write(Em2);
servo3.write(Em3);
servo4.write(Em4);
servo5.write(Em5);
servo6.write(Em6);
delay(mdelay);
}
else if(chord[i] == "F")
{
F1=ang1;F2=ang2;F3=ang4;F4=ang4;F5=ang1;F6=ang5;
servo1.write(F1);
servo2.write(F2);
servo3.write(F3);
servo4.write(F4);
servo5.write(F5);
servo6.write(F6);
delay(mdelay);
}
else if(chord[i] == "F7")
{
Fs1=ang1;Fs2=ang2;Fs3=ang1;Fs4=ang4;Fs5=ang1;Fs6=ang1;
servo1.write(Fs1);
servo2.write(Fs2);
servo3.write(Fs3);
servo4.write(Fs4);
servo5.write(Fs5);
servo6.write(Fs6);
delay(mdelay);
}
else if(chord[i] == "Fm")
{
Fm1=ang1;Fm2=ang2;Fm3=ang4;Fm4=ang5;Fm5=ang1;Fm6=ang5;
servo1.write(Fm1);
servo2.write(Fm2);
servo3.write(Fm3);
servo4.write(Fm4);
servo5.write(Fm5);
servo6.write(Fm6);
delay(mdelay);
}
else if(chord[i] == "G")
{
G1=ang4;G2=ang4;G3=ang5;G4=ang1;G5=ang5;G6=ang2;
servo1.write(G1);
servo2.write(G2);
servo3.write(G3);
servo4.write(G4);
servo5.write(G5);
servo6.write(G6);
delay(mdelay*1000);
}
else if(chord[i] == "G7")
{
Gs1=ang4;Gs2=ang4;Gs3=ang5;Gs4=ang1;Gs5=ang5;Gs6=ang5;
servo1.write(Gs1);
servo2.write(Gs2);
servo3.write(Gs3);
servo4.write(Gs4);
servo5.write(Gs5);
servo6.write(Gs6);
delay(mdelay);
}
else if(chord[i] == "Gm")
{
Gm1=ang4;Gm2=0;Gm3=0;Gm4=ang2;Gm5=ang4;Gm6=ang2;//uses fith fret
servo1.write(Gm1);
servo2.write(Gm2);
servo3.write(Gm3);
servo4.write(Gm4);
servo5.write(Gm5);
servo6.write(Gm6);
delay(mdelay);
}
}
}