"Соединение" двух кодов.

FoxyTLG
Offline
Зарегистрирован: 05.03.2020

Добрый день, помогите пожалуйста, можно ли как-то соединить эти два кода? Перенести оформление букв из кода с датчиком DHT11 в код с этим же датчиком, но и реле?

По отдельности оба кода работают, вместе - как не пытался - каждый раз новая проблема - то он выводит слова, но не выводит показания датчика, то появляются неизвестные символы.

Код'а : **********************************

b707
Offline
Зарегистрирован: 26.05.2017

FoxyTLG - вставьте оба кода в сообщение по правилам форума, лазать на сетевые диски никто не будет

FoxyTLG
Offline
Зарегистрирован: 05.03.2020

b707 пишет:

FoxyTLG - вставьте оба кода в сообщение по правилам форума, лазать на сетевые диски никто не будет


Как добавить? Не смог найти кнопку.

b707
Offline
Зарегистрирован: 26.05.2017

FoxyTLG пишет:
b707 пишет:

FoxyTLG - вставьте оба кода в сообщение по правилам форума, лазать на сетевые диски никто не будет

Как добавить? Не смог найти кнопку.

а это потому что свой приход на форум надо было начинать не с закидывания своей просьбы, а с чтения правил. Смотрите прикрепленную тему в Песочнице

FoxyTLG
Offline
Зарегистрирован: 05.03.2020

А все, понял. Спасибо. 

Просто с мобильной версии те кнопки отсутствуют.

Код 1

#include <LiquidCrystal.h>
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 8

byte PE_lit[8] =
{
  B11111,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B00000,
};

byte EL_lit[8] =
{
  B00111,
  B01001,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B00000,
};

byte ZH_lit[8] =
{
  B10001,
  B10101,
  B10101,
  B01110,
  B10101,
  B10101,
  B10001,
  B00000,
};

byte MZ_lit[8] =
{
  B10000,
  B10000,
  B10000,
  B11110,
  B10001,
  B10001,
  B11110,
  B00000,
};

byte U_lit[8] =
{
  B10001,
  B10001,
  B10001,
  B01111,
  B00001,
  B00001,
  B11110,
  B00000,
};

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.createChar(1, PE_lit);
  lcd.createChar(2, U_lit);
  lcd.createChar(3, EL_lit);
  lcd.createChar(4, ZH_lit);
  lcd.createChar(5, MZ_lit);
  
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("TEM\1EPAT\2PA");
  lcd.setCursor(1, 1);
  lcd.print("B\3A\4HOCT\5");
}

void loop()
{

 int chk = DHT11.read(DHT11PIN);

    lcd.setCursor(12, 0);
    lcd.print((float)DHT11.temperature, 1);
    lcd.setCursor(12, 1);
    lcd.print((float)DHT11.humidity, 1);
    
    delay(2000);
}

Код 2


#include <LiquidCrystal.h>  // подключение LCD библиотеки
#define dht11_pin 14 // определение номера порта
#define relay_1 9 // определение номера порта
#define relay_2 10 // определение номера порта
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);  // инициализация библиотеки с 
                              // указанием пинов подключения к Arduino
byte read_dht11_dat() //далее функция считывания одного байта данных с датчика
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin)); // ожидание получения "1" с датчика
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 ) // если значение осталось "1" через 30 мксек
      bitSet(result, 7-i); // запись бита в результат
    while (digitalRead(dht11_pin)); // ожидание окончания "1"
  }
  return result;
}

void setup()
{
  lcd.begin(16, 2);  // установка количества символов и строк дисплея
  pinMode(dht11_pin, OUTPUT); //установка порта dht11_pin в режим выхода
  digitalWrite(dht11_pin, HIGH);  //установка на нем высокого уровня
  pinMode(relay_1, OUTPUT); //установка порта relay_1 в режим выхода
  digitalWrite(relay_1, HIGH);  // установка высокого уровня
  pinMode(relay_2, OUTPUT); //установка порта relay_1 в режим выхода
  digitalWrite(relay_2, HIGH);  // установка высокого уровня
}

