RuiViana

Calculadora

Oct 6th, 2016
130
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Keypad.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <Wire.h>
  4. LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  5. const byte ROWS = 4;                              //Quatro linhas
  6. const byte COLS = 4;                               //Três colunas
  7. //Mapeamento de teclas
  8. char keys[ROWS][COLS] = {
  9.   {'1', '2', '3', 'A'},
  10.   {'4', '5', '6', 'B'},
  11.   {'7', '8', '9', 'C'},
  12.   {'*', '0', '#', 'D'}
  13. };
  14. byte rowPins[ROWS] = {4, 5, 6, 7};                 //Definição de pinos das linhas
  15. byte colPins[COLS] = {8, 9, 10, 11};               //Definição de pinos das colunas
  16. byte flag = 10;
  17. char key;
  18. unsigned long key1;                                 //variavel para 10 digitos                            
  19. //Cria o teclado
  20. Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  21. void setup()
  22. {
  23.   Serial.begin(9600);
  24.   lcd.begin(16, 2);
  25.   lcd.print("Ola...");
  26.   delay(2000);
  27.   lcd.clear();
  28. }
  29. void loop()
  30. {
  31.   key = keypad.getKey();                         //Obtém tecla pressionada
  32.   if (key != NO_KEY)
  33.   {
  34.     if ((key >= '0') &  (key <= '9'))
  35.     {
  36.       key = key&0x0F;                         // Separa parte baixa do byte  Ex: Char 5 = 0x35 separando fica, 0x05
  37.       key1 = key1 * 10;
  38.       key1 = key1 + key;
  39.       Serial.println(key1);
  40.     }
  41.     if (key == '#')
  42.     {
  43.       lcd.clear();
  44.       lcd.setCursor(0, 0);
  45.       lcd.print("leitura:");
  46.       lcd.setCursor(0, 1);
  47.       Serial.println(key1);
  48.       lcd.print(key1);
  49.       key1 = 0;
  50.     }
  51.   }
  52. }
RAW Paste Data