Prezados colegas do Laboratorio de Garagem,

Pouco tempo atrás eu procurei na internet um sketch para utlizar um teclado númerico com 12 teclas, sendo então baixado a biblioteca Keypad.h, funcionando perfeitamente. Estranhamente ao gravar em outro microcontrolador Atmega328P-PU, o mesmo tipo utlizado anteriormente, fatos estranhos passaram a acontecer:

1. Fazendo o upload utilizando a IDE 1.0 o teclado funciona normalmente, mas o buzzer passa a emitir um som constante e itermitente que nao consta do sketch;

2. Fazendo o upload do sketch utilizando a IDE 1.05 o teclado deixa de funcionar e o som itermitente do buzzer não acontece;

3. As duas IDE utilizam a mesma biblioteca baixada;

4. Efetuei o bootloader no microcontrolador utlizando as duas IDE e tanto um como o outro os fatos ocorrem da mesma forma;

5. Utilizei outro chip e fiz os mesmos procedimentos e os fatos ocorrem da mesma forma;

6. O microcontrolador que possui o sketch onde tudo funcionou perfeitamente ao ser inserido na board do Arduino RV3 funciona perfeitamente;

7. Por ultimo realizei uma varredura complete no meu PC e efetuei um novo download da IDE 1.05, por achar se tartar de um virus instalado no meu PC, mas tambem sem sucesso.

segue o código abaixo, embora eu acredito que não haja nenhum problema com o mesmo.

#include <Wire.h>

#include <LiquidCrystal_I2C.h>         

#include <Keypad.h>

LiquidCrystal_I2C lcd(0x38,20,4);

int count = 0;                                              

char pass [4] = {'1', '9', '7', '1'};                

const int yellowPin = 11;                            

const int redPin = 12;                               

const int greenPin = 10;                             

const int audioPin = 9;                               

const int duration = 200;                            

const byte ROWS = 4;                             

const byte COLS = 3;                              

char keys[ROWS][COLS] = {

{'1','2','3'},

{'4','5','6'},

{'7','8','9'},

{'*','0','#'}

};

byte rowPins[ROWS] = {5, 4, 3, 2};                   

byte colPins[COLS] = {6, 7, 8};                         

 

 

 

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){

lcd.init();                                             

lcd.backlight();                                    

Serial.begin(9600);                             

 pinMode(audioPin, OUTPUT);

pinMode(yellowPin, OUTPUT);

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

lcd.clear();                                  

key_init();                                       

}

void loop(){

char key = keypad.getKey();                   

if (key != NO_KEY){                                

if (key == '#') {                                     

code_entry_init();                                   

 int entrada = 0;

 while (count < 4 ){                                 

char key = keypad.getKey();              

if (key != NO_KEY){                     

entrada += 1;                                  

tone(audioPin, 1080, 100);                

 delay(duration);                            

noTone(audioPin);                         

if (key == pass[count])count += 1;      

if ( count == 4 ) unlocked();                                                                         

if ((key == '#') || (entrada == 4)){       

 key_init();                                        

  break;                                              

          }

     }

   }

  }

}

}

void key_init (){

lcd.clear();                                                

lcd.print("Aguardando...");                        

lcd.setCursor(0,1);                                  

lcd.print("Tecle #");                               

count = 0;                                               

digitalWrite(redPin, HIGH);

 digitalWrite(yellowPin, LOW);

 digitalWrite(greenPin, LOW);

 tone(audioPin, 1080, 100);

delay(duration);

 noTone(audioPin);

tone(audioPin, 980, 100);

delay(duration);

noTone(audioPin);

tone(audioPin, 770, 100);

 delay(duration);

 noTone(audioPin);

}

void code_entry_init(){

  lcd.clear();                                                

  lcd.print("Entre a Senha:");                        

  count = 0;                                                

  tone(audioPin, 1500, 100);

  delay(duration);

  noTone(audioPin);

  tone(audioPin, 1500, 100);

  delay(duration);

  noTone(audioPin);

  tone(audioPin, 1500, 100);

  delay(duration);

  noTone(audioPin);

  digitalWrite(redPin, LOW);                           

  digitalWrite(yellowPin, HIGH);                      

  digitalWrite(greenPin, LOW);                        

}

void unlocked(){

  lcd.clear();                                                   

  lcd.print("Acesso Liberado!");                       

  digitalWrite(redPin, LOW);                          

  digitalWrite(yellowPin, LOW);                  

  for (int x = 0; x < 20; x++){

  digitalWrite(greenPin, HIGH);

  tone(audioPin, 2000, 100);

  delay(duration);

  noTone(audioPin);

  digitalWrite(greenPin, LOW);

  tone(audioPin, 2000, 100);

  delay(duration);

  noTone(audioPin);

  delay(250);

  }

}

Exibições: 387

Responder esta

Respostas a este tópico

Prezados Colegas,

Pelo jeito o problema não é com a IDE 1.0 ou 1.05. Tirei do sketch a biblioteca LiquidCrystal_I2C.h e todos seus comandos para acionamento do LCD e o teclado passou a funcionar normalmente. Provavelmente o há um conflito entre as duas bibliotecas.

Baixei a nova IDE 1.5.6 r2 Beta e os problemas pararam. Agora restou apenas o que poderia ter acontecido, já que a nova IDE já possui as duas bibliotecas mencionadas.

Valeu amigo, obrigada por dividir esta informação,vou utilizar esta biblioteca também.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço