LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: almamater em 24 de Fevereiro de 2011, 11:57

Título: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 24 de Fevereiro de 2011, 11:57
Olá!

Há uns tempos fiz um display de temperatura com 2 displays de segmentos e usei para isso a informação do Ricardo Dias: http://ricardo-dias.com/pt-pt/node/103 (http://ricardo-dias.com/pt-pt/node/103) e funcionou na perfeição.

Neste momento achei piada a uns Displays de segmentos e comprei, mas não sei se vou conseguir usar o mesmo código.

Os displays são estes:

Dual Digit Numeric Display (Common Cathode) (http://iteadstudio.com/store/index.php?main_page=product_info&cPath=35_39&products_id=284)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg14.imageshack.us%2Fimg14%2F6659%2F4digit2.th.jpg&hash=b1c2a531b5dd32f96feb417a6a0eb61ce47cbc66) (http://img14.imageshack.us/i/4digit2.jpg/)

e

Four Digit Numeric Display (Common Cathode) (http://iteadstudio.com/store/index.php?main_page=product_info&cPath=35_39&products_id=205)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg818.imageshack.us%2Fimg818%2F218%2F2digit2.th.jpg&hash=eae887e83b65344f3b0f6a81f63ab4a0f2294bd5) (http://img818.imageshack.us/i/2digit2.jpg/)


No de 4 digitos, os 8 pinos estão partilhados entre os 4 digitos, como fazer para acender o 2º em vez do 1º por exemplo? basta usar um único 74HC595 ? ou não posso fazer desta forma..?
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: beirao em 24 de Fevereiro de 2011, 12:04
Não consigo ver as imagens...

Mas neste caso, com 4 pins no display consegues ter 16 combinações, ou seja, cada pin não corresponde a um segmento do display mas cada combinação desses 4 pins corresponde a um numero... (claro que acima do 9 não vem o 10, mas sim uma letra normalmente)
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: beirao em 24 de Fevereiro de 2011, 12:08
Ah... agora já vejo as imagens! :P

Tinha percebido que tinhas dito 4 pins.. mas disseste 4 displays!

Então neste caso tens na mesma os 8 pins, mas ligados entre os displays.. ou seja: por exemplo, os 4 segmentos A dos displays estão "shuntados"

Para podermos colocar numeros diferentes em cada um tens da fazer varrimento pelos 4... ou seja, acendes um display (colocas o cátodo desse display à massa e os restantes a Vcc) e metes lá o numero que queres, depois acendes o outro (cátodo deste à massa e os outros todos a Vcc), e por aí fora. Tens de fazer este varrimento rápido, de modo que não se perceba que os displays tão sempre a acender e a apagar... normalmente podes usar uma freq de 50Hz que já fica bem..
Podes também baixar o valor da resistência a colocar em cada pin de cada segmento, pois como vai estar menos tempo ligado, precisa de mais corrente, senão podes não ver nada...

Fiz-me entender?
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 24 de Fevereiro de 2011, 12:14
Tou a perceber a ideia.. então mas a nível de ligações tenho de usar 1 só 74HC595 ? a minha confusão é como fazer acender 1 displays e apagar os outros..

P.S.: ah não tinha lido o resto do teu post.. vou ler
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: beirao em 24 de Fevereiro de 2011, 12:22
Sim, utilizas só um 74hc595

Imagina que queres meter la o numero 1234 nos quatros displays

ligas o catodo do display1 a GND, e utilizas o 74hc595 como utilizavas dantes e colocas la o numero 1
Depois, colocas o cátodo do display1 a Vcc e o cátodo do display2 a GND, e utilizas o 74hc595 para enviar o numero 2.. e por aí fora
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 24 de Fevereiro de 2011, 12:24
Sim, utilizas só um 74hc595

Imagina que queres meter la o numero 1234 nos quatros displays

ligas o catodo do display1 a GND, e utilizas o 74hc595 como utilizavas dantes e colocas la o numero 1
Depois, colocas o cátodo do display1 a Vcc e o cátodo do display2 a GND, e utilizas o 74hc595 para enviar o numero 2.. e por aí fora

Já se está a fazer luz, apenas uma coisa.. ao fazer isto:

"ligas o catodo do display1 a GND, e utilizas o 74hc595 como utilizavas dantes e colocas la o numero 1
Depois, colocas o cátodo do display1 a Vcc e o cátodo do display2 a GND, e utilizas o 74hc595 para enviar o numero 2.. e por aí fora
"

Ao colocar o cátodo no display 2 desligo o cátodo do display 1 certo? o número que tinha enviado não é apagado?

Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 24 de Fevereiro de 2011, 12:25
Esquece!
 Percebida a ideia! Logo vou testar  ;D  Obrigadão!!

P.S.: Colocar o cátodo a VCC não vai queimar nada?  :P
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: microbyte em 24 de Fevereiro de 2011, 12:29
Ao colocar o cátodo no display 2 desligo o cátodo do display 1 certo? o número que tinha enviado não é apagado?
Eu já vi que percebeste, mas fica para as pessoas que leiam mais tarde.

Quando ligas apenas 1 dos cátodos a GND, desligas os outros. Se tivesses uma câmara de muitos frames por segundo ias conseguir ver que na realidade só acende 1 dos displays de cada vez. Contudo, fazes isto tão rápido de forma a que o olho humano não consiga perceber esse "piscar".
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 24 de Fevereiro de 2011, 12:33
Ao colocar o cátodo no display 2 desligo o cátodo do display 1 certo? o número que tinha enviado não é apagado?
Eu já vi que percebeste, mas fica para as pessoas que leiam mais tarde.

Quando ligas apenas 1 dos cátodos a GND, desligas os outros. Se tivesses uma câmara de muitos frames por segundo ias conseguir ver que na realidade só acende 1 dos displays de cada vez. Contudo, fazes isto tão rápido de forma a que o olho humano não consiga perceber esse "piscar".


Pois, tenho de testar! Mas para manter o display 1 com o número que lhe dei acesso tenho então de colocar o Cátodo com VCC certo? dessa forma consigo colocar os números nos restantes mantendo os anteriores acessos.. é isto?
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: beirao em 24 de Fevereiro de 2011, 17:05
Sim.

Exemplo de 4 displays:

 - Cátodo do display1 a GND e os restantes a VCC: Display1 está ligado, envias o numero que queres. Restantes displays desligados

- Cátodo do display2 a GND e os restantes a VCC: Display2 está ligado, envias o numero que queres. Restantes displays desligados

- Cátodo do display3 a GND e os restantes a VCC: Display3 está ligado, envias o numero que queres. Restantes displays desligados

- Cátodo do display4 a GND e os restantes a VCC: Display4 está ligado, envias o numero que queres. Restantes displays desligados.

Os displays vao tar a piscar, mas como é tão rápido, não vês a piscar...
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 24 de Fevereiro de 2011, 17:47
Sim.

Exemplo de 4 displays:

 - Cátodo do display1 a GND e os restantes a VCC: Display1 está ligado, envias o numero que queres. Restantes displays desligados

- Cátodo do display2 a GND e os restantes a VCC: Display2 está ligado, envias o numero que queres. Restantes displays desligados

- Cátodo do display3 a GND e os restantes a VCC: Display3 está ligado, envias o numero que queres. Restantes displays desligados

- Cátodo do display4 a GND e os restantes a VCC: Display4 está ligado, envias o numero que queres. Restantes displays desligados.

Os displays vao tar a piscar, mas como é tão rápido, não vês a piscar...

Achas que dá para ligar os 4 cátodos a pinos digitais do Arduino e se estiverem em LOW o display respectivo acende em HIGH apaga. ?
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: beirao em 24 de Fevereiro de 2011, 18:17
Não deve dar, pkausa da corrente.

Mas experimenta. Se não der, tens de usar um transístor. Mas não te esqueças de usar resistências nos segmentos dos displays!
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: senso em 24 de Fevereiro de 2011, 22:42
Pelo esquema que esta no site da Itead é simples de se ver como se liga isso, tem um ânodo comum a cada display, metes no ânodo um transístor e metes um transístor a high, metes os dados para esse mesmo display, desligas o transístor, ligas o outro, metes os dados do outro display, basta fazeres isso a mais de 20-25 vezes por segundo(super fácil para o micro-controlador) e a persistência de visão do nosso olho faz com que pareça que estão os dois displays ligados, se ligas o anodo a um pino do Arduino vais queimar só o pino se tivers muita muita sorte, se não morre o Atmega
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 25 de Fevereiro de 2011, 09:44
Ok, será um esquema como este então só que em vez do LCD é o Cátodo do display respectivo:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg193.imageshack.us%2Fimg193%2F4256%2Fbkcontrol.th.png&hash=79b0ce69bd37ae5948f0fd605060b3c4a8c71ffa) (http://img193.imageshack.us/i/bkcontrol.png/)
http://img193.imageshack.us/i/bkcontrol.png/ (http://img193.imageshack.us/i/bkcontrol.png/)

Vou testar..
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 30 de Maio de 2011, 03:28
Ena, finalmente decidi testar isto  :P

Liguei apenas o de 2 displays sem qualquer shiftOut e directamente aos pinos do Arduino , funciona bem tirando a parte de mostrar 2 números ao mesmo tempo, neste caso 'enganar' o olho humano:

Código utilizado:

Código: [Seleccione]
// Seven-segment LED Display
// Common ANODE pins 5 and 10

//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// Segments that make each number when lit:
// 0 => ABCDEF
// 1 => BC
// 2 => ABDEG
// 3 => ABCDG
// 4 => BCFG
// 5 => ACDFG
// 6 => ACDEFG
// 7 => ABC
// 8 => ABCDEFG
// 9 => ABCDFG

// Arduino digital pins used to light up
// corresponding segments on the LED display

#define A 4
#define B 9
#define C 8
#define D 6
#define E 7
#define F 5
#define G 2

#define T1 10 //Transistor 1
#define T2 11 //Transistor 2


// Common ANODE;
// OFF when pin is high
// and ON when pin is LOW

#define ON LOW
#define OFF HIGH

int ms = 800;

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(T1, OUTPUT);
  pinMode(T2, OUTPUT);
  digitalWrite(T1, LOW);
  digitalWrite(T2, LOW);
}

void loop() {
  digitalWrite(T2, LOW);
  digitalWrite(T1, HIGH);
  zero();
  one();
  two();
  three();
  four();
  five();
  six();
  seven();
  eight();
  nine();
  digitalWrite(T1, LOW);
  digitalWrite(T2, HIGH);
  zero();
  one();
  two();
  three();
  four();
  five();
  six();
  seven();
  eight();
  nine();

//Aqui é onde queria mostrar o número zero em ambos:

  digitalWrite(T2, LOW);
  digitalWrite(T1, HIGH);
  zeroSemDelay();
  digitalWrite(T1, LOW);
  digitalWrite(T2, HIGH);
  zeroSemDelay();

}

// 0 => ABCDEF
void zero() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, OFF);
  delay(ms);
}

