/**
* @author Alexandre Sales Vasconcelos ([email protected])
* @brief Simulation with the 7-segment display based on example in figure 15.2 of the book "Programação de Sistemas Embarcados - Desenvolvendo Software para Microcontroladores em Linguagem C" by Rodrigo de Almeida.
* @version 0.1
* @date 2022-07-21
*
* @copyright Copyright (c) 2022
*
*/
#include <stdio.h>
//freeRTOS includes
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
//ESP32 includes
#include "driver/gpio.h"
//pin mapping
#define LED_a (1ULL<<0) //GPIO0
#define LED_b (1ULL<<1) //GPIO1
#define LED_c (1ULL<<2) //GPI02
#define LED_d (1ULL<<3) //GPIO3
#define LED_e (1ULL<<4) //GPIO4
#define LED_f (1ULL<<5) //GPIO5
#define LED_g (1ULL<<6) //GPIO6
#define LED_dp (1ULL<<7) //GPIO7
//hex -> 7-seg
#define DIGIT_0 (LED_a | LED_b | LED_c | LED_d | LED_e | LED_f)
#define DIGIT_1 (LED_b | LED_c)
#define DIGIT_2 (LED_a | LED_b | LED_d | LED_g | LED_e | LED_d )
#define DIGIT_3 (LED_a | LED_b | LED_c | LED_d | LED_g)
#define DIGIT_4 (LED_b | LED_c | LED_f | LED_g)
#define DIGIT_5 (LED_a | LED_c | LED_d | LED_f | LED_g)
#define DIGIT_6 (LED_a | LED_c | LED_d | LED_e | LED_f | LED_g)
#define DIGIT_7 (LED_a | LED_b | LED_c)
#define DIGIT_8 (LED_a | LED_b | LED_c | LED_d | LED_e | LED_f | LED_g)
#define DIGIT_9 (LED_a | LED_b | LED_c | LED_d | LED_f | LED_g)
#define DIGIT_A (LED_a | LED_b | LED_c | LED_e | LED_f | LED_g)
#define DIGIT_b (LED_c | LED_d | LED_e | LED_f | LED_g)
#define DIGIT_C (LED_a | LED_d | LED_e | LED_f)
#define DIGIT_d (LED_b | LED_c | LED_d | LED_e | LED_g)
#define DIGIT_E (LED_a | LED_d | LED_e | LED_f | LED_g)
#define DIGIT_F (LED_a | LED_e | LED_f | LED_g)
//main task
void app_main(void)
{
// Enables GPIOx as output.
REG_WRITE(GPIO_ENABLE_REG, LED_a | LED_b | LED_c | LED_d | LED_e | LED_f | LED_g | LED_dp);
// Set all outputs to high.
REG_WRITE(GPIO_OUT_W1TS_REG, LED_a | LED_b | LED_c | LED_d | LED_e | LED_f | LED_g | LED_dp);
static const unsigned long long vetor_led[] = {DIGIT_0, DIGIT_1, DIGIT_2, DIGIT_3, DIGIT_4, DIGIT_5, DIGIT_6,
DIGIT_7, DIGIT_8, DIGIT_9, DIGIT_A, DIGIT_b, DIGIT_C, DIGIT_d, DIGIT_E, DIGIT_F};
while(true)
{
for (int i = 0; i <= 15; i++) {
REG_WRITE(GPIO_OUT_W1TC_REG, vetor_led[i]);
vTaskDelay(1000 / portTICK_PERIOD_MS); //delay 1 secon
REG_WRITE(GPIO_OUT_W1TS_REG, 0x00ff);
}
}
}
Loading
franzininho-wifi
franzininho-wifi