Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Magno Rubem

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

Recommended Posts

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

Compartilhar este post


Link para o post
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. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é esse compilador? 

Eu uso o mplab, eu já usei esse pic mas faz tempo, porém lembro que pra comparar uma entrada eu usava GPIO1==0. É algo assim, não lembro direito. Mas é no mplab. 

No datasheet tem essa informação 

Posta o código completo 

Abs

Compartilhar este post


Link para o post
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--;

}

}

Compartilhar este post


Link para o post
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;
       }
     }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei meu programa que eu usei esse pic.

Quando fiz, tive que deixar o registrador ANSEL = 0;

Pois é nele que seleciona se os pinos serão entradas analógicas ou digitais. Isso tudo está no datasheet.

Teu código parece certo. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que legal kkk, uma dúvida parecida com a minha asahushua, na vdd n é tão diferente n

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×