Как кнопками регулировать время выведенное на дисплей?
- Войдите на сайт для отправки комментариев
Втр, 11/12/2018 - 23:00
#include <DS1307new.h> #include <Wire.h> // Подключаем стандартную библиотеку LiquidCrystal #include <LiquidCrystal.h> // Инициализируем объект-экран, передаём использованные // для подключения контакты на Arduino в порядке: // RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); int hourplus = 7; int hourminus = 6; void setup() { Serial.begin(9600); if(RTC.isPresent()){ // обнаружен ли модуль? Serial.println("RTC Ready"); // все хорошо } else { Serial.println("Error!!!! RTC Module not found"); // сообщаем о проблеме while(1); // и останавливаем скетч } lcd.begin(16, 2); // запускаем библиотеку экрана } void loop() { RTC.getTime();// получить время от модуля printTimeToSerial(); // выводим полученное время в лог printTimeToLCD();; // выводи время на экран doSerialCommands(); // слушаем и выполняем команды из Serial if(digitalRead(hourplus )==HIGH ) { RTC.hour = RTC.hour+1; printTimeToSerial(); if(RTC.hour >23)RTC.hour =23; } if(digitalRead(hourminus)==HIGH ) { RTC.hour = RTC.hour-1; printTimeToSerial(); if(RTC.hour <0)RTC.hour =0; } } // Выводит текущие время в Serial void printTimeToSerial(){ byte static prevSecond=0; // тут будем хранить, сколько секунд было при прошлом отчете if(RTC.second!=prevSecond){ // что-то делаем только если секунды поменялись Serial.print(RTC.hour); // часы Serial.print(":"); // разделитель Serial.print(RTC.minute); Serial.print(":"); Serial.println(RTC.second); prevSecond=RTC.second; // запомнили когда мы "отчитались" } } // Выводит текущие время на LCD void printTimeToLCD(){ byte static prevSecond=0; // тут будем хранить, сколько секунд было при выводе if(RTC.second!=prevSecond){ // что-то делаем только если секунды поменялись lcd.setCursor(5,0); // устанавливаем позицию курсора if(RTC.hour<10)lcd.print(" "); lcd.print(RTC.hour); // часы lcd.print( (RTC.second % 2)?" ":":"); // разделитель моргает if(RTC.minute<10)lcd.print(0); // лидирующий ноль, если нужен lcd.print(RTC.minute); prevSecond=RTC.second; // запомнили когда мы "отчитались" } } // устанавливает часы модуля на какое-то заранее определенное время void setSomeTime(){ RTC.stopClock();// останавливаем часы RTC.fillByHMS(19,15,0); // "подкручиваем стрелки на 19:15:00 RTC.setTime();// отправляем "подкрученное время" самому модулю RTC.startClock(); // и опять запускаем часы } // слушает из Serial команды и выполняет их. Каждая команда - один символ. // доступны команды: // s - установить время указанное в функции setSomeTime() void doSerialCommands(){ if(Serial.available()){ // что-нибудь пришло? char ch=Serial.read(); // читаем что пришло switch(ch){ case 's': // команда установки времени setSomeTime(); // устанавливаем break; // тут, в будущем, мы можем добавлять дополнительные команды default:; // на неизвестную команду - ничего не делаем }; } }
ты где этот скетч взял?