Доброго времени, никак не пойму как правильно доделать режим сна. Проснутся и заснуть должен от кнопки на третьем пине.
#include "LowPower.h"
#include <Wire.h> // Подключаем библиотеку Wire
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку LiquidCrystal_I2C
#include <DallasTemperature.h> // Подключаем библиотеку DallasTempature
#define DS18B20 2 // Указываем, к какому выводу подключена DQ
byte simvol[8] = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размер дисплея
OneWire oneWire(DS18B20);
DallasTemperature sensors(&oneWire);
// Используем пин 3 для пробуждения
const int wakeUpPin = 3;
void wakeUp(){
// Обработчик прерывания от пина 3
}
void setup()
{
// Настраиваем наш пин на ввод и задействуем подтягивающий резистор
pinMode(wakeUpPin, INPUT_PULLUP);
sensors.begin(); // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
lcd.setCursor(2,0); // Устанавливаем курсор на 1 строку, ячейка 2
lcd.print("TEMP"); // Выводим текст
lcd.setCursor(2,1); // Устанавливаем курсор на 2 строку, ячейка 2
lcd.print("www.rchip.ru"); // Выводим текст
}
void loop()
{
// Разрешаем внешние прерывание на пине 3 при низком уровне
attachInterrupt(0, wakeUp, LOW);
// Переводим Ардуино в режим power down с отключением модулей ADC и BOD
// Остальные модули в этом режиме уже отключены
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
// При низком логическом уровне на пине 2 будет сгенерировано прерывание
// и после вызова обработчика wakeUp() выполнение данной функции продолжится
// Временно запретим прерывания, они пока не нужны
detachInterrupt(0);
lcd.createChar(1, simvol); // Создаем символ под номером 1
sensors.requestTemperatures(); // Считываем показания температуры
lcd.setCursor(7,0); // Устанавливаем курсор на 1 строку, ячейка 7
lcd.print(sensors.getTempCByIndex(0)); // Выводим показания температуры
lcd.setCursor(12,0); // Устанавливаем курсор на 1 строку, ячейка 12
lcd.print("\1"); // Выводим символ градуса
lcd.setCursor(13,0); // Устанавливаем курсор на 1 строку, ячейка 13
lcd.print("C"); // Выводим текст
delay(5000); // Пауза в течение 5 секунд.
}