Calculadora amb Matriu de botons 4x4

De Wiket
Salta a la navegació Salta a la cerca

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.
Esquema.jpg

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:

  1. 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 
         
       }