// LCD1602 to Arduino Uno connection example
/*
#include <LiquidCrystal.h>
#include <DHT.h> //Подключение библиотеки датчика влажности и температуры
#define DHTPIN 6 //Подключение пина для датчика влажности и температуры
#define DHTTYPE DHT22 //Определение версии датчика
DHT dht(DHTPIN, DHTTYPE); //Определение датчика
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); // пины для лсд
//Функция считывания освещенности возвращает люксы float
float lux()
{
const float GAMMA = 0.7;
const float RL10 = 50;
int analogValue = analogRead(A0);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
return lux;
}
//Вывод температуры - dht.readTemperature(); !!ВОЗВРАЩАЕТ float
//Вывод влажности - dht.readHumidity(); !!ВОЗВРАЩАЕТ float
void setup()
{
lcd.begin(16, 2);
pinMode(6, INPUT); // Пин для датчика Влажности и температуры БЕЗ ЭТОГО НЕ РАБОТАЕТ
dht.begin(); // Еще определение датчика БЕЗ ЭТОГО ТОЖЕ НЕ РАБОТАЕТ
}
void loop()
{
bool menu = digitalRead(0); // переменная для свитча меню (Свитч вправо 0, свитч влево 1)
//функция смены режимов
if (menu == 0)
{
}
else
{
}
}
*/
#include <LiquidCrystal.h>
#include <DHT.h>
#define DHTPIN 6
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
bool menu = false; // Переменная для свитча меню (0 - вывод данных, 1 - управление)
int currentParameter = 0; // Текущий выбранный параметр (0 - температура, 1 - влажность, 2 - освещенность)
// Функция считывания освещенности возвращает люксы float
float lux()
{
const float GAMMA = 0.7;
const float RL10 = 50;
int analogValue = analogRead(A0);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
return lux;
}
void setup()
{
lcd.begin(16, 2);
pinMode(6, INPUT);
dht.begin();
pinMode(2, INPUT); // Кнопка "Утвердить"
pinMode(3, INPUT); // Кнопка "Назад"
pinMode(4, INPUT); // Кнопка "Вверх"
pinMode(5, INPUT); // Кнопка "Вниз"
}
void displayData()
{
lcd.clear();
lcd.setCursor(0, 0);
if (currentParameter == 0)
{
lcd.print("Temp: ");
lcd.print(dht.readTemperature());
lcd.print(" C");
delay(100);
}
else if (currentParameter == 1)
{
lcd.print("Humidity: ");
lcd.print(dht.readHumidity());
lcd.print(" %");
delay(100);
}
else if (currentParameter == 2)
{
lcd.print("Lux: ");
lcd.print(lux());
delay(100);
}
lcd.setCursor(0, 1);
// Здесь вы можете добавить вывод других параметров, если необходимо.
}
void forwardAction()
{
lcd.setCursor(0, 0);
lcd.print("Forward Action ");
}
void backwardAction()
{
lcd.setCursor(0, 0);
lcd.print("Backward Action ");
}
void approveAction()
{
lcd.setCursor(0, 0);
lcd.print("Approve Action ");
}
void loop()
{
menu = digitalRead(0);
if (menu == 0)
{
displayData(); // Вывод данных о температуре, влажности и освещенности
}
else
{
if (digitalRead(2) == HIGH)
{
currentParameter++;
if (currentParameter > 2)
{
currentParameter = 0; // Вернуться к первому параметру после последнего.
}
}
else if (digitalRead(3) == HIGH)
{
//backwardAction(); // Выполнить действие "Назад"
currentParameter--;
if (currentParameter < 0)
{
currentParameter = 2; // Перейти к последнему параметру после первого.
}
else if (digitalRead(4) == HIGH)
{
// Выполнить действие "Вверх"
}
else if (digitalRead(5) == HIGH)
{
// Выполнить действие "Вниз"
}
}
}
}