Ir ao conteúdo
  • Cadastre-se

Como alterar o valor de uma variável com botão?


Posts recomendados

olá a todos! sou novo no forun!

sou iniciante em pic, já faço algumas pequenas coisas em c, eu uso o microc- for- pic, porém tenho uma duvida que para quem já é avançado em conhecimento de pic e linguagem c pode ser uma coisa simples, tenho uma variável  e nela acendo um led usando o IF, porém eu gostaria de adicionar um código que incrementasse +1 ou -1 a variável toda vez que eu pressionasse o botão MAIS, por exemplo suponhamos que eu inicie a varável em zero e quero que ela acenda o led em 15, assim pressiono o botão 15 vezes  para adicionar e ele só acenda quando atingir os 15, e quando pressionar o botão Menos o led desligue pois decrementa -1.

Estou usando o pic 12F675 , Ficarei grato pela ajuda de vocês 

 

 

void main()
{
  char A=15;
   CMCON  = 7 ;           // desliga os comparadores
   ANSEL = 0 ;          // Configura entrada analogica AN0
   TRISIO.F0 = 0;     // CONFIGURA O PORT COMO SAIDA
   TRISIO.F1 = 0;    // CONFIGURA O PORT COMO SAIDA
   TRISIO.F4 = 1;    // CONFIGURA O PORT COMO ENTRADA
   TRISIO.F5 = 1;    // CONFIGURA O PORT COMO ENTRADA
   GPIO = 0 ;        // Passa o estado logico 0 para a porta

   while(1)
   {
   if (A=15)
   gpio.f0=1;

}

}

 

CIRCUITO.png

Link para o comentário
Compartilhar em outros sites

8 minutos atrás, Rafael Del Pino disse:

If a==15 é o certo 

Abs

olá Rafael obrigado pela correção, realmente coloquei IF=15 , aqui no compilador eu já havia colocado correto if (a==15) e funciona perfeito o comando para acender o o LED fazendo a comparação da variável. é que na hora da postagem do tópico acabei errando.

mais na realidade a minha duvida é, como colocar um código que altere o valor das variáveis através de botões externos por exemplo  if (gpio.f4==0) // incrementa 1 a cada véz que for pressionado o botão

a++;

if (gpio.f5==0)  // decrementa 1 a cada vez que for pressionado o botão 

a--;

essa é minha duvida, pois aqui não funciona, iniciando a variável em zero quando eu pressionar o botão mais 15 vezes o LED acenda.

essa é que está sendo a minha dificuldade. 

Link para o comentário
Compartilhar em outros sites

Então eu uso o MICROC- FOR PIC

O CODIGO COMPLETO 

 

void main()
{
  char A==15;
   CMCON  = 7 ;           // desliga os comparadores
   ANSEL = 0 ;          // Configura entrada analogica AN0
   TRISIO.F0 = 0;     // CONFIGURA O PORT COMO SAIDA
   TRISIO.F1 = 0;    // CONFIGURA O PORT COMO SAIDA
   TRISIO.F4 = 1;    // CONFIGURA O PORT COMO ENTRADA
   TRISIO.F5 = 1;    // CONFIGURA O PORT COMO ENTRADA
   GPIO = 0 ;        // Passa o estado logico 0 para a porta

   while(1)
   {
   if (A=15)
   gpio.f0=1;
   {
   if (gpio.f4=0)
   A++;
   {
   if (gpio.f5=0)
   A--;

}

}

Link para o comentário
Compartilhar em outros sites

Spoiler

kkkkkk

não,

na realidade o que ele quer é totalmente diferente de mim,

no meu caso eu quero incrementar +1 a uma variável toda vez que um botão for pressionado .

suponhamos que o meu programa esteja assim.

 

#define led GPIO.F0
#define s1 GPIO.F4
#define s2 GPIO.F5

int a=0;        // Aqui é a variável do tipo inteiro que declarei
void main(){
    CMCON = 7;
    TRISIO.F0 = 0;
    TRISIO.F4=1;
    TRISIO.F5=1;
    GPIO = 0;
   while(1)
     {

       if(s1 == 0){
        a++;              // incrementa 1 a variável a cada vez que o botão for pressionado
        delay_ms(300);

        }

       if(s2 == 0){
       a--;                //   decrementa 1 a variável a cada vez que o botão for pressionado
       }

       if(a == 10){    // toda vez que pressionar o s1 10 vezes o led acenda 
         led = 1;
         delay_ms(300);

if (a<10)

led=0;
       }
     }

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

ok @Magno Rubem mas convenhamos que tem alguma relaçãozinha. kk

 

É isso amigo a dica do amigo @Rafael Del Pino faz sentido e seu código parece que também faz. Diga o que ocorre, o que não ocorre e o que deveria ocorrer e em qual parte do programa

 

Spoiler

Só falta você dizer que está usando led verde...!

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Philippe Henrique disse:

@Magno Rubem  Bom trabalho! em C também sou meio iniciante, caso meu projeto funcione na prática pretendo me aprofundar na linguagem.

olha a linguagem c é fantástica, não pense duas vezes, pode se aprofundar, as vezes encontramos pedreira até porque somos iniciantes mais nada que a persistência não resolva , logo logo vou postar aqui a solução do meu problema, to filtrando melhor para ficar com mais qualidade.

adicionado 0 minutos depois
1 hora atrás, Rafael Del Pino disse:

@Magno Rubem

Caso tenha resolvido compartilhe com o pessoal aí, como o amigo falou: mais gente pode passar por esse problema e achar a solução no seu tópico.

Abs 

, logo logo vou postar aqui a solução do meu problema, to filtrando melhor para ficar com mais qualidade.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...