Что то тут не так с millis() датчик часто собирает данные, каждую секунду а в коде я сравниваю millis() - lasttime > temptime . Но все равно ардуино каждую секунду обращаеться к датчику. Помогите выявить ошибку) Код (C++): #include <Wire.h> // Подключаем библиотеку Wire #include <LiquidCrystal_I2C.h> // Подключаем библиотеку LiquidCrystal_I2C #include <DallasTemperature.h> // Подключаем библиотеку DallasTempature #define DS18B20 0 // Указываем, к какому выводу подключена DQ byte simvol[8] = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса byte P[8] = {0b11111,0b10001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000}; // создаем русскую букву "П" byte Y[8] = {0b10001,0b10001,0b10001,0b01111,0b00001,0b00001,0b01110,0b00000}; // создаем русскую букву "У" byte Z[8] = {B01111,B10001,B10001,B01111,B00101,B01001,B10001,B00000,}; // буква Я int lasttime; const int temptime = 60000; int temp1; LiquidCrystal_I2C lcd(0x38,20,4); // Задаем адрес и размер дисплея OneWire oneWire(DS18B20); DallasTemperature sensors(&oneWire); unsigned long TimeLightOffOn = 86397000; int buttonPin = 7; // пин для кнопки boolean isTurnOn = true; boolean isLedEnabled = false; int flag; void setup() { sensors.begin(); // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса lcd.init(); //lcd.backlight() ; // Инициализация lcd pinMode(buttonPin, INPUT_PULLUP); lcd.createChar(1,simvol); // генерируем символ lcd.createChar(2, P); lcd.createChar(3, Y); lcd.createChar(4, Z); lasttime = 0; } void loop() { boolean isButtonUp = digitalRead(buttonPin); byte Seconds = ((millis()+TimeLightOffOn)/1000UL)%60; byte Minutes = (((millis()+TimeLightOffOn)/1000UL)/60UL)%60; byte Hours = (((millis()+TimeLightOffOn)/1000UL)/3600UL)%24; if (millis() - lasttime > temptime);{ sensors.requestTemperatures(); temp1 = sensors.getTempCByIndex(0); lasttime = millis (); } if (isTurnOn && !isButtonUp) { isButtonUp = digitalRead(buttonPin); if (!isButtonUp) { flag++ ; } if (flag > 1){ flag = 0; } } isTurnOn = isButtonUp; if (flag == 1){ //lcd.clear(); lcd.setCursor(0,0); lcd.print("TEM"); lcd.print(char(2)); // выводим русскую букву "П" lcd.print("EPAT"); // используем латинские буквы lcd.print(char(3)); // выводим русскую букву "У" lcd.print("PA: "); lcd.setCursor(12,0); lcd.print(temp1); lcd.print("\1"); // Выводим символ градуса lcd.print("C"); lcd.print(" "); } if (flag == 0) { lcd.setCursor(0, 0); lcd.print("BPEM"); lcd.print(char(4)); lcd.print(":"); lcd.setCursor(6, 0); lcd.print(Hours); lcd.print(':'); lcd.print(Minutes); lcd.print(':'); lcd.print(Seconds); lcd.print(" "); lcd.print(" "); } }
Привет! Парни подскажите, весь моск уже сломал, при заливке скетча на ардуино(NANO), самые первые строки в черном поле, красным цветом сообщают о библиотеке которая включена (include) из такой-то траектории, это ошибка или нет? при этом чуть ниже уже белым цветом пишет сколько места занимает скетч и оставшееся место...(пока не понимаю принципа перезаливки скетча, он каким то образом перезаписывает старый? или встает следом) сильно не пинайте я ток учусь...