// Need to define pins for servos
#include <Keypad.h>
#include <Servo.h>
String memory = "";
Servo B; // Create a "Servo" object called "B"
Servo A; // Create a "Servo" object called "A"
Servo G; // Create a "Servo" object called "G"
Servo nF; // Create a "Servo" object called "F"
Servo E; // Create a "Servo" object called "E"
Servo D; // Create a "Servo" object called "D"
Servo C; // Create a "Servo" object called "C"
float off = 0.0; // Variable where the arm's position will be stored (in degrees)
float on = 90.0; // Variable used for the arm's position step
/* Keypad setup */
const byte KEYPAD_ROWS = 4;
const byte KEYPAD_COLS = 3;
byte rowPins[KEYPAD_ROWS] = {22, 21, 20, 19};
byte colPins[KEYPAD_COLS] = {18, 17, 16};
char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{' ', 'G', ' '},
{'b', '=', '#'}
};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);
void setup() {
// put your setup code here, to run once:
B.attach(2); // Attach the B servo to the pin 2
B.write(off); // Initialize the B arm's position to 0 (rightmost)
A.attach(3);
A.write(off);
G.attach(4);
G.write(off);
nF.attach(5);
nF.write(off);
E.attach(6);
E.write(off);
D.attach(7);
D.write(off);
C.attach(8);
C.write(off);
Serial1.begin(115200);
Serial1.println("Type in a note!");
}
void loop() {
// put your main code here, to run repeatedly:
char key = keypad.getKey();
if (key != NO_KEY) {
switch (key) {
case 'A':
Serial1.println("A");
B.write(on);
A.write(on);
G.write(off);
nF.write(off);
E.write(off);
D.write(off);
C.write(off);
break;
case 'B':
Serial1.println("B");
B.write(on);
A.write(off);
G.write(off);
nF.write(off);
E.write(off);
D.write(off);
C.write(off);
break;
case 'C':
Serial1.println("C");
B.write(off);
A.write(on);
G.write(off);
nF.write(off);
E.write(off);
D.write(off);
C.write(off);
break;
case 'D':
Serial1.println("D");
B.write(on);
A.write(on);
G.write(on);
nF.write(on);
E.write(on);
D.write(on);
C.write(off);
break;
case 'E':
Serial1.println("E");
B.write(on);
A.write(on);
G.write(on);
nF.write(on);
E.write(on);
D.write(off);
C.write(off);
break;
case 'F':
Serial1.println("F");
B.write(on);
A.write(on);
G.write(on);
nF.write(on);
E.write(off);
D.write(off);
C.write(off);
break;
case 'G':
Serial1.println("G");
B.write(on);
A.write(on);
G.write(on);
nF.write(off);
E.write(off);
D.write(off);
C.write(off);
break;
}
}
// if (key != NO_KEY) {
// Serial1.println(key);
// memory = memory + key;
// }
//delay(1000); // this speeds up the simulation
//String memory = "";
}