Página principal

Calculadora
con
Arduino


La primera versión la hice en Gambas (VB Linux), pero como me gusta el lenguaje C, la reprogramé en C con la biblioteca SDL.
Una vez que tienes programada la calculadora en C, traspasarla a arduino fue fácil, solo había que cambiar las rutinas que utilizaban el LCD y la lectura del teclado.
Para el LCD he utilizado un 1602 formato de 16x2 caracteres (modo 4 bits), aunque solo utilice la primera línea.
Para las teclas he utilizado una matriz de 4x5 botones. La calculadora que he realizado es simple, solo precisa 19 botones.
El primer diseño la he realizado en el simulador Proteus, te ahora mucho trabajo a la hora de grabar el programa en la placa arduino nano.
Para poder utilizar el código hex que utiliza el simulador, debemos modificar la preferencia de arduino.
En caso de Linux se encuentra en ~/.arduino/preferences.txt .
Añadir la línea build.path=/home/seta/tmp/arduino , en mi caso queda:
    board=nano328
    browser=mozilla
    browser.linux=mozilla
    build.path=/home/seta/tmp/arduino
    build.verbose=false ........


Como en mi caso trabajo en Linux, y el simulador solo funciona en Windows, creo un directorio compartido en la máquina virtual que será /home/seta/tmp/arduino , donde el arduino compilará y generará el fichero hex que utiliza el simulador.

Circuito creado y simulado con Proteus.


Circuito montado y alimentado con 3 pilas.

Como también tengo un display OLED se lo añadí.
Este OLED se comunica mediante la línea I2C , pin A4 y A5 del arduino.


Circuito montado con el OLED

PROGRAMAS

La calculadora se podría haber hecho con muchas más funciones, pero la original tenía esas funciones.
También se podría haber mejorado la visualización de los decimales, es fácil, pero eso lo dejo como tarea para otros.
Como podemos observar el lenguaje C/C++ es el mejor para portar entre diferentes plataformas.


En la  página https://calc43.blogspot.com/ muestro mi colección de calculadoras.
Añado 4 calculadoras nuevas todas las semanas.

Saludos.
Juan Galaz


Bibliografía:

Teclas->    ircopy.html
OLED->      amorb.html
LCD->       arduraa.html