Olá, estou desenvolvendo um projeto e preciso de ajuda com um código no arduino para um contador. Seriam 4 displays de 7 seguimentos (exemplo: 88 88) e quatro botões, um para acréscimo e um para decréscimo para os dois displays do lado esquerdo, contando de zero a 99 e um para acréscimo e um para decréscimo para os dois displays do lado direito, contando de 00 a 99 da mesma forma!

Obs: Já possuo a codificação para acréscimo e decréscimo de apenas um display, contando de 0 a 9, mas não sei exatamente qual a logica que devo usar para juntar esse segundo digito e também para adicionar esse segundo contador no mesmo código (creio que é possível fazer usando variáveis pois são contadores distintos)

Quem puder me ajudar o mais rápido possível agradeço!

Exibições: 1035

Responder esta

Respostas a este tópico

Olá Luana,

Veja se ajuda, se não continue postando.

http://www.instructables.com/id/4-Digit-7-Segment-LED-Display-Arduino/ 

Boa sorte.

Abs.

Eu pensaria seriamente em adicionar alguns shift-registers nesse circuito heim.

Olá Luana,

Eu dividiria o problema em partes e faria uma função para cada um deles.

Por exemplo:

No loop(), eu teria 2 funções: atualizaDisplay() e verificaBotoes().

Então, você terá que ter 2 conjuntos de variáveis para cada contador:

 - 2 inteiros para manter os números a serem exibidos (N1 e N2)

 - 1 inteiro para manter o estado (para cada botão) (em repouso, bouncing on (acabou de pressionar), pressionado, bouncing off (acabou de soltar)

 - 1 long para contar o tempo do bouncing on e bouncing off

Você vai perceber que terá problemas com eventos acontecendo ao mesmo tempo e terá que simular multitarefa por divisão de tempo. Eu expliquei isso neste artigo que escrevi: http://www.labirito.com/tutorial/arduino/multitarefa

Para implementar a função atualizaDisplay(), use a seguinte matemática:

 - Inteiro D1 = N1/10 (parte das dezenas do N1, na divisão perde-se a parte decimal depois da virgula)

 - Inteiro D2 = N1 - (D1*10) (unidade do N1, conseguido graças a perda da parte decimal de D1)

 - Inteiro D3 = N1/10 (parte das dezenas do N2, na divisão perde-se a parte decimal depois da virgula)

 - Inteiro D4 = N1 - (D3*10) (unidade do N2, conseguido graças a perda da parte decimal de D3)

Pronto! Desta forma, é só mostrar cada digito no seu display.

Note que não vai haver pinos suficientes para todos os displays, então monte o circuito com shift-registers 74HC595.

Boa sorte!

  'Eiju

bom artigo, sucinto.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço