Calculadora amb Matriu de botons 4x4
La revisió el 08:35, 25 maig 2016 per Vespejocarrero (discussió | contribucions)
Introducció
Basicament es una calculadora simple que va per monitor serial que només suma, resta, multiplica i divideix numeros d'un sol digit i cal recalcar que a l'hora de dividir ho arrodoneix automaticament
Material necesari
- Placa Arduino Uno
- Matriu de botons 4x4
Conexió de la matriu de boton y l'arduino
Es molt senzill agafes 8 cables el poses en el conector de la matriu de botons que només hi ha 8 així que no hi ha cap problema en ón es posi el cable pero es te que tenir en compte a l'hora de posar-ho en l'entrada digital perque si no es posa en ordre deprés no printará els numeros correctament.
Codi
Primer de tot necessitarem tenir la llibreria Keypad perquè ens detecti totes la tecles, després posem el següent codi:
- include <Keypad.h>
const byte Filas = 4; //Cuatro filas const byte Cols = 4; //Cuatro columnas
byte Pins_Filas[] = {9, 8, 7, 6}; //Pines Arduino para las filas byte Pins_Cols[] = { 5, 4, 3, 2}; // Pines Arduinopara las columnas char Teclas [ Filas ][ Cols ] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; Keypad Teclado1 = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols); void setup() { Serial.begin(9600) ; }
void loop() { char pulsacion = Teclado1.getKey() ; if (pulsacion != NO_KEY) // Si el valor es 0 es que no se Serial.println(pulsacion); // se ha pulsado ninguna tecla }
Ara explicarem la part del codi de la calculadora:
void loop()
{ Serial.println("Escriu el primer numero"); //Mostro per pantalla que hi indtrueixi un numero char num1 = Teclado1.getKey() ; //Es queda llegint fins que s'introdueixi un numero while(num1 == NO_KEY){ num1 = Teclado1.getKey() ;//confirma que es un numero } Serial.println(num1);
Serial.println("Escriu la operacio");//Espera que es posi la operació char op = Teclado1.getKey() ; while(op == NO_KEY){ op = Teclado1.getKey() ; } Serial.println(op); Serial.println("Escriu el segon numero"); //Fa igual que abans pero amb el segon número char num2 = Teclado1.getKey() ; while(num2 == NO_KEY){ num2 = Teclado1.getKey() ; } Serial.println(num2); int num1_I; int num2_I; int resultat; // if (isDigit(num1) || isDigit(num2)) { num1_I= String(num1).toInt(); num2_I= String(num2).toInt(); String operacio= String(op); if(operacio=="+"){ resultat = num1_I+num2_I; } else if(operacio=="-"){ resultat = num1_I-num2_I; } else if(operacio=="*"){ resultat = num1_I*num2_I; } else{ resultat = num1_I/num2_I; //Fa la operació }
Serial.println(resultat); //mostra el resultat } else{ Serial.println("No es un numero"); //mostra error en el cas de que s'hagi posat alguna cosa malament }