collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Carregar para contar  (Lida 3952 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:



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.372
    • 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.