#include <stdio.h>
#include <stdbool.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include "ultra.h"
#include <esp_err.h>
/**
* WiFi
*/
#include "esp_wifi.h"
/**
* Lib MQTT
*/
#include "mqtt_client.h"
/**
* Definições Gerais
*/
#define DEBUG 1
#define EXAMPLE_ESP_WIFI_SSID "Wokwi-GUEST"
#define EXAMPLE_ESP_WIFI_PASS ""
#define BUTTON GPIO_NUM_0
#define TOPICO_TEMPERATURA "0f1747f17b3e09c76ef702d205336495"
/**
* Variáveis Globais
*/
static const char *TAG = "main: ";
static EventGroupHandle_t wifi_event_group;
static EventGroupHandle_t mqtt_event_group;
const static int WIFI_CONNECTED_BIT = BIT0;
QueueHandle_t Queue_Button;
esp_mqtt_client_handle_t client;
/**
* Protótipos
*/
static void event_handler(void* arg, esp_event_base_t event_base,int32_t event_id, void* event_data);
static void wifi_init_sta( void );
void task_button( void *pvParameter );
void app_main( void );
esp_mqtt_client_handle_t client;
#define MAX_DISTANCE_CM 500 // 5m max
#define TRIGGER_GPIO ((gpio_num_t)17)
#define ECHO_GPIO ((gpio_num_t)16)
void task_ultrasonic(void *pvParameters)
{
ultrasonic_sensor_t sensor = {
.trigger_pin = TRIGGER_GPIO,
.echo_pin = ECHO_GPIO
};
ultrasonic_init(&sensor);
while (true)
{
float distance;
esp_err_t res = ultrasonic_measure(&sensor, MAX_DISTANCE_CM, &distance);
if (res != ESP_OK)
{
printf("Error %d: ", res);
switch (res)
{
case ESP_ERR_ULTRASONIC_PING:
printf("Cannot ping (device is in invalid state)\n");
break;
case ESP_ERR_ULTRASONIC_PING_TIMEOUT:
printf("Ping timeout (no device found)\n");
break;
case ESP_ERR_ULTRASONIC_ECHO_TIMEOUT:
printf("Echo timeout (i.e. distance too big)\n");
break;
default:
printf("%s\n", esp_err_to_name(res));
}
}
else
printf("Distance: %0.04f m\n", distance);
vTaskDelay(pdMS_TO_TICKS(500));
}
}
void setup (void) {
xTaskCreate(task_ultrasonic, "task_ultrasonic", configMINIMAL_STACK_SIZE * 3, NULL, 5, NULL);
}
void loop (void) {
vTaskDelay(pdMS_TO_TICKS(500));
}