#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Stepper.h>
#define STEP_PR 2048
const byte RIG = 4;
const byte COL = 4;
char keys[RIG][COL] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte PINRIG[RIG] = {7, 6, 5, 4};
byte PINCOL[COL] = {3, 2, 1, 0};
Keypad keypad = Keypad(makeKeymap(keys), PINRIG, PINCOL, RIG, COL);
LiquidCrystal_I2C lcd(39, 16, 2);
Stepper STEP(STEP_PR, 8, 9, 10, 11);
int angle = 0;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("EMANUELE G.");
lcd.setCursor(0,1);
lcd.print("PREMERE UN TASTO");
STEP.setSpeed(30);
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ANGOLAZIONE");
}
if (key == '*') {
STEP.step(-angle * (STEP_PR / 1800));
angle = 0;
lcd.setCursor(12,0);
lcd.print(" ");
}
else if (key == '#') {
STEP.step(angle * (STEP_PR / 1800));
angle = 0;
lcd.setCursor(12,0);
lcd.print(" ");
}
else {
angle = angle * 10 + (key - '0');
lcd.setCursor(12,0);
lcd.print(angle);
}
}
}