// 1 => BC
void one() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  delay(ms);
}

// 2 => ABDEG
void two() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  delay(ms);
}

// 3 => ABCDG
void three() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  delay(ms);
}

// 4 => BCFG
void four() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  delay(ms);
}

// 5 => ACDFG
void five() {
  digitalWrite(A, ON);
  digitalWrite(B, OFF);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  delay(ms);
}

// 6 => ACDEFG
void six() {
  digitalWrite(A, ON);
  digitalWrite(B, OFF);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  delay(ms);
}

// 7 => ABC
void seven() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  delay(ms);
}

// 8 => ABCDEFG
void eight() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  delay(ms);
}

// 9 => ABCDFG
void nine() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  delay(ms);
}


// 0 => ABCDEF
void zeroSemDelay() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, OFF);
  }


Resultado:

Dual Digit Numeric Display (http://www.youtube.com/watch?v=Henm7vXSicA#)

Não deverá ser só fazer isto pois não:

Código: [Seleccione]
  digitalWrite(T2, LOW);
  digitalWrite(T1, HIGH);
  zeroSemDelay();
  digitalWrite(T1, LOW);
  digitalWrite(T2, HIGH);
  zeroSemDelay();

 

P.S.: Já agora, os transistores que usei (BD137) podem/devem ser substituídos por outros ou estão bem assim?
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 31 de Maio de 2011, 00:11
Bom.. já consegui acho eu...

Alterei o código e adaptei para:

Código: [Seleccione]
// Segments that make each number when lit:
// 0 => ABCDEF
// 1 => BC
// 2 => ABDEG
// 3 => ABCDG
// 4 => BCFG
// 5 => ACDFG
// 6 => ACDEFG
// 7 => ABC
// 8 => ABCDEFG
// 9 => ABCDFG

#define A 4
#define B 9
#define C 8
#define D 6
#define E 7
#define F 5
#define G 2

#define T1 10 //Transistor 1
#define T2 11 //Transistor 2

// Pins for A B C D E F G, in sequence
const int segs[7] = { 4, 9, 8, 6, 7, 5, 2 };

// Segments that make each number
const byte numbers[10] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0000010,
0b0000010, 0b1111000, 0b0000000, 0b0010000 };


