Почему жк-дисплей не показывает никакого выхода?
ОБНОВИТЬ: Жидкокристаллический дисплей загорится только тогда, когда все мои компоненты будут расположены в правом нижнем углу макета. Почему я не могу использовать всю макетную плату для своей схемы?
Я пытаюсь отобразить данные от датчика температуры и влажности на последовательном мониторе и жидкокристаллическом дисплее.
Я использую :
- Arduino Uno R3
- I2C 16x2 ЖК-модуль
- 3-контактный датчик DHT11
Вот мой код :
#include <dht.h> // инициализировать библиотеку цифровых датчиков температуры и sensor library ("DHTlib")
#include <LiquidCrystal_I2C.h> // инициализировать библиотеку жидкокристаллических дисплеев ("LiquidCrystal I2C")
#include <Wire.h> //intialize the wire library
/* the first parameter is the I2C address
* the second parameter is how many columns are on your screen
* the third parameter is how many rows are on your screen
*/
LiquidCrystal_I2C lcd(0x27, 16, 2);
dht DHT; // создайте дескриптор для вызова функций из библиотеки датчиков
#define DHT11_PIN 7 // присвоить цифровой пин датчику
float tempC; // создать переменную для хранения температуры в градусах цельсия
float TempF; // создать переменную для хранения температуры в градусах фаренгейта
float Humi; // создать переменную для хранения влажности
void setup()
{
lcd.init(); // инициализировать жидкокристаллический дисплей
lcd.backlight(); // включить подсветку ЖК
pinMode(DHT11_PIN,INPUT); // настроить пин датчика в качестве входа для считывания данных
Serial.begin(9600); // установить скорость передачи данных в битах в секунду для последовательной передачи данных
}
void loop()
{
// сбор данных датчика
int chk = DHT.read11(DHT11_PIN); // хранение данных датчика в переменной
tempC = DHT.temperature; // температура хранения в градусах Цельсия
TempF = 9/5 * tempC + 32; // температура хранения в Градусах Фаренгейта
Humi = DHT.humidity; // store relative humidity as a percentage
// отображение данных датчика на LCD
lcd.setCursor(0,0); //указание экрану написать в верхней строке
lcd.print("T: ");
lcd.print(TempC); // печать температуры в градусах Цельсия
// lcd.print(TempF); // print the temperature in Fahrenheit
lcd.print((char)223); // print the degree symbol
lcd.print(" C");
// lcd.print(" F");
lcd.setCursor(0,1); // указание экрану написать на нижнем ряду
lcd.print("H: ");
lcd.print(Humi); // вывести влажность
lcd.print(" %");
// display sensor data on the serial monitor
Serial.print("Temperature = ");
Serial.print(tempC); // печать температуры в градусах Цельсия
// Serial.print(TempF); // печать температуры в градусах Фаренгейта
Serial.print("\xc2\xb0"); // печать символа степени
Serial.println(" C");
// Serial.println(" F");
Serial.print("Humidity = ");
Serial.print(Humi); // print the humidity
Serial.println(" %");
delay(2000); //задержка получения следующих значений датчика в течение 2 секунд
}
Мои перемычки соединены следующим образом:
- DHT plus → красный плюс строка
- DHT middle → digital pin 7
- DHT минус → синий минус строка
- ЖК-дисплей GND → синий минус строка
- ЖК-дисплей VCC → красный плюс строка
- ЖК-дисплей SDA → аналоговый вывод A4
- ЖК-дисплей SCL → аналоговый вывод A5
- Красный плюс ряд → 5V pin
- Синий минус ряд → Вывод GND
@Dev Dhruv, 👍1
Обсуждение1 ответ
Лучший ответ:
Ваша макетная плата-одна из тех, у которых линии питания/GND прерываются между колонками 31 и 33. Я тоже однажды попал в эту ловушку. Если вы посмотрите внимательно, то увидите, что синие и красные линии прерываются в середине платы. Просто поместите провода между этими штифтами, чтобы преодолеть разрыв.
Спасибо! Я никогда не думал, что моя проблема настолько тривиальна!, @Dev Dhruv
Рад, что смог помочь. Если этот ответ помог вам, пожалуйста, не забудьте принять его., @PMF
- Как преобразовать код Arduino во встроенный код C/C++
- Использование YS-IRTM с Arduino Uno
- Онлайн-проблема подключения Arduino к базе данных MySQL
- Печать содержимого файла SD - карты на ЖК-дисплее
- Это правильный способ мигать символом на ЖК-дисплее?
- код для автоматической двери
- Первое использование Kuman 3,5-дюймового TFT-экрана модели SC3A-NEW-UK с Arduino
- Как устранить сообщение об ошибке "assignment of function 'void digitalWrite (uint8_t, uint_8)"?
Разве вы не видите, что макет, плата arduino, жидкокристаллический дисплей, датчик и соединительные провода подключены?, @Dev Dhruv
Изображение непригодно для использования, темное и с низким разрешением. Имена контактов и пути проводов не видны четко. Это позволяет другим попытаться определить вашу проблему, и было бы неплохо приложить еще немного усилий, чтобы четко донести их до вас. Также может быть хорошей идеей описать вашу настройку в тексте (например, какие контакты подключены к каким другим контактам)., @StarCat
Кстати, похоже, что на вашем Arduino нет ничего подключенного к контактам (I2C) SDA и SCL, но это трудно разобрать. Также невозможно проверить, правильно ли подключены контакты питания вашего ЖК-дисплея., @StarCat
Хорошо, я поместил новую картинку и объяснил, как все устроено. Есть ли ошибка в моем коде или в моей схеме?, @Dev Dhruv
Вы пробовали перемещать ручку на ЖК-модуле I2C 16x2 для изменения контрастности?, @Michel Keijzers
@MichelKeijzers Я наконец-то смог заставить ЖК-дисплей загораться и отображать данные датчиков. Макет, который у меня есть, разделен примерно на 4 секции. Схема работает только в том случае, если все мои компоненты содержатся в одном квадранте., @Dev Dhruv
@MichelKeijzers Я не пробовал повернуть ручку. У меня действительно проблема с контрастом, и он слишком яркий, чтобы что-то правильно видеть. Вы знаете, какой тип отвертки подойдет?, @Dev Dhruv
Небольшая отвертка, простая, их иногда называют прецизионными отвертками. Вы также можете попробовать это ногтем пальца или чем-то небольшим., @Michel Keijzers