#include <Keypad.h> // подключаем нашу библиотеку
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем дисплей
#include <Adafruit_BMP085.h>
#include «DHT.h»
#include <avr/sleep.h>
#define DHTPIN 11//Определяем пин датчика
#define DHTTYPE DHT22//объёвляем тип датчика(11 или 22)
DHT dht(DHTPIN, DHTTYPE);
Adafruit_BMP085 bmp;
int led = 10;
const byte ROWS = 4; //число строк у нашей клавиатуры
const byte COLS = 4; //число столбцов у нашей клавиатуры
char hexaKeys[ROWS][COLS] = {
{‘1’, ‘4’, ‘7’, ‘*’}, // здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования
{‘2’, ‘5’, ‘8’, ‘0’},
{‘3’, ‘6’, ‘9’, ‘#’},
{‘A’, ‘B’, ‘C’, ‘D’}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {9, 8, 7, 6}; //к каким выводам подключаем управление столбцами
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);//Чтобы светило ярко
lcd.begin();
Serial.begin(9600);//Запускаем порт
Serial.println(«АЦМ 4.0»);//вывод на порт сообщения
Serial.println(«Автор: Лосев А.В.»);
dht.begin();//запускаем датчик
lcd.setCursor(0, 0);
lcd.print(«ACM 4.0»);
lcd.setCursor(0, 1);
lcd.print(«by Ant_Losev»);
delay(1500);
lcd.clear();
}
void loop() {
char customKey = customKeypad.getKey(); //переменная которая считывает с клавиатуры
//*****************Датчики*************************************
//****************dht****************
float h = dht.readHumidity();//Переменная h хранит инфу о влажности
// Чтение влажности и присвоение переменной h
float t = dht.readTemperature();//Переменная t хранит инфу о темп.
// Чтение температуры и присвоение переменной t
// Проверка ошибок.
if (isnan(h) || isnan(t)) //если h или t не получены, то выдаст ошибку
{
Serial.println(«Ошибка связи с датчиком»);//на порт
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«DHT Error»);
delay(700);
lcd.clear();
return;//возврат к условию
}
if (!bmp.begin()) {
Serial.println(«Could not find a valid BMP085 sensor, check wiring!»);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(«BMP Error»);
delay(1000);
lcd.clear();
return;
}
//Давление
float b = bmp.readPressure();//переменная чтения давления
float c = bmp.readAltitude();//переменная чтения высоты
float e = b * 0.0075; //заводим переменную хранения давления
//*********Вывод на порт полученной инфы*********
Serial.print(«Влажность: «);
Serial.print(h);
Serial.println(» %\t»);
Serial.print(«Температура: «);
Serial.print(t);
Serial.println(» *C «);
Serial.print(«Davlenie = «);
Serial.print(e);//датчик считает в паскалях. Переводим в миллиметры ртутного столба
Serial.println(» mm RS»);
Serial.print(«Visota = «);
Serial.print(c);
Serial.println(» metrs»);
Serial.println(«****************»);
//**********Вывод на дисплей****************
lcd.setCursor(0, 0);
lcd.print(«Vvedite komandu»);
if (customKey == ‘A’) //условие зажигания диода нажата кнопка А
{
lcd.backlight();
lcd.setCursor(0, 1);
lcd.print(«svet on»);
delay(800);
lcd.clear();
digitalWrite(led, 1);
}
if (customKey == ‘B’) //условие погасания диода
{
lcd.backlight();
lcd.setCursor(0, 1);
lcd.print(«svet off»);
delay(800);
lcd.clear();
digitalWrite(led, 0);
}
if (customKey == ‘2’)
{
lcd.backlight();
lcd.setCursor(0, 1);
lcd.print(customKey);
delay(800);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(«Temperatura»);
lcd.setCursor(0, 1);
lcd.print(t);
lcd.setCursor(5, 1);
lcd.print(«C»);
delay(1600);
lcd.clear();
}
if (customKey == ‘1’)
{
lcd.backlight();
lcd.setCursor(0, 1);
lcd.print(customKey);
delay(800);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(«Vlazhnost»);
lcd.setCursor(0, 1);
lcd.print(h);
lcd.setCursor(5, 1);
lcd.print(«%»);
delay(1600);
lcd.clear();
}
if (customKey == ‘3’)
{
lcd.backlight();
lcd.setCursor(0, 1);
lcd.print(customKey);
delay(800);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(«Davlenie»);
lcd.setCursor(0, 1);
lcd.print(e);
lcd.setCursor(5, 1);
lcd.print(«mm»);
delay(1600);
lcd.clear();
}
if (customKey == ‘4’)
{
lcd.backlight();
lcd.setCursor(0, 1);
lcd.print(customKey);
delay(800);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(«Visota»);
lcd.setCursor(0, 1);
lcd.print(c);
lcd.setCursor(5, 1);
lcd.print(«m «);
delay(1600);
lcd.clear();
}
if(customKey==’#’){
lcd.backlight();
}
if (customKey==’*’){
lcd.noBacklight();
}
}
Аноним
Норм. Скинь библиотеки
Anton_Losev
В следующей записи будет!