#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x027, 20,4);
Servo servo;
int number1=0;
int number2=0;
int pot1=A0;
int pot2 = A1;
int led1 =13;
int led2 =12;
void setup() {
// put your setup code here, to run once:
lcd.begin(20,4);
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("- [+] - = ");
lcd.setCursor(0,1);
lcd.print("- [-] - = ");
lcd.setCursor(0,2);
lcd.print("- [x] - = ");
lcd.setCursor(0,3);
lcd.print("- [/] - = ");
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
servo.attach(10);
}
void loop() {
calculate(0, 0," [+] ");
calculate(0, 1," [-] ");
calculate(0, 2," [x] ");
calculate(0, 3," [/] ");
}
void calculate(int column, int row,char* operation ){
number1 = map(analogRead(pot1), 0,1023,0,10);
number2 = map(analogRead(pot2), 0,1023,0,10);
lcd.setCursor(column,row);
lcd.print(number1);
lcd.print(operation);
lcd.print(number2);
lcd.print(" = ");
if(operation == " [+] "){
lcd.print(number1+number2);
}
else if(operation == " [-] "){
int result =number1-number2;
lcd.print(result);
if(result<0){
blink(led2);
}
}
else if(operation == " [x] "){
lcd.print(number1*number2);
}
else{
lcd.print((float)number1/number2);
if(number2==0){
blink(led1);
noNoNo();
}
}
lcd.print(" ");
}
void blink(int led){
for(int x=1; x<=5; x++){
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
}
}
void noNoNo(){
for(int y=1; y<=5;y++){
for(int x=0; x<=180; x++){
servo.write(x);
delay(5);
}
for(int z=180; z>=0; z--){
servo.write(z);
delay(5);
}
}
}