collapse

* Links de Robótica

* Posts Recentes

Ideias para construir um quadrúpede simples por Njay
[Hoje às 03:04]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]


Driver motor por beirao
[11 de Novembro de 2017, 17:40]


Preciso de uma fonte de corrente constante ? por samc
[09 de Novembro de 2017, 14:18]


Pressoestato 0-10V por artur36
[07 de Novembro de 2017, 23:22]

Autor Tópico: MICROCONTROLADOR LINGUAGEM C  (Lida 2435 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
MICROCONTROLADOR LINGUAGEM C
« em: 04 de Janeiro de 2012, 20:12 »
Preciso acender uma sequencia de 7 leds com delay de 500ms que estão na porta b ao precionar uma chave e assim que VOLTAR a precioná-la, apagá-los na sequência inversa á que foram acesos.O pic que estou usando é o 16f873 Alguém pode me ajudar? Desde já agradeço
« Última modificação: 13 de Janeiro de 2012, 17:57 por Psycop »

Offline msr

  • Mini Robot
  • *
  • Mensagens: 795
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #1 em: 04 de Janeiro de 2012, 21:17 »
Quais são as duvidas em concreto que tens? O que é que já experimentaste fazer? Tens alguma experiência na programação de microcontroladores?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.400
  • Helpdesk do sitio
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #2 em: 04 de Janeiro de 2012, 21:56 »
Um botão chega perfeitamente para isso, e o código é tambem muito simples, já tentas-te começar a escrever alguma coisa?
É que isto aqui não é os discos pedidos, e ninguem te vai dar um programa completo só porque sim, mostra o que já fizeste, e nós ajudamos-te a completar o teu programa.
Avr fanboy

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #3 em: 04 de Janeiro de 2012, 21:59 »
Entendi. Bom segue o que consegui fazer

 
Código: [Seleccione]
#INCLUDE 16F887.H
#USE DELAY(CLOCK=8000000)
#FUSES HS, NOWDT, PUT, BROWNOUT, NOLVP

#USE FAST_IO(B)
#USE FAST_IO(D)



  VOID MAIN()
   {
         SET_TRIS_B(0B00000001);
         SET_TRIS_D(0B00000000);
   
          OUTPUT_D(0B00000000);
         
            WHILE(TRUE)
           
            {
                 
                  IF(!INPUT(PIN_B0))                 
                     {
                        OUTPUT_TOGGLE(PIN_D0);
                        DELAY_MS(500);
                        OUTPUT_TOGGLE(PIN_D1);
                        DELAY_MS(500);
                        OUTPUT_TOGGLE(PIN_D2);
                        DELAY_MS(500);
                        OUTPUT_TOGGLE(PIN_D3);
                        DELAY_MS(500);
                       
                       
                       
                       
                     }   
                 
                 
                 
           
            }
   }
« Última modificação: 05 de Janeiro de 2012, 10:27 por TigPT »

Offline maurosmartins

  • Mini Robot
  • *
  • Mensagens: 483
    • msm
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #4 em: 04 de Janeiro de 2012, 22:15 »
Olá paulogudes,

antes de mais, k compilador é esse?

eis a minha ideia:

porque nao crias uma tabela onde tens a sequência dos leds a acender.
depois fazes por exemplo

Código: (C) [Seleccione]
PORTD=tabela[ i ];
quanto ao subir e descer era só incrementar ou decrementar o i (com as devidas proteções de máximos e minimos).

podes usar um timer, porque se não, só podes verificar o estado do botão de 500 em 500 milisegundos.

por outro lado como o botão esta ligado ao RB0 podes usar a interrupção externa.

Cumps, Mauro.

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #5 em: 04 de Janeiro de 2012, 22:23 »
Estou usando o copilador ccs e quanto a esta tabela, me parece interessante. Como posso criá-la e usar já que a desconhecia até esta momento? Fico até constrangido pq apesar estar me interessando muito esta linguagem, ainda tenho muito a aprender.

Offline maurosmartins

  • Mini Robot
  • *
  • Mensagens: 483
    • msm
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #6 em: 04 de Janeiro de 2012, 22:38 »
a tabela é simples é algo do género

unsigned char tabela[4]; em que 4 é o numero de elementos

depois podes inicializar com por exemplo
Código: [Seleccione]
tabela[0] = 0b00000001;
tabela[1] = 0b00000010;
tabela[2] = 0b00000100;
tabela[3] = 0b00001000;
pelo que percebi é só um led  (nao mantem acesos os anteriores) outra opção é fazeres shifts:

por exemplo

Código: [Seleccione]
PORTD=0b00000001;

while(1){


PORTD=PORTD<<1;

}


isto não é para ser um programa funcional nem coisa que se pareça, mas pode-te dar ideias, existe shift para a esquerda e para a direita.

Cumps, Mauro.


« Última modificação: 05 de Janeiro de 2012, 10:28 por TigPT »

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #7 em: 04 de Janeiro de 2012, 22:44 »
Nossa! Muito bom mesmo. E no caso da chave, como posso usá-la tanto pra acender quanto pra apagar neste caso?

Offline maurosmartins

  • Mini Robot
  • *
  • Mensagens: 483
    • msm
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #8 em: 04 de Janeiro de 2012, 22:46 »
nao percebi Paulo, podes reformular sff?

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #9 em: 04 de Janeiro de 2012, 22:50 »
Sim, como posso usar o botão ligado a PORTB0 tanto pra acender quanto pra apagar os leds?Pode me dar um exemplo?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.400
  • Helpdesk do sitio
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #10 em: 04 de Janeiro de 2012, 22:55 »
A primeira coisa que deves fazer antes de começar a programar é pegar numa folha de papel ou abrir o notepad ou o que gostares mais e pensares como é que o teu programa tem de funcionar, neste caso será algo assim:

inicio de loop infinito
ler botão e usar uma variavel para guardar o ultimo estado dos leds, se era acender ou apagar
se (acender)
acende
se não apaga
voltar ao inicio do loop infinito
Avr fanboy

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #11 em: 04 de Janeiro de 2012, 23:17 »
Obrigado pela ajuda e em especial pela paciência. Me ajudou muito

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #12 em: 05 de Janeiro de 2012, 19:21 »
Consegui resolver e esta funcionando 100%. Obrigado pela ajuda e agradeço os esclarecimentos. me ajudaram muito

Offline maurosmartins

  • Mini Robot
  • *
  • Mensagens: 483
    • msm
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #13 em: 05 de Janeiro de 2012, 20:04 »
Ainda bem Paulo, já agora, qual a solução implementada?

Cumps, Mauro.

Offline paulogudes

  • Mini Robot
  • *
  • Mensagens: 17
Re: MICROCONTROLADOR LINGUAGEM C
« Responder #14 em: 06 de Janeiro de 2012, 11:03 »
Na verdade era bem mais simples que imaginei. Apenas criei uma variável y e dei o valor "0" a ela. As condições eram, "se B0 for "0" e y for "0" os leds deverão se acesos sequencialmente a partir de D0 e fazer y=1 e  se B0 for "0" e y for "1" os leds deverão se apagar sequencialmente a partir de D0 e fazer y=0." Sei que pra vcs que tem muita esperiência com isso é moleza, mas confeso que foi meio complicado pra mim com 2 semanas de curso. Valeu pela ajuda