Почему жк-дисплей не показывает никакого выхода?

ОБНОВИТЬ: Жидкокристаллический дисплей загорится только тогда, когда все мои компоненты будут расположены в правом нижнем углу макета. Почему я не могу использовать всю макетную плату для своей схемы?

Я пытаюсь отобразить данные от датчика температуры и влажности на последовательном мониторе и жидкокристаллическом дисплее.

Я использую :

  • 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

, 👍1

Обсуждение

Разве вы не видите, что макет, плата arduino, жидкокристаллический дисплей, датчик и соединительные провода подключены?, @Dev Dhruv

Изображение непригодно для использования, темное и с низким разрешением. Имена контактов и пути проводов не видны четко. Это позволяет другим попытаться определить вашу проблему, и было бы неплохо приложить еще немного усилий, чтобы четко донести их до вас. Также может быть хорошей идеей описать вашу настройку в тексте (например, какие контакты подключены к каким другим контактам)., @StarCat

Кстати, похоже, что на вашем Arduino нет ничего подключенного к контактам (I2C) SDA и SCL, но это трудно разобрать. Также невозможно проверить, правильно ли подключены контакты питания вашего ЖК-дисплея., @StarCat

Хорошо, я поместил новую картинку и объяснил, как все устроено. Есть ли ошибка в моем коде или в моей схеме?, @Dev Dhruv

Вы пробовали перемещать ручку на ЖК-модуле I2C 16x2 для изменения контрастности?, @Michel Keijzers

@MichelKeijzers Я наконец-то смог заставить ЖК-дисплей загораться и отображать данные датчиков. Макет, который у меня есть, разделен примерно на 4 секции. Схема работает только в том случае, если все мои компоненты содержатся в одном квадранте., @Dev Dhruv

@MichelKeijzers Я не пробовал повернуть ручку. У меня действительно проблема с контрастом, и он слишком яркий, чтобы что-то правильно видеть. Вы знаете, какой тип отвертки подойдет?, @Dev Dhruv

Небольшая отвертка, простая, их иногда называют прецизионными отвертками. Вы также можете попробовать это ногтем пальца или чем-то небольшим., @Michel Keijzers


1 ответ


Лучший ответ:

4

Ваша макетная плата-одна из тех, у которых линии питания/GND прерываются между колонками 31 и 33. Я тоже однажды попал в эту ловушку. Если вы посмотрите внимательно, то увидите, что синие и красные линии прерываются в середине платы. Просто поместите провода между этими штифтами, чтобы преодолеть разрыв.

,

Спасибо! Я никогда не думал, что моя проблема настолько тривиальна!, @Dev Dhruv

Рад, что смог помочь. Если этот ответ помог вам, пожалуйста, не забудьте принять его., @PMF