#include <stdio.h>
#include "pico/stdlib.h"
#define atraso 20
#define segmento_a 10 // Segmento A do display de 7 segmentos
#define segmento_b 11 // Segmento B do display de 7 segmentos
#define segmento_c 13 // Segmento C do display de 7 segmentos
#define segmento_d 14 // Segmento D do display de 7 segmentos
#define segmento_e 15 // Segmento E do display de 7 segmentos
#define segmento_f 9 // Segmento F do display de 7 segmentos
#define segmento_g 8 // Segmento G do display de 7 segmentos
#define digito1 2 // digito milhar
#define digito2 3 // digito centena
#define digito3 4 // digito dezena
uint8_t display[7] = { segmento_a, segmento_b, segmento_c, segmento_d, segmento_e, segmento_f, segmento_g };
uint8_t display_digito[3] = {digito3,digito2,digito1};
bool display_valor[10][7] = { {1,1,1,1,1,1,0}, // nro 0
{0,1,1,0,0,0,0}, // nro 1
{1,1,0,1,1,0,1}, // nro 2
{1,1,1,1,0,0,1}, // nro 3
{0,1,1,0,0,1,1}, // nro 4
{1,0,1,1,0,1,1}, // nro 5
{1,0,1,1,1,1,1}, // nro 6
{1,1,1,0,0,0,0}, // nro 7
{1,1,1,1,1,1,1}, // nro 8
{1,1,1,1,0,1,1} // nro 9
};
uint16_t contador,tmp;
uint8_t nro[3] ;
int main () {
// Configuracao
stdio_init_all();
// configura o segmento como saída digital
for ( uint8_t index = 0 ; index <7 ; index++){
gpio_init( display[index] );
gpio_set_dir( display[index] , GPIO_OUT);
}
for ( uint8_t index = 0 ; index <4 ; index++){
gpio_init( display_digito[index] );
gpio_set_dir( display_digito[index] , GPIO_OUT);
gpio_put( display_digito[index] , 1);
}
contador = 0;
while (true){
tmp = contador;
for ( uint8_t index=0; index<3; index++){
nro[index] = tmp % 10;
tmp = tmp /10;
}
for (uint8_t repetir=0; repetir<5; repetir++){
for (int digito = 0; digito< 3; digito++){
for (int index = 0; index< 8; index++){
gpio_put( display[index] , display_valor[nro[digito]][index]);
}
gpio_put( display_digito[digito], 0);
sleep_ms( atraso );
gpio_put( display_digito[digito], 1);
}
}
contador++;
if (contador >999){
contador = 0;
}
}
}