En el arduino tengo montados únicamente una pantalla LCD de 16 pines y tres botones. La pantalla esta puesta tal y como aparece en la web official de arduino. y los botones en los pins 9,8,10.
Código:
#include <LiquidCrystal.h>
int buttonPin1 = 8;
int buttonPin2 = 9;
int buttonPin3 = 10;
int num1;
int num2;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void valor (int * num);
int f_operacion (void);// 1 = "+" 0 = "-"
int f_operacion (void)
{
int temp;
temp = 1;
delay(50);//para que no parpadee
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("escoja operacion:");
lcd.setCursor(0,1);
lcd.print("+");
while (digitalRead(buttonPin3) == LOW)
{
if (digitalRead(buttonPin2)==HIGH)
{
lcd.clear();
lcd.setCursor(0,1);
delay(20);
lcd.print("+");
delay (200);
temp = 1;
}
if (digitalRead(buttonPin1)==HIGH)
{
lcd.clear();
lcd.setCursor(0,1);
delay(20);
lcd.print ("-");
delay(200);
temp = 0;
}
}
return (temp);
}
void setup() {
lcd.begin(16, 2);
lcd.print("Calculadora 1.0");
delay(500);
pinMode (buttonPin1,INPUT);
pinMode (buttonPin2,INPUT);
pinMode (buttonPin3,INPUT);
}
void valor (int *num)
{
*num = 0;
while (digitalRead(buttonPin3) == LOW)
{
delay(50);//para que no parpadee
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("inserte numero:");
lcd.setCursor(0,1);
lcd.print(*num,DEC);
if (digitalRead(buttonPin2)==HIGH)
{
(*num)++;
delay(200);//para que nos de tiempo de sumar solo uno
}
if (digitalRead(buttonPin1)==HIGH)
{
(*num)--;
delay(200);
}
}
}
void loop() {
int opt;
valor (&num1);
delay (200);//para que nos de tiempo de quitar el dedo
opt = f_operacion ();
delay (200);//para que nos de tiempo de quitar el dedo
valor (&num2);
delay(200);
lcd.clear();
while (digitalRead(buttonPin3)==LOW)
{
if (opt == 1)
{
lcd.setCursor(0,1);
lcd.print(num1+num2);
}
if (opt == 0)
{
lcd.setCursor(0,1);
lcd.print(num1-num2);
}
}
delay(200);
}