collapse

* Links de Robótica

* Posts Recentes

Printer 3D barata por andre_f_carvalho
[Hoje às 14:37]


Procuro resistências 220 Ohm de 1% por brunus
[Ontem às 15:50]


Package de cond 10uF 35V smd? por KammutierSpule
[Ontem às 11:19]


Videos hipnoticos de mecanica industrial por TigPT
[Ontem às 00:07]


FPV Drone Racing? por brunus
[Ontem às 00:00]


Decodificar cabo por Hugu
[01 de Dezembro de 2016, 23:11]


Ajuda para replicar e reparar um Dimmer por brunus
[30 de Novembro de 2016, 23:23]


Adaptar impressora 3D a Drill Maschine por Hugu
[30 de Novembro de 2016, 23:20]


Módulo gsm por dio123
[30 de Novembro de 2016, 13:39]


RAM SO-DIMM 256 MB por Hugu
[29 de Novembro de 2016, 22:52]

Autor Tópico: Carregar para contar  (Lida 1168 vezes)

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

Offline OxyGen

  • Mini Robot
  • *
  • Mensagens: 92
  • ET - UA
    • Curto.D ET Blog
Carregar para contar
« em: 12 de Maio de 2010, 21:23 »
Bem, já vou no meu terceiro projecto hoje...

Este consiste em carregar num botão e mostrar num display de 7 segmentos o contador. Foi programado através de interrupções... Eis o video:

Push To Count - Carregar para Contar Small | Large


E o Código:
Código: [Seleccione]
// 0 -> 13,12,11,9,8,7
// 1 -> 11,9
// 2 -> 13,12,9,8,6
// 3 -> 12,11,9,8,6
// 4 -> 11,9,7,6
// 5 -> 12,11,8,7,6
// 6 -> 13,12,11,8,7,6
// 7 -> 11,9,8
// 8 -> 13,12,11,9,8,7,6
// 9 -> 12,11,9,8,7,6

int zero[]={13,12,11,10,9,8,7};
int um[]={11,9};
int dois[]={13,12,9,8,6};
int tres[]={12,11,9,8,6};
int quatro[]={11,9,7,6};
int cinco[]={12,11,8,7,6};
int seis[]={13,12,11,8,7,6};
int sete[]={11,9,8};
int oito[]={13,12,11,9,8,7,6};
int nove[]={12,11,9,8,7,6};
int todos[]={13,12,11,10,9,8,7,6};

int cont = 0;

void setup()
{
 for(int i=0; i<sizeof(todos);i++)
{
  pinMode(todos[i], OUTPUT);
}
  for(int i=0; i<sizeof(zero);i++)
  {
    digitalWrite(zero[i],HIGH);
    digitalWrite(10,LOW);
    digitalWrite(6,LOW);
  }

}
void loop()
{
  attachInterrupt(0,mostrar,FALLING);
  delay(1500);
}

void limpar()
{
  for(int i=0; i<sizeof(todos);i++)
  {
    digitalWrite(todos[i], LOW);
  }
}

void mostrar()
{
  cont++;
  switch(cont)
  {
    case 1:
    {
      limpar();
      for(int i=0; i<sizeof(um);i++)
      {
       
        digitalWrite(um[i],HIGH);
        digitalWrite(10,LOW);
        digitalWrite(12,LOW);
        digitalWrite(13,LOW);
    }
        break;
    }
    case 2:
    {
      limpar();
      for(int i=0; i<sizeof(dois);i++)
      {
        digitalWrite(dois[i],HIGH);
        digitalWrite(11,LOW);
        digitalWrite(10,LOW);
      }
        break;
      }
    case 3:
    {
       limpar();
       for(int i=0; i<sizeof(tres);i++)
       {
         digitalWrite(tres[i],HIGH);
         digitalWrite(13,LOW);
         digitalWrite(10,LOW);
         digitalWrite(7,LOW);
         digitalWrite(13,LOW);
       }
       break;
    }
   
    case 4:
  {
    limpar();
    for(int i =0; i<sizeof(quatro);i++)
    {
      digitalWrite(quatro[i],HIGH);
      digitalWrite(13,LOW);
      digitalWrite(10,LOW);
      digitalWrite(12,LOW);
      digitalWrite(10,LOW);
      digitalWrite(8,LOW);
    }
    break;
  }

    case 5:
  {
    limpar();
    for(int i=0; i<sizeof(cinco);i++)
    {
      digitalWrite(cinco[i],HIGH);
      digitalWrite(13,LOW);
      digitalWrite(9,LOW);
      digitalWrite(10,LOW);
    }
    break;
  }
  case 6:
  {
    limpar();
    for(int i=0; i<sizeof(seis);i++)
    {
      digitalWrite(seis[i],HIGH);
      digitalWrite(9,LOW);
      digitalWrite(10,LOW);
    }
    break;
  }
  case 7:
  {
    limpar();
    for(int i=0; i<sizeof(sete);i++)
    {
      digitalWrite(sete[i],HIGH);
      digitalWrite(13,LOW);
      digitalWrite(12,LOW);
    }
    break;
  }
  case 8:
  {
    limpar();
    for(int i=0; i<sizeof(oito);i++)
    {
      digitalWrite(oito[i],HIGH);
      digitalWrite(10,LOW);
    }
    break;
  }
  case 9:
  {
        limpar();
    for(int i=0; i<sizeof(nove);i++)
    {
      digitalWrite(nove[i],HIGH);
      digitalWrite(13,LOW);
      digitalWrite(10,LOW);
    }
    break;
  }
 
  default:
  {
        limpar();
    for(int i=0; i<sizeof(zero);i++)
    {
      digitalWrite(zero[i],HIGH);
      digitalWrite(10,HIGH);
      digitalWrite(6,LOW);
    }
    cont=0;
    break;
  }
 
  }
}

OxyGen #

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.159
    • Tiago Rodrigues
Re: Carregar para contar
« Responder #1 em: 12 de Maio de 2010, 21:59 »
Muito bom... Parabéns! Bastante interessante para todos os que pretendem aprender a utilizar mecanismo de interrupções.