Display de 7-Segmentos – 1 Digito

(english version below)

Atenção:

Criei uma biblioteca para facilitar o uso do led de 7-Segmentos. Depois de ler este artigo dê uma olhada em Biblioteca para 7-Segment

—–

Neste post vamos ver como utilizar um led de 7-Segmentos.

Adquiri alguns no HuInfinito  (preço por volta de R$ 1,30)

Também disponível no TiggerComp (preço por volta de R$$ 1,90)

Além disso o kit básico do Arduino do DealExtreme também vem com 1

Existem 2 tipos de led de 7-segmentos. O anodo comum e o catodo comum. Este que vou usar neste post é um ANODO COMUM.

(esta imagem foi obtida no site http://www.8051projects.info/exp2.asp)

Você pode observar que um dos pinos (3 ou 8) deve ser ligados ao VCC (5V). Na versão catodo comum, um desses pinos deve ser ligado ao Gnd (ground).

É importante observar que deve ser adicionado um resistor (no exemplo usei um de 220 ohms)

O código fonte abaixo demonstra como acionar os leds. O código a seguir foi baseado no codigo encontrado no Hacktronics que é para o modelo Catodo Comum, fiz a adaptação necessária para o Anodo Comum.

// http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html

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,0,1,1,0 },  // = 3
                                 { 1,0,0,1,1,0,0 },  // = 4
                                 { 0,1,0,0,1,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
                               };

void setup() {                
  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 "ponto" (o signal de casas decimais led) 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;   
   } 
} 

void loop() {   
  for (byte count = 10; count > 0; --count) {
    delay(1000);
    sevenSegWrite(count - 1); 
  }

  delay(4000);   // Aguarda 4 segundos para recomeçar a contar
}

Se voce estiver usando um Catodo comum, troque a definição de seven_seg_digits pela correspondente abaixo

byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                 { 0,1,1,0,0,0,0 },  // = 1
                                 { 1,1,0,1,1,0,1 },  // = 2
                                 { 1,1,1,1,0,0,1 },  // = 3
                                 { 0,1,1,0,0,1,1 },  // = 4
                                 { 1,0,1,1,0,1,1 },  // = 5
                                 { 1,0,1,1,1,1,1 },  // = 6
                                 { 1,1,1,0,0,0,0 },  // = 7
                                 { 1,1,1,1,1,1,1 },  // = 8
                                 { 1,1,1,0,0,1,1 }   // = 9
                               };

(ENGLISH)

Attention:

I have created a library to make using 7-Segmento LEDs easier. After reading this article check it at  Library for 7-Segment

—–

I will show in this post how to use a 7-Segmento 1 digit LED

You can buy one in Tayda Eletronics  for +- US$ 0,50

The basic Arduino kit from DealExtreme comes with one too.

The are 2 kinds of 7-segmento LED. The common anode and the common cathode. I will show how to use the COMMON ANODE.

(image from  http://www.8051projects.info/exp2.asp)

As you can see the pins 3 or 8 must be connected to VCC (use a resistor like 220 ohms). In the Common Cathode, one of those pins must be connected to GND (ground).

As already said it is important to add a resistor (220 ohms in this example)

The code will show how to turn on the leds. This code is based in one from Hacktronics used for the Common Cathode that I adapted to the Common Anode.

// http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html

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,0,1,1,0 },  // = 3
                                 { 1,0,0,1,1,0,0 },  // = 4
                                 { 0,1,0,0,1,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
                               };

void setup() {                
  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);  // Turn the "dot" off
}

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;   
   } 
} 

void loop() {   
  for (byte count = 10; count > 0; --count) {
    delay(1000);
    sevenSegWrite(count - 1); 
  }

  delay(4000);   // Wait 4 seconds
}

If you are using the Common Cathode, just replace the definition of seven_seg_digits for:

byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                 { 0,1,1,0,0,0,0 },  // = 1
                                 { 1,1,0,1,1,0,1 },  // = 2
                                 { 1,1,1,1,0,0,1 },  // = 3
                                 { 0,1,1,0,0,1,1 },  // = 4
                                 { 1,0,1,1,0,1,1 },  // = 5
                                 { 1,0,1,1,1,1,1 },  // = 6
                                 { 1,1,1,0,0,0,0 },  // = 7
                                 { 1,1,1,1,1,1,1 },  // = 8
                                 { 1,1,1,0,0,1,1 }   // = 9
                               };

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s