//FOR LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//FOR ROTARY ENCODER
#define inputCLK 3
#define inputDT 4
int counter = 0;
int currentStateCLK;
int previousStateCLK;
void setup() {
Serial.begin(9600);
//FOR LCD
lcd.init();
lcd.clear();
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("KEYLESS MUSIC");
lcd.setCursor(3,1);
lcd.print("INSTRUMENT");
delay(1000);
lcd.clear();
lcd.setCursor(4,0);
lcd.print("MADE BY");
lcd.setCursor(5,1);
lcd.print("ASBRO");
delay(2000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("MUSIC NOTE:");
//LDR
pinMode(13, INPUT);
pinMode(12, INPUT);
pinMode(11, INPUT);
pinMode(10, INPUT);
pinMode(9, INPUT);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
//BUZZER
pinMode(5, OUTPUT);
//ROTARY ENCODER
pinMode (inputCLK,INPUT);
pinMode (inputDT,INPUT);
previousStateCLK = digitalRead(inputCLK);
}
void loop() {
currentStateCLK = digitalRead(inputCLK);
if (currentStateCLK != previousStateCLK){
if (digitalRead(inputDT) != currentStateCLK)
counter --;
else
counter ++;
if(counter==0){
lcd.setCursor(3,1);
lcd.print("OCTAVE 4");
}
else if(counter==1){
lcd.setCursor(3,1);
lcd.print("OCTAVE 5");
}
else if(counter==2){
lcd.setCursor(3,1);
lcd.print("OCTAVE 6");
}
else if(counter==3){
lcd.setCursor(3,1);
lcd.print("OCTAVE 7");
}
else if(counter==-1){
lcd.setCursor(3,1);
lcd.print("OCTAVE 3");
}
else if(counter<=-2){
lcd.setCursor(3,1);
lcd.print(" ");
}
else if(counter>=4){
lcd.setCursor(3,1);
lcd.print(" ");
}
Serial.print(" -- Value: ");
Serial.println(counter);
}
previousStateCLK = currentStateCLK;
while(digitalRead(13)==HIGH){
if(counter==0){
lcd.setCursor(13,0);
lcd.print("C4");
tone(5,262);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("C5");
tone(5,523);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("C6");
tone(5,1046);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("C7");
tone(5,2093);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("C3");
tone(5,131);
}
}
while(digitalRead(7) == HIGH) {
if(counter==0) {
lcd.setCursor(13,0);
lcd.print("D4");
tone(5,294);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("D5");
tone(5,587);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("D6");
tone(5,1175);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("D7");
tone(5,2349);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("D3");
tone(5,147);
}
}
while(digitalRead(8) == HIGH) {
if(counter==0) {
lcd.setCursor(13,0);
lcd.print("E4");
tone(5,330);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("E5");
tone(5,659);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("E6");
tone(5,1318);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("E7");
tone(5,2637);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("E3");
tone(5,165);
}
}
while(digitalRead(9) == HIGH) {
if(counter==0) {
lcd.setCursor(13,0);
lcd.print("F4");
tone(5,349);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("F5");
tone(5,698);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("F6");
tone(5,1397);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("F7");
tone(5,2793);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("F3");
tone(5,175);
}
}
while(digitalRead(10) == HIGH) {
if(counter==0) {
lcd.setCursor(13,0);
lcd.print("G4");
tone(5,392);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("G5");
tone(5,784);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("G6");
tone(5,1568);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("G7");
tone(5,3136);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("G3");
tone(5,196);
}
}
while(digitalRead(11) == HIGH) {
if(counter==0) {
lcd.setCursor(13,0);
lcd.print("A4");
tone(5,440);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("A5");
tone(5,880);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("A6");
tone(5,1760);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("A7");
tone(5,3520);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("A3");
tone(5,220);
}
}
while(digitalRead(12) == HIGH) {
if(counter==0) {
lcd.setCursor(13,0);
lcd.print("B4");
tone(5,494);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("B5");
tone(5,988);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("B6");
tone(5,1975);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("B7");
tone(5,3951);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("B3");
tone(5,247);
}
}
while(digitalRead(6) == HIGH) {
if(counter==0) {
lcd.setCursor(13,0);
lcd.print("C5");
tone(5,523);
}
else if(counter==1) {
lcd.setCursor(13,0);
lcd.print("C6");
tone(5,1046);
}
else if(counter==2) {
lcd.setCursor(13,0);
lcd.print("C7");
tone(5,2093);
}
else if(counter==3) {
lcd.setCursor(13,0);
lcd.print("C8");
tone(5,4186);
}
else if(counter==-1) {
lcd.setCursor(13,0);
lcd.print("C4");
tone(5,262);
}
}
noTone(5);
}