Добрый день. Мне очень срочно нужна помощь. Я мало что понимаю в программировании микроконтроллеров. Мне нужно написать код для подключения датчика dht22 к ATMega328p с выводом показаний на дисплей LM016L. Сложность в том что схему нужно собрать в Proteus. Я написал код и вроде ошибок не выдает, но дисплей ничего не показывает. Не могу понять, с подключением пинов проблема, в схеме или в коде. Прошу помощи
Настолько срочно, что Вам некогда было прочитать как здесь вставляется код?
Pin #9 - PB6?
Так пусть за вас сделают другие - есть коммерческий отдел.
Тест на IQ ты уже провалил. С треском.
Причём, по всем пунктам - в неумении вставлять код на форуме, в неумении пользоваться Протеусом, в схемотехнике, в программировании. Ужос.(
#include <Wire.h>
#include<DHT.h> // подключаем библиотеку для использования dht функций
#include<LiquidCrystal.h>
const int rs=8, en=9, d4=12, d5=13, d6=9, d7=10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// номера контактов, к которым подключен ЖК дисплей
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
byte degree[8] =
{
0b00011,
0b00011,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
void setup()
{
lcd.begin(16, 2);
lcd.createChar(1, degree);
lcd.clear();
lcd.print(" Humidity ");
lcd.setCursor(0,1);
lcd.print(" Measurement ");
delay(2000);
lcd.clear();
lcd.print("Circuit Digest ");
delay(2000);
}
void loop()
{
Serial.print("Temperature = ");
Serial.print('t');
Serial.print(" ");
Serial.print((char)176);
Serial.print("C | ");
Serial.print("C | ");
Serial.println("*C ");
Serial.print("Humidity =");
Serial.print('h');
Serial.print(" % ");
Serial.print(" ");
lcd.setCursor(0, 0);//установим курсор
lcd.print(dht.readHumidity());
lcd.setCursor(5,0);
lcd.print(" %");
lcd.setCursor(0, 1);//установим курсор
lcd.print(dht.readTemperature());
lcd.setCursor(5,1);
lcd.print(" *C");
delay(500);
}
en=9, ... , d6=9
Не очень понимаю как это прописать. Вам кажется что проблема только с пинами? Я просто уже запутался как их прописать и как подсоединить дисплей в протеусе чтобы он выдавал результат с датчика
Что прописать? Какие принты?
Ничерта непонятно.
На схеме посмотрите en и d6 дисплея - они на один выход МК подсоединены?
Ну, Вам же уже сказали:
А Вы, вместо того, чтобы помочь, …
Вот то ли дело на англоязычных форумах!
так на этом учат сапоги носить! Не?
#include <Wire.h>
#include<DHT.h> // подключаем библиотеку для использования dht функций
#include<LiquidCrystal.h>
const int rs=8, en=9, d4=10, d5=11, d6=12, d7=13;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// номера контактов, к которым подключен ЖК дисплей
#define DHTPIN 3
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
dht.begin();
lcd.begin(16, 2);
lcd.clear();
lcd.print(" Humidity ");
lcd.setCursor(0,1);
lcd.print(" Temperature ");
delay(2000);
lcd.clear();
lcd.print("Circuit Digest ");
delay(2000);
}
void loop()
{
Serial.print("Temperature = ");
Serial.print('t');
Serial.print(" ");
Serial.print((char)176);
Serial.print("C | ");
Serial.print("C | ");
Serial.println("*C ");
Serial.print("Humidity =");
Serial.print('h');
Serial.print(" % ");
Serial.print(" ");
lcd.setCursor(0, 0);//установим курсор
lcd.print(dht.readHumidity());
lcd.setCursor(5,0);
lcd.print(" %");
lcd.setCursor(0, 1);//установим курсор
lcd.print(dht.readTemperature());
lcd.setCursor(5,1);
lcd.print(" *C");
delay(500);
}
Я разобрался с подключением дисплея, но он все равно не выводит результат. В чем проблема?
Не разобрались Чтобы разобраться, разберитесь с подключением библиотеки.
В той её версии, что у меня, попросту нет используемого Вами конструктора LiquidCrystal (rs, en, d4, d5, d6, d7);
. Единственный конструктор с 6-ю параметрами, это:
LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
Если DHT не подключать, то NaN - это нормально.
В 42 и 47 строке пока выведите какие-нибудь числа, пока нет датчика.
И чего Вы в программировании, а не в песочнице?