#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif
#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#include "DHT.h"
#define DHTPIN 16
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void TaskBlink1( void *pvParameters );
void TaskBlink2( void *pvParameters );
void TaskBlink3( void *pvParameters );
void setup() {
// Init
lcd.init();
lcd.backlight();
dht.begin();
pinMode(12, INPUT);
Serial.begin(115200);
xTaskCreatePinnedToCore(
TaskBlink1
, "TaskBlink1"
, 2048
, NULL
, 2
, NULL
, ARDUINO_RUNNING_CORE);
xTaskCreatePinnedToCore(
TaskBlink2
, "TaskBlink2"
, 2048
, NULL
, 1
, NULL
, ARDUINO_RUNNING_CORE);
xTaskCreatePinnedToCore(
TaskBlink3
, "TaskBlink3"
, 2048
, NULL
, 1
, NULL
, ARDUINO_RUNNING_CORE);
}
float nhietdo = 0;
void loop(){}
void TaskBlink1(void *pvParameters)
{
(void) pvParameters;
for (;;)
{
float t = dht.readTemperature();
nhietdo = t;
Serial.println(t);
}
}
void TaskBlink2(void *pvParameters)
{
(void) pvParameters;
for (;;)
{
lcd.setCursor(0, 0);
lcd.print("Nhiet do: " + String(nhietdo));
}
}
void TaskBlink3(void *pvParameters)
{
(void) pvParameters;
pinMode(19, OUTPUT);
for (;;)
{
// These constants should match the photoresistor's "gamma" and "rl10" attributes
const float GAMMA = 0.7;
const float RL10 = 50;
// Convert the analog value into lux value:
int analogValue = analogRead(34);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
if(lux > 1000){
digitalWrite(19, HIGH);
}else{
digitalWrite(19, 0);
}
}
}