#include <stdio.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "driver/gpio.h"
#include "driver/uart.h"
// CONSTS
static const char *TAG = "SWITCH ";
// DEFINES
#define LED1 15
#define LED2 2
#define LED3 4
#define LED4 16
#define LED5 17
#define LED6 5
#define LED7 18
#define LED8 19
#define ON 1
#define OFF 0
#define DIP_SWITCH_1 21
#define DIP_SWITCH_2 22
void GPIO_init(void)
{
//LEDS init
gpio_reset_pin(LED1);
gpio_set_direction(LED1, GPIO_MODE_OUTPUT);
gpio_reset_pin(LED2);
gpio_set_direction(LED2, GPIO_MODE_OUTPUT);
gpio_reset_pin(LED3);
gpio_set_direction(LED3, GPIO_MODE_OUTPUT);
gpio_reset_pin(LED4);
gpio_set_direction(LED4, GPIO_MODE_OUTPUT);
gpio_reset_pin(LED5);
gpio_set_direction(LED5, GPIO_MODE_OUTPUT);
gpio_reset_pin(LED6);
gpio_set_direction(LED6, GPIO_MODE_OUTPUT);
gpio_reset_pin(LED7);
gpio_set_direction(LED7, GPIO_MODE_OUTPUT);
gpio_reset_pin(LED8);
gpio_set_direction(LED8, GPIO_MODE_OUTPUT);
}
void DIP_SWITCH_init()
{
//DIP SWITCH init
gpio_reset_pin(DIP_SWITCH_1);
gpio_set_direction(DIP_SWITCH_1, GPIO_MODE_INPUT);
gpio_reset_pin(DIP_SWITCH_2);
gpio_set_direction(DIP_SWITCH_2, GPIO_MODE_INPUT);
}
void GPIO_flip(gpio_num_t LED, uint32_t LEVEL)
{
gpio_set_level(LED, LEVEL);
}
void app_main(void)
{
GPIO_init();
DIP_SWITCH_init();
int flag = 0;
while (1)
{
if((gpio_get_level(DIP_SWITCH_1) == 0) && (gpio_get_level(DIP_SWITCH_2) == 0))
{
printf("ESTADO 1\n");
GPIO_flip(LED1, ON);
GPIO_flip(LED2, ON);
vTaskDelay(2000 / portTICK_PERIOD_MS);
GPIO_flip(LED3, ON);
GPIO_flip(LED4, ON);
vTaskDelay(2000 / portTICK_PERIOD_MS);
GPIO_flip(LED5, ON);
GPIO_flip(LED6, ON);
GPIO_flip(LED7, ON);
GPIO_flip(LED8, ON);
vTaskDelay(2000 / portTICK_PERIOD_MS);
GPIO_flip(LED5, OFF);
GPIO_flip(LED6, OFF);
GPIO_flip(LED7, OFF);
GPIO_flip(LED8, OFF);
vTaskDelay(2000 / portTICK_PERIOD_MS);
GPIO_flip(LED3, OFF);
GPIO_flip(LED4, OFF);
vTaskDelay(2000 / portTICK_PERIOD_MS);
GPIO_flip(LED1, OFF);
GPIO_flip(LED2, OFF);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
if((gpio_get_level(DIP_SWITCH_1) == 0) && (gpio_get_level(DIP_SWITCH_2) == 1))
{
printf("ESTADO 2\n");
GPIO_flip(LED1, ON);
GPIO_flip(LED2, ON);
vTaskDelay(500 / portTICK_PERIOD_MS);
GPIO_flip(LED3, ON);
GPIO_flip(LED4, ON);
vTaskDelay(500 / portTICK_PERIOD_MS);
GPIO_flip(LED5, ON);
GPIO_flip(LED6, ON);
GPIO_flip(LED7, ON);
GPIO_flip(LED8, ON);
vTaskDelay(500 / portTICK_PERIOD_MS);
GPIO_flip(LED5, OFF);
GPIO_flip(LED6, OFF);
GPIO_flip(LED7, OFF);
GPIO_flip(LED8, OFF);
vTaskDelay(500 / portTICK_PERIOD_MS);
GPIO_flip(LED3, OFF);
GPIO_flip(LED4, OFF);
vTaskDelay(500 / portTICK_PERIOD_MS);
GPIO_flip(LED1, OFF);
GPIO_flip(LED2, OFF);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
if((gpio_get_level(DIP_SWITCH_1) == 1) && (gpio_get_level(DIP_SWITCH_2) == 0))
{
printf("ESTADO 3\n");
GPIO_flip(LED1, ON);
GPIO_flip(LED2, ON);
vTaskDelay(250 / portTICK_PERIOD_MS);
GPIO_flip(LED3, ON);
GPIO_flip(LED4, ON);
vTaskDelay(250 / portTICK_PERIOD_MS);
GPIO_flip(LED5, ON);
GPIO_flip(LED6, ON);
GPIO_flip(LED7, ON);
GPIO_flip(LED8, ON);
vTaskDelay(250 / portTICK_PERIOD_MS);
GPIO_flip(LED5, OFF);
GPIO_flip(LED6, OFF);
GPIO_flip(LED7, OFF);
GPIO_flip(LED8, OFF);
vTaskDelay(250 / portTICK_PERIOD_MS);
GPIO_flip(LED3, OFF);
GPIO_flip(LED4, OFF);
vTaskDelay(250 / portTICK_PERIOD_MS);
GPIO_flip(LED1, OFF);
GPIO_flip(LED2, OFF);
vTaskDelay(250 / portTICK_PERIOD_MS);
}
if((gpio_get_level(DIP_SWITCH_1) == 1) && (gpio_get_level(DIP_SWITCH_2) == 1))
{
GPIO_flip(LED1, ON);
GPIO_flip(LED2, ON);
vTaskDelay(75 / portTICK_PERIOD_MS);
GPIO_flip(LED3, ON);
GPIO_flip(LED4, ON);
vTaskDelay(75 / portTICK_PERIOD_MS);
GPIO_flip(LED5, ON);
GPIO_flip(LED6, ON);
GPIO_flip(LED7, ON);
GPIO_flip(LED8, ON);
vTaskDelay(75 / portTICK_PERIOD_MS);
GPIO_flip(LED5, OFF);
GPIO_flip(LED6, OFF);
GPIO_flip(LED7, OFF);
GPIO_flip(LED8, OFF);
vTaskDelay(75 / portTICK_PERIOD_MS);
GPIO_flip(LED3, OFF);
GPIO_flip(LED4, OFF);
vTaskDelay(75 / portTICK_PERIOD_MS);
GPIO_flip(LED1, OFF);
GPIO_flip(LED2, OFF);
vTaskDelay(75 / portTICK_PERIOD_MS);
}
}
}