Эксперимент в стиле “сам себе дизайнер”
Решил собрать часы в необычном формате — вместо стрелок и цифр они показывают время словами. Получилось что-то вроде светящейся головоломки 🙂
Идею придумал не я, часы такого типа вы можете поискать под названием WordClock.
Пока покажу просто несколько фото первого прототипа.
Если будет интересно, могу позже сделать полноценный пост с подробностями сборки, схемой, созданием печатной платы и кодом.
Пишущий время робот
Интересный робот, который напишет текущее время и день недели. Он может делать это каждую минуту или единоразово. Ссылка на робота
Часы на .JS c имитацией физики столкновений
Часы, имитирующие гравитацию и физику столкновений на .JS. Круги, отображающие “час и минуты” - падают раз в минуту, круги отображающие “секунды” -каждую секунду. В начале каждой минуты очистка холста, для избегания переполнения и информативности о текущем времени.
С элементами на экране есть возможность взаимодействовать, нажатием и удержанием левой кнопки мыши круги можно передвигать, подкидывать и т.д.. С тачскрином пока не работает.
Вот некоторые переменные, которые можно настраивать:
class FallingNumber
{
this.velY = 0; - Начальная вертикальная скорость
this.velX = Math.random() * 2 - 2; - Начальная горизонтальная скорость
this.gravity = 0.2; - Влияние гравитации на падение круга.
this.bounceFactor = 0.35; - Сила отскока при столкновении
}
draw(ctx)
{
ctx.fillStyle = - Цвет заливки шара
ctx.fillStyle = Цвет шрифта внутри шара
}
switch (type)
case 'h': // Для часов, аналогично для минут и секунд.
fontSize = 160; Размер шрифта
radius = 160; Радиус шара
Код в .html файле выложен в ТГ @MyDarkMatter1.
Я не программист и даже не IT специалист. Несовершенство кода критиковать большого смысла нет.
Есть некоторые недочеты. При изменении размеров окна в браузере, нужно обновить страницу, так как пока отсутствует авто масштабирование. Думаю, решу проблему, если будет желание и возможность.
Бортовые Часы 744-К
На борту МКС есть множество различных часов, как бортовых (связанных с бортовыми системами) так и просто ручных и автономных. Мне всегда нравились БЧК-744-К, которых на борту МКС есть несколько штук.
И я решил сделать себе для компьютера программу с точно таким же функционалом, шрифтом и т.д. Ну уж очень мне они понравились. По итогу получилось вот что
И сделал в добавок справочное окно с описанием принципа работы с ними
Все кнопки функциональны, а за тумблеры прошу простить не смог нормально их сделать.
Собственно нарыл инструкцию к часам
Все сделал на C++ Builder 2006
Скачать можно по ссылке
Самодельные часы
В общем, я захотел сделать часы, которые по механизму были похоже на стрые табло на вокзалах. Двухстворчатый дисплей - Split-flap display, или иногда просто откидной дисплей.
Перед началом изготовления была создана 3D модель часов в программе Fusion 360.
Из-за ограничения выходных портов на плате Arduino, пришлось спроектировать редуктор, чтобы 2 сегмента работали от одного двигателя. Редуктор позволяет достигнуть отношения 1 к 10 прокручивания одного сегмента к другому, что позволяет уменьшить количество двигателей, взамен на быстродействие циферблата. Например, когда на часах будет переход с 59 минут на 00 сегментам придется крутить в холостую, проходя от 60 до 99, и только после будет 00.
Часть редуктора.
В дальнейшем была заказана 3D печать некоторых деталей. Через функцию создания чертежей в Fusion 360 чертежи деталей корпуса были распечатаны, и по ним выпиливались детали корпуса. В дальнейшем, по мере сборки, детали склеивались цианакрилатным клеем. Для наглядности механизма корпус сделан прозрачным. Оси были сделаны из обычной спицы для вязания.
Чертежи створок сегментов были также распечатаны из программы и сделаны из обычной папки для бумаг, так как материал папки хорошо подходит под задачу. На створки краской нанесены цифры с помощью трафарета.
Написана программа для Arduino, которая проворачивала шаговые двигатели на определенный градус с соответствием с модулем времени. https://pastebin.com/81CVPjHF
Получившиеся часы могут также иметь другое назначение, кроме как показывать время. Их можно запрограммировать на отображение любых четырехзначных чисел, так как плата Ардуино это позволяет.
Итоговый результат
Ну и моя любимая функция обнуления
Часы на АЛ304 с BLUETOOTH. Пост №2
Всем привет! Продолжаю цикл о часах на ал304. Начало тут. Сегодня поговорим о схемотехнике и разберём отдельные узлы прибора.
Итак, так как я обычно сначала делаю плату, а потом уже рисую схему, то сегодня речь пойдет о ней.
Собственно сама схема (возможны ошибки):
Как видно, сердце моих часов - камень Атмега 328p (Далее МК). Индикаторы (с общим катодом) анодами подцеплены к МК напрямую, так как цеплять резисторы по линиям сегментом как на меня не целесообразно, резисторы в цепи катодов + сопротивление открытого транзистора достаточно, чтобы не выжечь порты МК. Коммутируется каждый сегмент классическим образом - через транзисторный ключ. Блютуз (далее БТ) включен к МК через резисторы, так как есть небольшая разница в логических уровняв между МК и БТ. В первой ревизии часов был установлен стабилизатор ASM1117-3.3, но он жрал батарею на глазах, а здесь каждый миллиампер на счету. Поэтому излишки напряжение убрал с помощью диода Шотки D1.
Зарядку для АКБ хотел сделать на ТР4056 но он по размерах мне не очень да и греется сильно. Гугление привело меня в сторону BRCL3160. Принцип работы прост - стоит компаратор , опорный источник напряжения и "ключ". При достижение на выходе VDD напряжения заряда, которое задается падением напряжения на резисторе R9, ключ размыкается и заряд не идет. Диод D2 препятствует возможному разряду АКБ из за утечки (какой - вопрос, но так спокойнее). Схема цепи заряда состоит из трех элементов и подключается паралельно АКБ, за искобчением "входного" контакта GND:
Питание БТ по даташиту 3,3 вольта. Но по сути он работает в пределах 2,9-4 вольт и в теории работает от литий полимерного АКБ. Но макс. напряжение заряда 4,2 вольта. Убрать излишек можно тем же диодом SS14 (D1). При этом при использовании ASM1117-3.3 разница в напряжении на входе и выходе должна быть в пределах 1,2 вольт. При этом, если АКБ "сядет" до 3,6в то БТ "получит" около 2,4 вольт и выйдет в дверь отключится. По этому организовал питание через диод (с падением около 100 мВ). Таким Образом получил разброс не 3,6-2,4 вольт, а 4,1- 3,1 вольт ( отсечка контроллера на батарее). Для обеспечения пикового токового питания БТ применено "тантал" на 100 мкФ х 6В:
Подключение вибро - такое же как и разрядов на индикаторе. ТТP223 подключена по даташиту, добавлен конденсатор между ножкой тача и землёй на 30р , иначе срабатывал сам по себе.
В модуле сенсорной кнопки роль конденсатора выполняет площадка касания и слой текстолит.
Далее интереснее. Микроконтроллеру надо "знать" сколько батарея ещё "протянет". Соответственно надо снимать напряжение на батареи и передавать его на аналоговый вход МК. Сказано - сделано. НО! По умолчанию источником опорного напряжения (далее ИОН) является напряжение питания МК. Можно конечно установить TL431 и напряжение с него подать на вход AREF. Но как видно из схемы :
стабилитрон чудом превратился в конденсатор. Почему? В МК уже есть несколько ИОН с разными номиналами. Включается он командой analogReference(type), где type команда, которая выставляет нужное напряжение ИОН:
- DEFAULT - источник питания МК.
- INTERNAL - 1.1 Вольт.
- EXTERNAL - напряжение на AREF.
Нас интересует второй вариант. По этому в void setup запишем команду analogReference(INTERNAL).
Далее получается, что МК не увидит напряжение на аналоговых входах выше 1.1 вольта. На помощь приходит резисторный делитель:
Коротко о номиналах. Напряжение на выходе резисторного делителя считаем по формуле Uвх/Uвых = (R2/R1). Для нас справедливо уравнение VCC/Uвых.=R10/R11). При 1,1 вольте сигнал на пине будет равен 1023. Значит нам не разрешено выходить за 1,1 вольт. Базовым резистором R10 возьмём номинал в 10К (если сильно большой взять - будет влияние помех сильное).
И так, что нам известно:
Входное напряжение (мах.) -4,2в.
Опорный резистор - 10кОм.
Выходное напряжение - 1,1 в.
Формула расчета верхнего плеча будет R11=R10*(VCC/Uвых)
Подставим значения и получим :
R11=10кОм*(4,2в/1,1в)=38.2 кОм. Нам нужен резистор на 39 кОм (стандартный номинал).
Но я возьму с запасом на 50 к.
Далее. Максимальное напряжение у нас будет меняться в зависимости от разряда АКБ. Следовательно меняться будет и напряжение на делителе, что нам и надо. Теперь нужно заставить МК "Видеть" напряжение, а не значения. Для этого нужно преобразовать значение на пине А2 (25 нога МК) в напряжение и записать в переменную типа float.
Делается это так:
float volt=0.00; //создаем переменную в начале программы и ставим значение с 2-я разрядами после запятой (для точности)
volt = (analogRead(2)*1,1)/1024; // в переменную записываем значение, считаное с пина А2 умноженное на максимальное напряжение ИОН и разделено на разрядность АЦП МК (1024 для АтмегаХХХ (от 0 до 1023)).
А далее определяем максимальное и минимальное значение батареи (для меня это 4,2 в - 3,4 в) и вычисляем напряжение на выходе резисторного делителя. Для меня это 0,7в - 0,56в.
А далее отображаете инфу как и время.
По дальнейшему развитию проекта (програма, схема и т д.) - следующий пост)
С уважением ваш ChuzhoiChelovek!


