// Common ANODE;
// OFF when pin is high
// and ON when pin is LOW

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(T1, OUTPUT);
  pinMode(T2, OUTPUT);
  digitalWrite(T1, LOW);
  digitalWrite(T2, LOW);
}

void loop() {
  for (int digit1=0; digit1 < 10; digit1++) {
    for (int digit2=0; digit2 < 10; digit2++) {
      unsigned long startTime = millis();
      for (unsigned long elapsed=0; elapsed < 400; elapsed = millis() - startTime) {   //rapidez na passagem dos números/ incremento
        lightDigit1(numbers[digit1]);
        delay(5);
        lightDigit2(numbers[digit2]);
        delay(5);
      }
    }
  }
}

void lightDigit1(byte number) {
  digitalWrite(T1, HIGH);
  digitalWrite(T2, LOW);
  lightSegments(number);
}

void lightDigit2(byte number) {
  digitalWrite(T1, LOW);
  digitalWrite(T2, HIGH);
  lightSegments(number);
}

void lightSegments(byte number) {
  for (int i = 0; i < 7; i++) {
    int bit = bitRead(number, i);
    digitalWrite(segs[i], bit);
  }
}


Resultado:
Segment Dual Digit Test II (http://www.youtube.com/watch?v=N0fnkYh2sjc#)

A única coisa que me está a fazer confusão, mas que tb não é nenhum drama, é a passagem do 6 para o 7 (no 2º display)  parece que tem uma paragem... mas já revi e revi os ciclos e parece estar tudo Ok..  ::)




Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 31 de Maio de 2011, 10:41
 ;D  ;D  ;D  ;D  ;D  :o  :o LOL

