Я подключаю к wemos mini 2 датчика, кнопку и дисплей для вывода данных на сайт и на дисплей. Датчики функционируют и корректно выводят информацию.
Вот, как я подключаю дисплей и кнопку(только не к UNO, а к wemos).
Вот код:
На сайт все отлично выводит, кнопка при нажатии переключает данные на дисплее, но дисплей при выводе информации мерцает постоянно. У меня есть подозрение что это из-за какого-то delay(), но вот какого.
Вот, как я подключаю дисплей и кнопку(только не к UNO, а к wemos).
Вот код:
C++:
#include "DHT.h"
#include <Wire.h>
#include <Adafruit_BMP085.h> //Подключаем библиотеку для работы с датчиком давления. Версия 1.0.1 обязательно.
#include <ESP8266WiFi.h> // данная библиотека устанавливается вместе с менеджером платы ESP8266
#include <LiquidCrystal_I2C.h> // библиотека
bool b;
volatile int state = 0; // переменная-счётчик
unsigned long timer;
Adafruit_BMP085 bmp; //Создаём объект для нашего барометрического датчика
#define DHTPIN 14 //Указываем пин в которому мы подключили наш датчик температуры, на плате он помечен как D5
DHT dht(DHTPIN, DHT11); // Создаём объект для нашего датчика температуры указывая его подключение и модель датчика.
const char* ssid = "логин"; // Укажите здесь в кавычках название вашей точки доступа
const char* password = "пароль"; // Укажите здесь в кавычках пароль вашей точки доступа
const char* host = "www.dweet.io"; // Адрес сервера на который будем отправлять данные
void setup() {
LiquidCrystal_I2C lcd(0x27, 20, 4); // запускаем
pinMode(D7, INPUT_PULLUP);
Serial.begin(9600); //Начинаем работу с монитором порта, в скобках указывая скорость обмена данными.
delay(1500); //Контрольная пауза для загрузки
dht.begin(); //Активируем датчик температуры.
bmp.begin(); //Активируем барометрический датчик
// Подключаемся к точке доступа WiFi
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// begin инициализирует сетевые настройки библиотеки Wi-Fi и отображает текущий статус.
// ssid: SSID (идентификатор набора служб) -- это имя сети Wi-Fi, к которой вы хотите подключиться.
// pass: сети с шифрованием WPA используют пароль в виде строки для обеспечения безопасности.
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
// цикл проверки подключения к роутеру
// если нет подключения то в порт выводиться точка
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
float h = dht.readHumidity(); //создаем и записываем значение влажности
float t = dht.readTemperature(); //создаем и записываем значение температуры
float p = bmp.readPressure() * 0.00750063755419211; //создаем и записываем значение давления переводя его в мм. ртутного столба.
b = digitalRead(D7);
if (b == 0) {
state++;
LiquidCrystal_I2C lcd(0x27, 20, 4); // запускаем
lcd.init();
lcd.backlight();
}
if (state == 1){
LiquidCrystal_I2C lcd(0x27, 20, 4); // запускаем
lcd.init();
lcd.backlight(); // включаем подсветку
lcd.clear(); // очищаем экран
lcd.setCursor(5, 0); // с 5 позиции первой строки
lcd.print("Hello,");
lcd.setCursor(5, 1); // с 5 позиции второй строки
lcd.print("World!");
}
if (state == 2){
LiquidCrystal_I2C lcd(0x27, 20, 4); // запускаем
lcd.init();
lcd.backlight(); // включаем подсветку
lcd.clear(); // очищаем экран
lcd.setCursor(1, 0); // с 5 позиции первой строки
lcd.print(h);
}
if (state == 3){
LiquidCrystal_I2C lcd(0x27, 20, 4); // запускаем
lcd.init();
lcd.backlight(); // включаем подсветку
lcd.clear(); // очищаем экран
lcd.setCursor(1, 0); // с 5 позиции первой строки
lcd.print(t);
}
if (state == 4){
LiquidCrystal_I2C lcd(0x27, 20, 4); // запускаем
lcd.init();
lcd.backlight(); // включаем подсветку
lcd.clear(); // очищаем экран
lcd.setCursor(1, 0); // с 5 позиции первой строки
lcd.print(p);
}
if (state == 5){
LiquidCrystal_I2C lcd(0x27, 20, 4); // запускаем
lcd.clear(); // очищаем экран
state=0;
}
// Задержка между повторными измерениями 10 секунд
if(millis() -timer > 10000)
{
timer=millis();
Serial.print("Connecting to ");
Serial.println(host);
// Создаем TCP соединение при помощи класса WiFiClient
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
// Создает клиент, который может подключиться к указанному IP адресу с помощью client.connect().
// если клиент не может подключиться к ip адресу то в порт выводиться connection failed
}
// Отправляем запрос на сервер
client.print(String("GET /dweet/for/test?temperature=") + String(t) + "&humidity=" + String(h) + "&mmrt=" + String(p) + " HTTP/1.1\r\n"
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println(b);
}
}