#include <stdio.h>
#include <string.h>
#include "rom/gpio.h"
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"
#include "esp_log.h"
#define UART_NUM UART_NUM_0 // Using UART0
#define TXD_PIN 1 // Example TX pin
#define RXD_PIN 3 // Example RX pin
#define BUF_SIZE (1024)
#define led 13
#define led2 12
uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
.rx_flow_ctrl_thresh = 122,
};
void app_main() {
gpio_pad_select_gpio( led );
gpio_set_direction ( led, GPIO_MODE_OUTPUT );
gpio_pad_select_gpio( led2 );
gpio_set_direction ( led2, GPIO_MODE_OUTPUT );
uart_param_config(UART_NUM, &uart_config); // Configurar UART parameters
// Set UART pins
uart_set_pin(UART_NUM, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
uart_driver_install(UART_NUM, BUF_SIZE * 2, 0, 0, NULL, 0); // Install UART driver
uart_param_config(UART_NUM_2, &uart_config); // Configurar UART parameters
// Set UART pins
uart_set_pin(UART_NUM_2, 16, 17, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
uart_driver_install(UART_NUM_2, BUF_SIZE * 2, 0, 0, NULL, 0); // Install UART driver
uint8_t data[BUF_SIZE];
size_t buffered_len, len_2;
while (1) {
uart_get_buffered_data_len(UART_NUM_2, &len_2);
if (len_2 > 0) {
// Read data from UART
int len1 = uart_read_bytes(UART_NUM_2, data, BUF_SIZE, 20 / portTICK_PERIOD_MS);
if (len1 > 0) {
data[len1-1] = '\0'; // Null-terminate the string
if ( strcmp( (const char *) data,"teste") == 0 ){
gpio_set_level ( led, 1 );
}else if ( strcmp( (const char *) data, "apaga") == 0 ){
gpio_set_level ( led, 0 );
uart_get_buffered_data_len(UART_NUM, &buffered_len);
if (buffered_len > 0) {
// Read data from UART
int len = uart_read_bytes(UART_NUM, data, BUF_SIZE, 20 / portTICK_PERIOD_MS);
if (len > 0) {
data[len-1] = '\0'; // Null-terminate the string
if ( strcmp( (const char *) data,"on") == 0 ){
gpio_set_level ( led, 1 );
}else if ( strcmp( (const char *) data, "off") == 0 ){
gpio_set_level ( led, 0 );
}
data[len-1] = '\n';
// Write data back to UART
uart_write_bytes(UART_NUM, (const char *) data, len);
}
}
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}
data[len1-1] = '\n';
// Write data back to UART
uart_write_bytes(UART_NUM, (const char *) data, len1);
}
}
vTaskDelay(100 / portTICK_PERIOD_MS);
}