Por culpa das horas a que fiz isto e do sono associado.. nem reparei que passada do 4 para o 6.. :) Resolvido.  8)
Título: Re: Display de segmentos 4 e 2 Digitos
Enviado por: almamater em 03 de Junho de 2011, 22:54
Já agora, para alguém interessado em fazer algo parecido, aqui fica o resultado para o de 4 dígitos (ÂNODO COMUM):

Segment 4 Digit Display (http://www.youtube.com/watch?v=4x6pYL6VH7Y&feature=youtu.be#)

Passo a passo aqui: https://sites.google.com/site/grcbyte/electronica/arduino/segment-4-digit (https://sites.google.com/site/grcbyte/electronica/arduino/segment-4-digit)

Código usado:

Código: [Seleccione]
// Seven-segment LED Display
// Common ANODE pins 6, 8, 9, 12

// Segments that make each number when lit:
// 0 => ABCDEF
// 1 => BC
// 2 => ABDEG
// 3 => ABCDG
// 4 => BCFG
// 5 => ACDFG
// 6 => ACDEFG
// 7 => ABC
// 8 => ABCDEFG
// 9 => ABCDFG

// Arduino digital pins used to light up
// corresponding segments on the LED display

#define A 4
#define B 9
#define C 8
#define D 6
#define E 7
#define F 5
#define G 2

#define T1 10 //Transistor 1
#define T2 11 //Transistor 2
#define T3 12 //Transistor 3
#define T4 3  //Transistor 4


// Pins for A B C D E F G, in sequence
const int segs[7] = {4, 9, 8, 6, 7, 5, 2};

// Segments that make each number
const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101,
0b1111101, 0b0000111, 0b1111111, 0b1101111 };

