#include <LiquidCrystal_I2C.h> // подключаем библу
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес, столбцов, строк
#include <microDS18B20.h>
MicroDS18B20<2> sensor;
float prevT;
#include <SPI.h>
#include <SD.h>
const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера
File myFile;
void setup() {
lcd.init(); // инициализация
lcd.backlight(); // включить подсветку
sensor.requestTemp(); // запрос температуры
}
lcd.print("0123456789");
lcd.setCursor(0, 0);
for(byte i=0;i<16;i++){lcd.setCursor(i, 0);lcd.write(95);delay(200);}
delay(2000); // ждём
}
// подключение библиотек SPI и SD:
void loop() {
sensor.requestTemp(); // запрос температуры
delay(1000); // ждём
lcd.home(); // курсор в 0,0
lcd.print(prevT, 1); // вывод prevT с точностью 1 знак
lcd.write(223); // градус
lcd.print(' '); // пробел
lcd.write(126); // стрелочка
lcd.print(' '); // пробел
lcd.print(sensor.getTemp(), 1); // текущая температура
lcd.write(223); // градус
//printTime(); // выводим время
time();
}
// функция вывода времени
void printTime() {
lcd.setCursor(0, 1); // курсор на вторую строку
int sec = millis() / 1000; // общее количество секунд
byte thisM = sec / 60; // количество минут
if (thisM < 10) lcd.print(0); // ведущий 0
lcd.print(thisM); // минуты
lcd.print(':'); // двоеточие
byte thisS = sec % 60; // количество секунд
if (thisS < 10) lcd.print(0); // ведущий 0
lcd.print(thisS); // секунды
}
void time(){
uint32_t sec = millis()*10; // полное количество секунд с запуска
byte tS = (sec % 3600ul) % 60ul; // секунды
byte tM = (sec % 3600ul) / 60ul; // минуты
byte tH = (sec / 3600ul) % 24ul; // часы
byte tD = (sec / 3600ul) / 24ul; // дни;
lcd.setCursor(0,1);
if(tD==0){
lcd.print("___");
}else{
if(tD<10){
lcd.print("_");
lcd.print(tD);
lcd.print("d");
}else{
lcd.print(tD);
lcd.print("d");
}
}
if (tH < 10) lcd.print(0);
lcd.print(tH);
lcd.print(":");
if (tM < 10) lcd.print(0);
lcd.print(tM);
lcd.print(":");
if (tS < 10) lcd.print(0);
lcd.print(tS);
}