#include <Arduino.h>
#include <DHT.h>
#include <WiFi.h>
#include <HTTPClient.h>
#define timeToSleep 5000000 // 5 секунд в мікросекундах
#define DHTPIN 23 // Визначаємо пін, до якого підключено датчик DHT
#define DHTTYPE DHT22 // Визначаємо тип датчика DHT (DHT22)
// #define UNEFFECTIVE_WORK
const char* ssid = "Wokwi-GUEST";
const char* password = "";
HTTPClient http;
float avg;
DHT dht(DHTPIN, DHTTYPE);
void readtemperature();
const float averagetemp();
float data[100] = {0,};
void setup()
{
Serial.begin(9600);
// esp_sleep_enable_timer_wakeup(timeToSleep); // Увімкнення пробудження від таймера
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED)
{
delay(1000); //Затримка 1 секунду
Serial.print("."); //Вивід "." для відображення процесу підключення
}
Serial.println("Connected");
dht.begin();
}
void readtemperature()
{
for(uint8_t i = 0; i < 100; i++)
{
data[i] = dht.readTemperature();
delay(50);
}
}
const float averagetemp()
{
float avg = 0;
float sum = 0;
// Обчислення середнього значення
for (int i = 0; i < 100; i++)
{
// Неефективні обчислення
sum
#ifdef UNEFFECTIVE_WORK
+= (float)data[i] * 1.25 + (data[i] / 3.0) - (data[i] * 0.1);
#else // Спрощений варіант (При винесенні data[i] за дужки)
+= (float)(1.48 * data[i]);
#endif
}
avg = sum / 100.0;
return avg;
}
void loop()
{
readtemperature();
uint64_t start = micros();
avg = averagetemp();
uint64_t end = micros();
uint64_t elapsed = end - start;
#ifdef UNEFFECTIVE_WORK // Elapsed time(uneffective realization): 9050 us
Serial.print("Elapsed time(uneffective realization): ");
#else // Elapsed time(effective realization): 2119 us
Serial.print("Elapsed time(effective realization): ");
#endif
Serial.print(elapsed);
Serial.println(" us");
Serial.println("here");
const String url = "https://webhook.site/a8bdbee1-10b6-43c8-abdb-661c0c49d775";
Serial.println("here");
http.begin(url.c_str());
Serial.println("here");
//Перевірка наявності Wi-Fi підключення
if (WiFi.status() == WL_CONNECTED)
{
Serial.println("here");
int httpResponseCode = http.GET();
Serial.println("here");
if (httpResponseCode > 0)
{
Serial.print ("HTTP код відповіді: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}else
{
Serial. print ("Error code: ");
Serial. println(httpResponseCode);
}
http.end();
}
Serial.println("here");
delay(30000);
// Serial.println("Змінна, що зберігається в RAM: " + String(counterRAM++));
// delay(1000);
// Serial.println("Змінну, що зберігається в RTC memory: " + String(counterRTC++));
// delay(1000);
// Serial.println("ESP32 глибоко засинає");
// delay(1000);
// esp_deep_sleep_start(); // Виклик сну (Deep-sleep)
// Serial.println("Сюди не дійде"); //ПІСЛЯ ПРОБУДЖЕННЯ МІКРОКОНТРОЛЕР ПОЧНЕ З ПОЧАТКУ
}Loading
esp32-c6-devkitc-1
esp32-c6-devkitc-1