Вообщем решил сделать часы+датчик влажности. Нашел 2 скетча в интернете: 1) Скетч на часы 2) Скетч на датчик влажности Так вот вопрос как объединить эти 2 скетча в 1, чтобы на LCD выводились часы и температура. В программирование я еще новичок, попробовал сам склеить, но получалось так что у меня на LCD температура идет нормально, а часы делают задержку(пропадали и появлялись) на 1 сек. Пробовал убрать delay() стало только хуже ) Вообщем помогите соединить эти два скетча, чтобы не было задержки ) Код (C++): #include <Wire.h> #include "RTClib.h" #include <LiquidCrystal_I2C.h> RTC_DS1307 rtc; LiquidCrystal_I2C lcd(0x3F,16,2); //----------------------------------- void setup () { Wire.begin(); rtc.begin(); lcd.init(); lcd.backlight(); delay(500); lcd.setCursor(0,0); lcd.print("Welcome to ZV"); lcd.setCursor(0,1); delay(500); lcd.print("Pleasant use"); delay(2000); lcd.home(); lcd.clear(); delay(500); //----------------------------------- while (!Serial); Serial.begin(57600); if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } if (! rtc.isrunning()) { Serial.println("RTC is NOT running!"); rtc.adjust(DateTime(__DATE__, __TIME__)); } } void loop () { digitalClockDisplay(); //delay(1000); //------------------------------------------- DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); Serial.print(" now + 7d + 30s: "); // Serial.print(future.year(), DEC); Serial.print('/'); // Serial.print(future.month(), DEC); Serial.print('/'); // Serial.print(future.day(), DEC); Serial.print(' '); // Serial.print(future.hour(), DEC); Serial.print(':'); // Serial.print(future.minute(), DEC); Serial.print(':'); // Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(1000); } //--------section out to LCD 16x2-------------- void digitalClockDisplay(){ DateTime now = rtc.now(); //----------------------------------- lcd.setCursor(0, 0); lcd.print(now.hour()/10); lcd.print(now.hour()%10); lcd.setCursor(2, 0); lcd.print(':'); lcd.setCursor(3, 0); lcd.print(now.minute()/10); lcd.print(now.minute()%10); lcd.setCursor(5, 0); lcd.print(':'); lcd.setCursor(6, 0); lcd.print(now.second()/10); lcd.print(now.second()%10); //--------------------------------------- //-------------------------------------- lcd.setCursor(0, 1); lcd.print(now.day()/10); lcd.print(now.day()%10); lcd.setCursor(2, 1); lcd.print('/'); lcd.setCursor(3, 1); lcd.print(now.month()/10); lcd.print(now.month()%10); lcd.setCursor(5, 1); lcd.print('/'); lcd.setCursor(6, 1); lcd.print(now.year()%100); } Код (C++): #include <Wire.h> // Добавляем необходимые библиотеки #include <LiquidCrystal_I2C.h> #include <dht11.h> dht11 DHT; // Объявление переменной класса dht11 #define DHT11_PIN 2 // Датчик DHT11 подключен к цифровому пину номер 4 byte degree[8] = // Битовая маска символа градуса { B00111, B00101, B00111, B00000, B00000, B00000, B00000, }; LiquidCrystal_I2C lcd(0x3F,16,2); // Задаем адрес и размерность дисплея void setup() { lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку lcd.createChar(1, degree); // Создаем символ под номером 1 } void loop() { // Выводим показания влажности и температуры lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print(" h: % "); // Выводим текст lcd.setCursor(12, 0); lcd.print(DHT.humidity, 1); lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print(" t: \1C "); // Выводим текст, \1 - значок градуса lcd.setCursor(12, 1); lcd.print(DHT.temperature,1); int chk; ; // Мониторинг ошибок chk = DHT.read(DHT11_PIN); // Чтение данных switch (chk){ case DHTLIB_OK: break; case DHTLIB_ERROR_CHECKSUM: lcd.clear(); lcd.print("Checksum error"); break; case DHTLIB_ERROR_TIMEOUT: lcd.clear(); lcd.print("Time out error"); break; default: lcd.clear(); lcd.print("Unknown error"); break; } delay(1000); }
Держи! Код (C++): #include <Wire.h> #include "RTClib.h" #include <LiquidCrystal_I2C.h> RTC_DS1307 rtc; LiquidCrystal_I2C lcd(0x3F,16,2); //----------------------------------- void setup () { Wire.begin(); rtc.begin(); lcd.init(); lcd.backlight(); delay(500); lcd.setCursor(0,0); lcd.print("Welcome to ZV"); lcd.setCursor(0,1); delay(500); lcd.print("Pleasant use"); delay(2000); lcd.home(); lcd.clear(); delay(500); //----------------------------------- while (!Serial); Serial.begin(57600); if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } if (! rtc.isrunning()) { Serial.println("RTC is NOT running!"); rtc.adjust(DateTime(__DATE__, __TIME__)); } } void loop () { digitalClockDisplay(); //delay(1000); //------------------------------------------- DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); Serial.print(" now + 7d + 30s: "); // Serial.print(future.year(), DEC); Serial.print('/'); // Serial.print(future.month(), DEC); Serial.print('/'); // Serial.print(future.day(), DEC); Serial.print(' '); // Serial.print(future.hour(), DEC); Serial.print(':'); // Serial.print(future.minute(), DEC); Serial.print(':'); // Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(1000); } //--------section out to LCD 16x2-------------- void digitalClockDisplay(){ DateTime now = rtc.now(); //----------------------------------- lcd.setCursor(0, 0); lcd.print(now.hour()/10); lcd.print(now.hour()%10); lcd.setCursor(2, 0); lcd.print(':'); lcd.setCursor(3, 0); lcd.print(now.minute()/10); lcd.print(now.minute()%10); lcd.setCursor(5, 0); lcd.print(':'); lcd.setCursor(6, 0); lcd.print(now.second()/10); lcd.print(now.second()%10); //--------------------------------------- //-------------------------------------- lcd.setCursor(0, 1); lcd.print(now.day()/10); lcd.print(now.day()%10); lcd.setCursor(2, 1); lcd.print('/'); lcd.setCursor(3, 1); lcd.print(now.month()/10); lcd.print(now.month()%10); lcd.setCursor(5, 1); lcd.print('/'); lcd.setCursor(6, 1); lcd.print(now.year()%100); } #include <Wire.h> // Добавляем необходимые библиотеки #include <LiquidCrystal_I2C.h> #include <dht11.h> dht11 DHT; // Объявление переменной класса dht11 #define DHT11_PIN 2 // Датчик DHT11 подключен к цифровому пину номер 4 byte degree[8] = // Битовая маска символа градуса { B00111, B00101, B00111, B00000, B00000, B00000, B00000, }; LiquidCrystal_I2C lcd(0x3F,16,2); // Задаем адрес и размерность дисплея void setup() { lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку lcd.createChar(1, degree); // Создаем символ под номером 1 } void loop() { // Выводим показания влажности и температуры lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print(" h: % "); // Выводим текст lcd.setCursor(12, 0); lcd.print(DHT.humidity, 1); lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print(" t: \1C "); // Выводим текст, \1 - значок градуса lcd.setCursor(12, 1); lcd.print(DHT.temperature,1); int chk; ; // Мониторинг ошибок chk = DHT.read(DHT11_PIN); // Чтение данных switch (chk){ case DHTLIB_OK: break; case DHTLIB_ERROR_CHECKSUM: lcd.clear(); lcd.print("Checksum error"); break; case DHTLIB_ERROR_TIMEOUT: lcd.clear(); lcd.print("Time out error"); break; default: lcd.clear(); lcd.print("Unknown error"); break; } delay(1000); } Что ещё сюда впихнуть?WEBradio?