Мне очень понравилась эта конструкция (Говорящие часы "BABULYA CLOCK", автор Сергей Козлов,
http://radiokot.ru/circuit/digital/home/118/). Тамошняя ссылка на обсуждение вела на главную страницу Форума, поиск ничего не дал и я решил создать тему для обсуждения. Заранее прошу прощения, если сделал что-то не так и прошу модераторов поправить/перенести, если вдруг чего.
Сам я уже очень давно пользуюсь китайскими "говорящими часами", которые люблю за то, что можно даже в полной темноте пнуть бооольшую кнопку на их верхушке и узнать который час.
Но у моего любимого будильника есть ряд недостатков, которые довольно сильно мне досаждают. Мне кажется, что если добавить в конструкцию Сергея еще чуть-чуть функционала (выглядящего на фоне проделанной им работы довольно не сложной) - и дивайс станет просто СУПЕР!
А Сергей на странице с описанием конструкции намекнул, что у него есть идеи на будущее.
Вот, в копилку идей:
1) Добавить внешние часики с резервным питанием от литевой батарейки (DS1307, например. Элемент питания CR2023, держатель с любой старой материнской платы). Библиотеки есть в CVAVR. Использую такую штуку в одном дивайсе. За 2 года время корректировать ни разу не пришлось, и батарейка помирать еще не собирается. Могу прислать или выложить свои исходники. Или вот, pcf2123 = часы+календарь+будильник, интерфейс SPI.
2) Дисплей. Лучший вариант, думаю, ЖКИ. Если получится найти дисплей с тем же интерфейсом, что у микросхемы часов - добавление дисплея превратится в детскую забаву. Подсветку отдельной кнопкой (рядом с Talk). В общем, если подсветкой будет управлять контроллер, то каждый сам решит какая подсветка ему нужна (постоянная, с переменной яркостью в зависимости от времени суток и т.п.) и доработает программу.
3) БУДИЛЬНИК! Приделать будильник. Очень бы хорошо -
с сигналом нарастающей громкости. Чтобы не будил весь дом. При нажатии на кнопку "Talk" пусть произнесет время на текущей громкости сигнала. Возможно, при этом потребуется регулятор громкости сделать электронным, с предварительной установкой номинальной громкости джампером. Или резистором, воткнутым к ADC. Можно будет задавать минимальную, номинальную и максимальную громкость.
4) Будильник программируемый по дням недели. КМК, имеет смысл не "Пн-Пт,Сб,Вс", а на каждый день индивидуально. Отдельный универсальный день = "Завтра".
5) Иметь небольшой банк памяти "типовых времен" для заливки в будильник. Хотя бы 2-3 ячейки, но чтобы заливать время в будильник одной кнопкой. Скажем, вводим часы в режим "установка будильника", кнопкой "Talk" прокручиваем кольцом дни (Завтра, Пн-Пт,Сб-Вс,Пн,Вт,Ср,Чт,Пт,Сб,Вс) кнокой "Set" выбираем нужное. Кнопкой "Talk" прокручиваем ячейки памяти кольцом, до нужой, потом жмем на "Set" - и время в будильнике. При зажатой кнопке "Talk" - автопрокрутка списка.
6) ATmega48 или 88. Мегу8 уже тежеловато достать...
Как вариант реализации управления (с моего китайского будильника):
- Движковый переключатель на 4 положения - "Будильник выключен, Установка будильника, Установка часов, Будильник включен". Весьма функционально! 3 постоянных резистора и одна ножка ADC.
- Для установок времен есть кнопка "Часы", кнопка "Минуты" и кнопка "Set". Часы и минуты инкрементируются при нажатии кнопки. Зажатая кнопка - автоинкремент. Можно, при желании, сделать 4 кнопки ("Часы-, Часы+, Минуты-, Минуты+") тоже на одной ножке ADC и четырех резисторах.
По поводу щелчка при включении усилителя: может быть, управлять ключевым транзистором через RC-цепочку и плавно увеличивать питание на микросхеме?