// Common ANODE;
// ON when pin is high
// and OFF when pin is LOW

//#define ON HIGH
//#define OFF LOW

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(T1, OUTPUT);
  pinMode(T2, OUTPUT);
  pinMode(T3, OUTPUT);
  pinMode(T4, OUTPUT);
  digitalWrite(T1, LOW);
  digitalWrite(T2, LOW);
  digitalWrite(T3, LOW);
  digitalWrite(T4, LOW);
}

void loop() {
  for (int digit1=0; digit1 < 10; digit1++) { // DISPLAY 1
       unsigned long startTime = millis();
      for (unsigned long elapsed=0; elapsed < 400; elapsed = millis() - startTime) {   //rapidez na passagem dos números/ incremento
        lightDigit1(numbers[digit1]);
        delay(5);
        }
    }
   
     for (int digit2=0; digit2 < 10; digit2++) {  // DISPLAY 2
      unsigned long startTime = millis();
      for (unsigned long elapsed=0; elapsed < 400; elapsed = millis() - startTime) {   //rapidez na passagem dos números/ incremento
          lightDigit2(numbers[digit2]);
        delay(5);
      }
     }
     
       for (int digit3=0; digit3 < 10; digit3++) {  // DISPLAY 3
      unsigned long startTime = millis();
      for (unsigned long elapsed=0; elapsed < 400; elapsed = millis() - startTime) {   //rapidez na passagem dos números/ incremento
          lightDigit3(numbers[digit3]);
        delay(5);
      }
     }
     
       for (int digit4=0; digit4 < 10; digit4++) { // DISPLAY 4
      unsigned long startTime = millis();
      for (unsigned long elapsed=0; elapsed < 400; elapsed = millis() - startTime) {   //rapidez na passagem dos números/ incremento
          lightDigit4(numbers[digit4]);
        delay(5);
      }
     }
     
     
     
       for (int digit=0; digit < 10; digit++) {  // DISPLAY 1 + 2 + 3 + 4
      unsigned long startTime = millis();
      for (unsigned long elapsed=0; elapsed < 500; elapsed = millis() - startTime) {   //rapidez na passagem dos números/ incremento
         lightDigit1(numbers[digit]);
        delay(5);
          lightDigit2(numbers[digit]);
        delay(5);
        lightDigit3(numbers[digit]);
        delay(5);
        lightDigit4(numbers[digit]);
        delay(5);
      }       
        }
       
       
}


void lightDigit1(byte number) {
  digitalWrite(T1, HIGH);
  digitalWrite(T2, LOW);
  digitalWrite(T3, LOW);
  digitalWrite(T4, LOW);
  lightSegments(number);
}

void lightDigit2(byte number) {
  digitalWrite(T1, LOW);
  digitalWrite(T2, HIGH);
  digitalWrite(T3, LOW);
  digitalWrite(T4, LOW);
  lightSegments(number);
}

void lightDigit3(byte number) {
  digitalWrite(T1, LOW);
  digitalWrite(T2, LOW);
  digitalWrite(T3, HIGH);
  digitalWrite(T4, LOW);
  lightSegments(number);
}

void lightDigit4(byte number) {
  digitalWrite(T1, LOW);
  digitalWrite(T2, LOW);
  digitalWrite(T3, LOW);
  digitalWrite(T4, HIGH);
  lightSegments(number);
}

void lightSegments(byte number) {
  for (int i = 0; i < 7; i++) {
    int bit = bitRead(number, i);
    digitalWrite(segs[i], bit);
  }
}