Ajuda com codigo botao mudando mensagem no lcd

#1

Bom Dia, sou novo no mundo da eletrônica e preciso de uma ajuda,
Atualmente tenho o LCD mostrando 2 msgs aleatórias , preciso que mude a msg quando for acionado o botão, o código está feito porém não muda mensagem, alguém pode me ajudar!
Obrigado Pessoal.
Segue o Código :

#include <16f877a.h>
#fuses hs, nowdt

use delay (clock=4M)

/*

#include <lcd007.h>
#define LCD_ENABLE_PIN PIN_B2
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#define botao pin_A1
*/

#include <lcd.c>
void main(){
set_tris_d(0);
lcd_init();
while(TRUE){

lcd_gotoxy (1,1);
printf(lcd_putc, “NOME 1”);
lcd_gotoxy (1,2);
printf(lcd_putc, “NOME 2”);
delay_ms(3000);
lcd_putc("\f");

for (int car = 0;car<=16;car++){
lcd_gotoxy(car,1);
printf(lcd_putc, "NOME 1");
delay_ms(500);
lcd_putc("\f");
                               }
for (car=16;car>=1;Car--){
lcd_gotoxy(car,1);
printf(lcd_putc, "NOME 2");
delay_ms(500);
lcd_putc("\f");          }

         if(!input(pin_A1) ==1 ){
         lcd_putc("\f");
         delay_ms(20);
         lcd_gotoxy (1,1);
         printf(lcd_putc, "    ACESSO");
         lcd_gotoxy (1,2);
         printf(lcd_putc, "  AUTORIZADO");
         delay_ms(2000);
         lcd_putc("\f");
         delay_ms(5);
         lcd_gotoxy (1,1);
         printf(lcd_putc, "BEM");
         lcd_gotoxy (1,2);
         printf(lcd_putc, "VINDO");
         delay_ms(2000);
         lcd_putc("\f");
         delay_ms(10);  }

}

    }

0 Likes

#2

verifica primeiro se essa funcao funciona
!input(pin_A1) ==1;

faz tipo printf(lcd_putc, !input(pin_A1) );

nao deveria ser: if(input(pin_A1) !=1 ) ?

Eu eu so to vendo esta condicao

if(!input(pin_A1) ==1 ){
lcd_putc("\f");
delay_ms(20);
lcd_gotoxy (1,1);
printf(lcd_putc, " ACESSO");
lcd_gotoxy (1,2);
printf(lcd_putc, " AUTORIZADO");
delay_ms(2000);
lcd_putc("\f");
delay_ms(5);
lcd_gotoxy (1,1);
printf(lcd_putc, “BEM”);
lcd_gotoxy (1,2);
printf(lcd_putc, “VINDO”);
delay_ms(2000);
lcd_putc("\f");
delay_ms(10); }

nao devia ter um else, ou outra condicao IF?

porque ele vai executar os dois FOR loops, e dai vai mostra
e dai vai testar isso " if(!input(pin_A1) ==1 ) ", como voce ta usando um pull up so deve mudar enquanto voce estiver pressionando o botao , na hora que soltar vai mudar .

0 Likes

#3

Boa noite Arnold, primeiramente obrigado pelo retorno e interesse em me ajudar . Bom, refiz todos ajustes que me passou, e tirei a animação do display, ta estático agora, arrumei os comandos “if” e coloquei dentro do void main(){ e fora do loop while, então aperto o botão e não faz nada. Esse botão vai ser apertado 1 vez, dai vai temporizar a outra msg e depois volta ao começo, agora se vai precisar do comando “else” não sei te falar. oque acha ?, falta pouco para resolver, to tentando aqui tbm O/. Obrigado Boa Noite

Ficou assim :

if(input(pin_A1) !=1 )

lcd_putc("\f");
delay_ms(20);
lcd_gotoxy (1,1);
printf(lcd_putc, " ACESSO");
lcd_gotoxy (1,2);
printf(lcd_putc, " AUTORIZADO");
delay_ms(2000);
lcd_putc("\f");
delay_ms(5);
lcd_gotoxy (1,1);
printf(lcd_putc, “BEM”);
lcd_gotoxy (1,2);
printf(lcd_putc, “VINDO”);
delay_ms(2000);
lcd_putc("\f");
delay_ms(10); }

0 Likes

#4

Você tentou uma coisa de cada vez? Primeiro faz um programa só pra testar se a muda o valor quando você pressiona o botão coloca só um.

lcd_gotoxy (1,1);
printf( input(pin_A1) );
delay_ms(5);

Se funciona você sabe que input(pin_A1) esta respondendo, dai voce muda coloca um if

if( input(pin_A1)==1) {printf( 1);}

if( input(pin_A1)==0) {printf( 0 );}

entendeu, vai testando peca por peca

Problema e tipicamente. (não sei se e seu caso) que o pessoal qunado comeca programar vai escrevendo, e só depois testa se deu certo. Por isso test cada parte individualmente. Vai acrescentando o que funcionou.

0 Likes

#5

Tarde, então refiz todo código, testei aos poucos, e não funcionou, não muda a msg,(sou novo no mundo dos PIC e programação, o legal que to aprendendo contigo) No caso vc teria algum código exemplo feito que eu posso usar, ?

Desde já agradeço

Enviado do Yahoo Mail no Android

0 Likes

#6

achei esse video nao sei se te ajuda, mas o codigo parece estar certo.

0 Likes

#7

Blz, consegui fazer funcionar, aperto botão muda a msg =)
Porém na aplicação real, será um pulso NA que irá mudar a msg. Fiz o teste no Proteus não deu certo oque pode ser ? Usei o Relay padrão e uma fonte 12VDC. Obrigado to no aguardo.

0 Likes