#include <EncButton.h>
#define button1 2
#define button2 3
#define button3 4
#define button4 5
#define button5 6
#define button6 7
#define button7 8
#define button8 11
#define tonePin 10
#define LedRed A1
#define LedGreen A2
#define LedBlue A3
Button btn_1(button1, INPUT, HIGH);
Button btn_2(button2, INPUT, HIGH);
Button btn_3(button3, INPUT, HIGH);
Button btn_4(button4, INPUT, HIGH);
Button btn_5(button5, INPUT, HIGH);
Button btn_6(button6, INPUT, HIGH);
Button btn_7(button7, INPUT, HIGH);
Button btn_mode(button8, INPUT, HIGH);
int mode = 0;
void setup() {
pinMode(tonePin, OUTPUT);
pinMode(LedRed, OUTPUT);
pinMode(LedGreen, OUTPUT);
pinMode(LedBlue, OUTPUT);
digitalWrite(LedRed, HIGH);
digitalWrite(LedGreen, LOW);
digitalWrite(LedBlue, LOW);
}
void loop() {
tick();
piano();
mode_status();
}
void tick() {
btn_1.tick();
btn_2.tick();
btn_3.tick();
btn_4.tick();
btn_5.tick();
btn_6.tick();
btn_7.tick();
btn_mode.tick();
}
void piano() {
if (btn_1.press()) tone(10, 131+ mode); //C
else if (btn_2.press()) tone(10, 147 + mode); //D
else if (btn_3.press()) tone(10, 165 + mode); //E
else if (btn_4.press()) tone(10, 175 + mode); //F
else if (btn_5.press()) tone(10, 196 + mode); //G
else if (btn_6.press()) tone(10, 220 + mode); //A
else if (btn_7.press()) tone(10, 247 + mode); //B
else noTone(10);
}
void mode_status() {
if (btn_mode.click()) {
mode += 220;
if (mode > 440) mode = 0;
if (mode == 440) { //blue
digitalWrite(LedRed, LOW);
digitalWrite(LedGreen, LOW);
digitalWrite(LedBlue, HIGH);
} else if (mode == 220) { //green
digitalWrite(LedRed, LOW);
digitalWrite(LedGreen, HIGH);
digitalWrite(LedBlue, LOW);
} else if (mode == 0) { //red
digitalWrite(LedRed, HIGH);
digitalWrite(LedGreen, LOW);
digitalWrite(LedBlue, LOW);
}
}
}