Preciso fazer um contador que vai de 0 até 9 no Arduino. Tenho um display de 7 segmentos anodo comum, 2 emissores de infra-vermelho e 2 receptores. ao passar algo entre o primeiro emissor e receptor o display deve incrementar 1, ao passar pelo segundo emissor e receptor o display deve decrementar 1.

Alguem pode me ajudar mostrando algum exemplo funcional?

Não precisa ser com os emissores e receptores, pode ser com dois botões.

Agradeço.

Exibições: 961

Responder esta

Respostas a este tópico

No meu blog tem um material sobre 7 segmentos, veja: http://automatobr.blogspot.com.br/search?q=segmentos

Liga cada receptor a um pino que suporte interrupção, em um você soma 1 a uma variavel e em outro voce subtrai 1, no loop você aciona o display de 7 segmentos.

Codigo exemplo

int x = 0;
byte seg[10][7] = { { 1,1,1,1,1,1,0 },
{ 0,1,1,0,0,0,0 },
{ 1,1,0,1,1,0,1 },
{ 1,1,1,1,0,0,1 },
{ 0,1,1,0,0,1,1 },
{ 1,0,1,1,0,1,1 },
{ 1,0,1,1,1,1,1 },
{ 1,1,1,0,0,0,0 },
{ 1,1,1,1,1,1,1 },
{ 1,1,1,0,0,1,1 }
};
void setup()
{
attachInterrupt(0, soma, FALLING);
attachInterrupt(1, subtrai, FALLING);
for(int i=6; i<=12; i++)
{
pinMode(i, OUTPUT);
}
}

void loop()
{
for(int segPin=0; segPin<7; segPin++)
{
byte pin = 6;
digitalWrite(pin, seg[x][segPin]);
pin++;
}
}

void soma()
{
x = x + 1;
}

void subtrai()
{
x = x - 1;
}

Acho que funciona.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço