domingo, 10 de janeiro de 2016

Display 7 segmentos com contagem regressiva

Faaaaaaaala galerinha do MPA!

Feliz 2016 pra todos e vocês! E vamos ao primeiro POST do ano! 

Hoje vamos trabalhar com o display de 7 segmentos com contagem regressiva de 9 a 0 .

Podemos utilizar esse display para poder fazer alguma contagem específica antes de iniciar alguma ação que desejamos realizar.

Pois então vamos ao que interessa.... o material:

- 1 Arduíno (Uno, MEGA, etc)
- 1 Cabo USB AB(onde será feita a conexão com o nosso computador)
- 1 LED 
- Jumpers macho-macho
- 1 Protoboard
- 3 Resistor 330R
- 1 Display 7 segmentos

Tentei reproduzir da forma mais clara possível o protótipo, mas devido a questões técnicas as ligações ficaram um pouco confusas. Mas segue o protótipo abaixo:


Tomem bastante cuidado com a ligação dos jumpers, porque na hora de fazer a ligação, eu mesmo cometi alguns enganos ligando eles nos pinos errados, e caso estejam fora de ordem, muito provavelmente não irá funcionar.

Agora chegou a hora do implementar nosso código:

// Display LCD 7 segmentos
// Contagem regressiva de 9 a 0
byte seven_seg_digits[10][7] = {
  {0,0,0,0,0,0,1}, // = 0
  {1,0,0,1,1,1,1}, // = 1
  {0,0,1,0,0,1,0}, // = 2
  {0,0,0,1,0,1,0}, // = 3
  {1,0,0,1,1,0,0}, // = 4
  {0,1,0,1,0,0,0}, // = 5
  {0,1,0,0,0,0,0}, // = 6
  {0,0,0,1,1,1,1}, // = 7
  {0,0,0,0,0,0,0}, // = 8
  {0,0,0,1,1,0,0}, // = 9
};
    

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  writeDot(0); // Inicia com o sinal das casas decimais desligado
}

void writeDot(byte dot){
  digitalWrite(9,dot);
}

void sevenSegWrite(byte digit){
  byte pin = 2;
  for(byte segCount = 0; segCount < 7 ; ++segCount){
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;    
  }
}

// the loop routine runs over and over again forever:
void loop() {

  for(byte count = 10; count > 0; --count){
    delay(1000);
    sevenSegWrite(count - 1);
  }
  
  delay(4000);  // aguarda por 4 segundos

}

Feito isto, podemos fazer o upload do nosso código para nosso ARDUÍNO e ver o resultado: 


É isso aí juventude! Mais um post para entusiastas em ARDUÍNO, para começarmos 2016 com o pé direito!

Mandem suas críticas, elogios e sugestões para podermos melhorar SEMPRE!

Até a próxima pessoal!

Nenhum comentário:

Postar um comentário