Часы с настройкой
- Войдите на сайт для отправки комментариев
Ср, 13/02/2013 - 14:28
Здравствуйте!
Пытаюсь собрать на Arduino 2560 часы с возможностью настройки, но что то туплю с кодом. У меня есть LCD-дисплей 20х4, часовой чип DS1307 и 4 кнопки. Вывести работающие часы на экран я понял как, а подскажите, как написать код, что бы можно было кнопками устанавливать нужное время и дату.
Вот мой код часов:
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
void setup(){
lcd.begin(20, 4); //Дисплей 16Х2
RTC.stop();
RTC.set(DS1307_SEC,50); //Установить секунды
RTC.set(DS1307_MIN,18); //Установить минуты
RTC.set(DS1307_HR,02); //Установить часы
RTC.set(DS1307_DOW,07); //Установить день недели
RTC.set(DS1307_DATE,22); //Установить дату
RTC.set(DS1307_MTH,04); //Установить месяц
RTC.set(DS1307_YR,12); //Установить год
RTC.start();
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
lcd.print(":");
lcd.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
lcd.print(":");
lcd.print(RTC.get(DS1307_SEC,false));//read seconds
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(RTC.get(DS1307_DATE,false));//read date
lcd.print("/");
lcd.print(RTC.get(DS1307_MTH,false));//read month
lcd.print("/");
lcd.print(RTC.get(DS1307_YR,false)); //read year
lcd.print(" Day-");
lcd.print(RTC.get(DS1307_DOW,false));
}
Код пишится нажатием палцев на клавиши клавиатуры, когда ArduinoIDE активное окно.
Как вы подключаете кнопки к дуине?
кнопки подключены к дискретным выводам 37, 39, 41, 43 при помощи стягивающего резистра.
И это тоже не полное описание, способов подключения может быть как минимум два. Рекомендую подключать так - один контакт кнопки к выводу МК, а другой к земле и использовать внутренние подтягивающие резисторы, включающиеся программно.