Всем привет, Чтобы не флудить темы по метеостанции напишу, пожалуй, сюда. Так вот. делаю не большую метео в авто, столкнулся с проблемой артефактов на экране в виде 4х горизонтальных полос на фото видно где и как это выглядит, и еще одна проблема, в оставшуюся полосу хочу установить время и дату. и мне не хватает места на ардуинке(АТ128) чтобы это сделать, я понимаю что нужно оптимизировать код для того чтобы освободить место, может стоит почистить какие-то библиотеки.. И вот мои 2 вопроса, Как убрать артефакты И чем оптимизировать код?
Собственно сам код для ознакомления. большая просьба, просто ткните меня в ошибки, потому что я хочу научиться понимать и разбираться в этом, а не ездить по накатанным дорогам.
чутка поправил код, убрал "делей" и заменил на "милес" теперь полосы остались только в пустой строке между надписью и показаниями и возле знака %
#include <Wire.h>
#include <SPI.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
//#include <iarduino_RTC.h> //библиотека часов
//iarduino_RTC time (RTC_DS3231); // объявляем переменную time для работы с библиотекой, указывая название модуля RTC_DS3231
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
unsigned long last_time;
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
bool status;
status = bme.begin();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("JEEP GRAND CHEROKEE");
lcd.setCursor(0, 1);
//if (millis() % 1000 == 0) { // Если прошла 1 секунда
//lcd.print(time.gettime("d-m-Y, H:i:s, D")); // Выводим время.
//delay(1); // пока без времени, нет памяти на него еще
printValues();
if (millis() - last_time > 500) { //вместо этого куска кода раньше был delay
last_time = millis();
}
}
void printValues() {
lcd.setCursor(0, 2);
lcd.print("Tempe=");
lcd.print(round(bme.readTemperature()));
lcd.println("C ");
lcd.setCursor(10, 2);
lcd.print("Davl=");
lcd.print(round(bme.readPressure() / 100.0F * 0.750062F));
lcd.println("mm");
lcd.setCursor(0, 3);
lcd.print("Viso=");
lcd.print(round(bme.readAltitude(SEALEVELPRESSURE_HPA)));
lcd.print("m");
lcd.setCursor(10, 3);
lcd.print("Vlazh=");
lcd.print(round(bme.readHumidity()));
lcd.println("%");
}