создать программу для корректного вывода значений датчиков на текстовый экран

Демьян Соколов
Offline
Зарегистрирован: 12.02.2022

Здравствуйте! Первый раз на этом форуме, хотел бы попросить помощи у знающих людей...

Учусь в 10-ом классе и делаю проект на ардуино. Задача такова - выводить данные с датчиков на текстовый экран. Вот модели датчиков, экрана и платы ардуино:

датчик углекислого газа MQ-135 (Troyka-модуль)

датчик температуры и влажности DHT-11 (Troyka-модуль)

барометр V2 (Troyka-модуль)

LCD-дисплей MT-16S2H

вот сама программа:

 
 
 
пробовал разные библиотеки, эти библиотеки на такие же датчики, но не Troyka-модуль
подскажите, что где исправить, чтобы все работало, на контакт пойду
 
эта программа только для датчика температуры и влажности, функция dht.read делает так, что данные на экране перекрывают друг друга 
 

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Во первых вставьте код в соответствии с правилами форума!
Во вторых - этого "слона" надо есть по кусочку...
С каким кусочком проблема?

Демьян Соколов
Offline
Зарегистрирован: 12.02.2022

проблема с выводом данных на текстовый экран, если берем библиотеки для troyka модулей, то при добавлении dht.read данные на экране просто наслаиваются друг на друга и идут строкой, а по задумке должны стоять на месте.

первый приведенный код использует другие библиотеки, их я уже начал использовать тогда, когда уже не имел представления, что еще можно сделать. Стоит ли переписать программу на библиотеках troyka?

и, подскажите, пожалуйста, как вставить код в соответствии с правилами?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Демьян Соколов пишет:

и, подскажите, пожалуйста, как вставить код в соответствии с правилами?

Вот, скажите, когда Вы пришли на форум, неужели у Вас не хватило ума, прежде, чем постить, зайти в "Песочницу"? Вы заходили туда? А если заходили, Вы правда не заметили там тему, которую я, на рисунке, обвёл красным?

Демьян Соколов
Offline
Зарегистрирован: 12.02.2022

Демьян Соколов пишет:

Здравствуйте! Первый раз на этом форуме, хотел бы попросить помощи у знающих людей...

Учусь в 10-ом классе и делаю проект на ардуино. Задача такова - выводить данные с датчиков на текстовый экран. Вот модели датчиков, экрана и платы ардуино:

датчик углекислого газа MQ-135 (Troyka-модуль)

датчик температуры и влажности DHT-11 (Troyka-модуль)

барометр V2 (Troyka-модуль)

LCD-дисплей MT-16S2H

вот сама программа:


#include <LiquidCrystal.h>
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(4, 6, 10, 11, 12, 13);


#include <TroykaIMU.h>
 
// Создаём объект для работы с акселерометром
Barometer barometer;


 
#include <TroykaDHT.h>


DHT dht (4, DHT11);

#include <TroykaMQ.h>
 
// имя для пина, к которому подключен датчик
#define PIN_MQ135  A0
// создаём объект для работы с датчиком и передаём ему номер пина
MQ135 mq135(PIN_MQ135);
 

void setup() {

   lcd.begin(16, 2);


   Serial.begin(9600);
   delay(1000);
  
   dht.begin(); 

   Serial.begin(9600);
  // перед калибровкой датчика прогрейте его 60 секунд
  // выполняем калибровку датчика на чистом воздухе
   mq135.calibrate();
  // при знании сопративления датчика на чистом воздухе
  // можно его указать вручную, допустим 160
  // mq135.calibrate(160);
  // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт
   Serial.print("Ro = ");
   Serial.println(mq135.getRo());

   Serial.println("Barometer begin");
    // Инициализируем барометр
   barometer.begin();
    // Выводим сообщение об удачной инициализации
   Serial.println("Initialization completed");
 

}

void loop() {
  
  lcd.clear();
  
  float pressureMillimetersHg = barometer.readPressureMillimetersHg();

  lcd.setCursor(6,1);
  lcd.print("P=");
  lcd.print(pressureMillimetersHg);
  lcd.print("mmHg");
  
  
  
  lcd.setCursor(0,0);
  lcd.print("H= ");
  int h = dht.getHumidity();
  lcd.print(h);
  
  lcd.setCursor(0,1);
  lcd.print("T= ");
  int t = dht.getTemperatureC();
  lcd.print(t);
  
  Serial.print("Ratio: ");
  Serial.print(mq135.readRatio());
  // выводим значения газов в ppm
  lcd.setCursor(6, 0);
  lcd.print("CO2:");
  lcd.print(mq135.readCO2());
  lcd.println("ppm");
  delay(2000);
}
пробовал разные библиотеки, эти библиотеки на такие же датчики, но не Troyka-модуль
подскажите, что где исправить, чтобы все работало, на контакт пойду
 
эта программа только для датчика температуры и влажности, функция dht.read делает так, что данные на экране перекрывают друг друга 
 
 
#include <LiquidCrystal.h>
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(4, 6, 10, 11, 12, 13);


 
#include <TroykaDHT.h>

DHT dht(4, DHT11);
 
void setup() {
  
  lcd.begin(16, 2);


  
  Serial.begin(9600);
  dht.begin();
}
 
void loop() {

  lcd.clear();

 
  dht.read();
  
   lcd.setCursor(0, 0);
      
   int t = dht.getTemperatureC();
      
   lcd.print("T=");
      
   lcd.print(t);
  
   lcd.setCursor(0, 1);
      
   lcd.print("Hum=");
      
   int h = dht.getHumidity();

   lcd.print(h);

   delay(1000);
  
      
}

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не очень ясно зачем Вы привели два скетча и к какому относится текст между ними.

Давайте так:

1. Вы приведёте ОДИН скетч (самый простой в котором видна проблема);
2. Вы приведёте фото экрана, чтобы было видно что там у Вас куда налазит;
3. Вы внятно опишете проблему.