void loop()
{
 byte dht11_dat[5];   
 byte dht11_in;
 byte i;
 int curr_temp, curr_hum;
 //-------------------------------------------------------------------------
 digitalWrite(dht11_pin, LOW); // установка низкого уровня
 delay(18); // задержка 18 мс
 digitalWrite(dht11_pin, HIGH);  // установка высокого уровня
 delayMicroseconds(1);  // задержка 1 мкс
 pinMode(dht11_pin, INPUT);  //установка порта dht11_pin в режим входа
 delayMicroseconds(40);  // задержка 40 мкс  
if (digitalRead(dht11_pin))  // далее проверка получения сигналов готовности датчика
  {
    lcd.setCursor(0, 0); // установка курсора
    lcd.print("cond. 1 not met"); // вывод текста на дисплей
    delay(1000);
    return;
  }
  delayMicroseconds(80);
if (!digitalRead(dht11_pin))
  {
    lcd.setCursor(0, 0); // установка курсора
    lcd.print("cond. 2 not met"); // вывод текста на дисплей
    return;
  }   
  delayMicroseconds(80); // задержка 80 мкс   
for (i=0; i<5; i++)                   // прием 5 байт данных 
  {  dht11_dat[i] = read_dht11_dat();}  // с помощью функции read_dht11_dat  
  pinMode(dht11_pin, OUTPUT);  //установка порта dht11_pin в режим выхода
  digitalWrite(dht11_pin, HIGH);  // установка высокого уровня
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];// проверка контрольной суммы
if(dht11_dat[4]!= dht11_check_sum) // если она не совпадает:
  {
    lcd.setCursor(0, 0); // установка курсора
    lcd.print("Checksum error"); // вывод текста ошибки
  }
  curr_temp=int(dht11_dat[2]); // запись значения температуры в переменную
  curr_hum=int(dht11_dat[0]); // запись значения влажности в переменную
  //-------------------------------------------------------------
  lcd.clear();
  lcd.setCursor(0, 0); // установка курсора
  lcd.print("Temp:"); // вывод текста на дисплей
  lcd.setCursor(5, 0); // установка курсора
  lcd.print(curr_temp); // вывод теммературы на дисплей
  lcd.setCursor(8, 0); // установка курсора
  lcd.print("Hum:"); // вывод текста на дисплей
  lcd.setCursor(12, 0); // установка курсора
  lcd.print(curr_hum); // вывод теммературы на дисплей \
  //---------------------------------------------------------------
if (curr_temp<16) // если температура ниже 16 градусов:
  {digitalWrite(relay_1, LOW);}  // включаем реле 1
else // если нет:
  {digitalWrite(relay_1, HIGH);}  // выключаем реле 1
  //----------------------------------------------------------------
if (curr_temp>30) // если температура выше 30 градусов:
  {digitalWrite(relay_2, LOW);} // включаем реле 2
else // если нет:
  {digitalWrite(relay_2, HIGH);} // выключаем реле 2
  //----------------------------------------------------------------
  delay(2000); // задержка 2 с 
}  

 

FoxyTLG
Offline
Зарегистрирован: 05.03.2020

Каждый раз появляется новая проблема. То на половине слова слетает кодировка, то показатели считывает, текста нет, то текст есть, а показателей нет.

 

Часа 2 мучился... Их вообще возможно соединить?

b707
Offline
Зарегистрирован: 26.05.2017

тут все элементарно. Массивы в строчка 6 -64 первого кода перенести в начало второго. Строчки 70-74 из первого setup вставить d setup второго. И все

Можете выводить свое слово "ВЛАЖНОСТ"

FoxyTLG
Offline
Зарегистрирован: 05.03.2020

Спасибо. Строчки 76-80 не нужны? Просто они же отвечают за вывод этих двух слов

b707
Offline
Зарегистрирован: 26.05.2017

FoxyTLG пишет:

Спасибо. Строчки 76-80 не нужны? Просто они же отвечают за вывод этих двух слов

нужны конечно

FoxyTLG
Offline
Зарегистрирован: 05.03.2020

b707 пишет:

нужны конечно

Кхм. Не совсем верно написал* Строчки 74-78 из первого кода*