"Соединение" двух кодов.
- Войдите на сайт для отправки комментариев
Чт, 05/03/2020 - 16:03
Добрый день, помогите пожалуйста, можно ли как-то соединить эти два кода? Перенести оформление букв из кода с датчиком DHT11 в код с этим же датчиком, но и реле?
По отдельности оба кода работают, вместе - как не пытался - каждый раз новая проблема - то он выводит слова, но не выводит показания датчика, то появляются неизвестные символы.
Код'а : **********************************
FoxyTLG - вставьте оба кода в сообщение по правилам форума, лазать на сетевые диски никто не будет
FoxyTLG - вставьте оба кода в сообщение по правилам форума, лазать на сетевые диски никто не будет
Как добавить? Не смог найти кнопку.
FoxyTLG - вставьте оба кода в сообщение по правилам форума, лазать на сетевые диски никто не будет
а это потому что свой приход на форум надо было начинать не с закидывания своей просьбы, а с чтения правил. Смотрите прикрепленную тему в Песочнице
А все, понял. Спасибо.
Просто с мобильной версии те кнопки отсутствуют.
Код 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 с }Каждый раз появляется новая проблема. То на половине слова слетает кодировка, то показатели считывает, текста нет, то текст есть, а показателей нет.
Часа 2 мучился... Их вообще возможно соединить?
тут все элементарно. Массивы в строчка 6 -64 первого кода перенести в начало второго. Строчки 70-74 из первого setup вставить d setup второго. И все
Можете выводить свое слово "ВЛАЖНОСТ"
Спасибо. Строчки 76-80 не нужны? Просто они же отвечают за вывод этих двух слов
Спасибо. Строчки 76-80 не нужны? Просто они же отвечают за вывод этих двух слов
нужны конечно
нужны конечно
Кхм. Не совсем верно написал* Строчки 74-78 из первого кода*