#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "rom/gpio.h"
#define decoder_A0 23 // Segmento A do display de 7 segmentos
#define decoder_A1 22 // Segmento B do display de 7 segmentos
#define decoder_A2 21 // Segmento C do display de 7 segmentos
#define decoder_A3 19 // Segmento D do display de 7 segmentos
#define decoder_ctr0 4
#define decoder_ctr1 0
#define decoder_ctr2 2
#define decoder_ctr3 15
uint8_t display[4] = { decoder_A0, decoder_A1, decoder_A2, decoder_A3 };
uint8_t display_ctr[4] = { decoder_ctr0, decoder_ctr1, decoder_ctr2, decoder_ctr3 };
void app_main(void)
{
gpio_pad_select_gpio( decoder_ctr1 );
gpio_set_direction ( decoder_ctr1, GPIO_MODE_OUTPUT );
// configura o segmento como saída digital
for ( int index = 0 ; index <4 ; index++){
gpio_pad_select_gpio( display[index] );
gpio_set_direction ( display[index], GPIO_MODE_OUTPUT );
gpio_pad_select_gpio( display_ctr[index] );
gpio_set_direction ( display_ctr[index], GPIO_MODE_OUTPUT );
}
/*uint8_t contador = 3;
printf("Value: %d: ", contador);
for (int index = 0; index< 4; index++){
printf("\tBIT[ %d ]: %d", index, (contador>>index) & 1);
gpio_set_level( display[index] , (contador>>index) & 1);
}
printf("\n");*/
for (int index = 0; index< 4; index++){
gpio_set_level( display_ctr[index] , 1);
}
vTaskDelay(50 / portTICK_PERIOD_MS);
while (true){
for (uint8_t contador = 0; contador < 10; contador++){
for (uint8_t repete =0 ; repete<10 ; repete++){
for (int index = 0; index< 4; index++){
gpio_set_level( display[index] , (contador>>index) & 1);
}
for (int index = 0; index< 4; index++){
gpio_set_level( display_ctr[index] , 0);
vTaskDelay(20 / portTICK_PERIOD_MS);
gpio_set_level( display_ctr[index] , 1);
vTaskDelay(1 / portTICK_PERIOD_MS);
}
}
}
}
}