Calculadora Arduino

Iniciado por juliol34, 26 Julio 2010, 21:52 PM

0 Miembros y 1 Visitante están viendo este tema.

juliol34

Hola! este es mi primer post de algo serio, y quiero compartirlo con vosotros. Me he animado a empezar a aprender electrónica con arduino y esto es lo que he conseguido hasta ahora. es una calculadora muy simple, tan simple que solo suma y resta jeje pero para empezar no esta mal no? Me gustaría que postrarais lo que veáis mejorable en cuanto a código.

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.


#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);
}



Banti

Muy lindo code y con comentarios precisos. Excelente che!

andrexita

disculpa podrias subir el simulador en  proteus con un atmega328 es urgente