#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define ON 1
#define OFF 0
#define Segment_number 7
#define Digit_number 4
int Segments[][Segment_number]={
{ON, ON, ON, ON, ON, ON, OFF}, //0
{OFF, ON, ON, OFF, OFF, OFF, OFF}, //1
{ON, ON, OFF, ON, ON, OFF, ON}, //2
{ON, ON, ON, ON, OFF, OFF, ON}, //3
{OFF, ON, ON, OFF, OFF, OFF, ON}, //4
{ON, OFF, ON, ON, OFF, ON, ON}, //5
{ON, OFF, ON, ON, ON, ON, ON}, //6
{ON, ON, ON, OFF, OFF, OFF, ON}, //7
{ON, ON, ON, ON, ON, ON, ON}, //8
{ON, ON, ON, ON, OFF, ON, ON} //9
};
gpio_num_t Segment_location[Segment_number]={
gpio_num_t GPIO_num_13, //A segment
gpio_num_t GPIO_num_14, //B segment
gpio_num_t GPIO_num_15, //C segment
gpio_num_t GPIO_num_18, //D segment
gpio_num_t GPIO_num_19, //E segment
gpio_num_t GPIO_num_21, //F segment
gpio_num_t GPIO_num_22, //G segment
}
gpio_num_t Digits[Digit_Number]={
GPIO_num_23, //digit 1
GPIO_num_25, //digit 2
GPIO_num_26, //digit 3
GPIO_num_27 //digit 4
};
void TurnOff(){
int i;
for(i=0;i<Digit_Number,i++){
gpio_set_direction(Digits[i], OUTPUT);
gpio_set_level(Digits[i], OFF);
};
void Reset(){
for(i=0;i<Digit_Number, i++){
gpio_reset_level([i]);
};
};
void Initiate(){
gpio_set_direction(gpio_num_34, INPUT);
if(GPIO_num_34==ON){
void TurnOff();
void Reset();
};
};
void Display(){
for(int i=0;i<Digit_Number;i++){
gpio_set_direction(Digits[i], OUTPUT);
gpio_set_level(Digits[i], ON);
};
};
void Counter(void *arg){
for(int i=0;i<Digit_Number;i++){
for(int j=0;j<Segment_number){
int s=0;
gpio_set_level(Segment_location[j], Segments[s][j]);
if(s<10){
s++;
};
};
const TickType_t xDelay=400/portTick_PERIOD_MS;
vTaskDelay(xDelay);
};
};
extern "C" void app_main(){
void Initiate();
void Display();
void xTaskCreate(&Display, 2000, NULL, 5, NULL);
void xTaskCreate(&Counter, 2000, NULL, 5, NULL);
}