Как стать автором
Обновить

Вторая жизнь старых стрелочных индикаторов

Время на прочтение 2 мин
Количество просмотров 196K
Как-то попались мне в руки старые стрелочные индикаторы уровня от старого магнитофона, и я решил вдохнуть в них новую жизнь, сделав из них «хардварные виджеты» для отображения загрузки процессора и оперативной памяти компьютера.

image

Скажу сразу, что на оригинальность я не претендую, наверняка до меня уже делали подобное, просто хочется рассказать о своём опыте.

Первым делом я заменил оригинальные шкалы с децибелами на свои собственные, для этого пришлось ломать корпус.

image

image

Затем на скорую руку я развёл плату:

image

В центре микроконтроллер ATMEGA8, именно он управляет стрелками, используя аппаратный ШИМ. Чтобы индикатор зашкалило, достаточно вполне небольшого тока, поэтому включаем их через резистор в пару килоом. Встроенной подсветки у индикаторов нет, поэтому чтобы они смотрелись красиво, и их было видно и в темноте, на плате я разместил по три оранжевых светодиода на том месте, поверх которого я планировал их приклеить. При этом светодиоды можно включать программно, в теории можно даже менять их яркость, используя уже софтварный ШИМ.

Подключать устройство к компьютеру было решено через USB, для этого используется микросхема FT232. Да, можно обойтись и без неё, используя программный USB, но я ему не доверяю — работает весьма нестабильно на некоторых контроллерах. Через FT232 же устройство видится как виртуальный COM-порт, в который мы будем писать данные.

Первым делом в микроконтроллер был зашит бутлоадер, после чего программатор был убран в ящик — прошивку стало легко обновлять прямо по USB. Настал этот сладкий момент, когда устройство готово, и остаётся только написать софт.

Прошивка же предельно проста:
// Ноги, которые подключены к индикаторам, настраиваем на вывод
DDRB |= (1<<1) | (1<<2);

// Включаем таймер и ШИМ:
TCCR1A |= (1<<COM1A1) | (1<<COM1B1) | (1<WGM10);
TCCR1B |= CS10;

После этого просто пишем в регистры OCR1A и OCR1B значения, которые нужно показать, а именно — то, что получаем по USART. Опытным путём было установлено, что стрелка стоит на максимальном значении, когда в регистрах число более 90. Дальше дело было за простой математикой.
Приложение для PC тоже не отличается особой сложностью — нужно просто получать процент загрузки процессора с памятью и посылать эти данные в виртуальный COM порт.

Сначала я хотел встроить эти индикаторы прямо в пятидюймовый отсек на системном блоке, но он стоит под столом, поэтому устройство было вынесено отдельно.

image

Стрелочки очень красиво подёргиваются. Получилось весьма удобно.

upd:
Попытался снять небольшое видео.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+247
Комментарии 48
Комментарии Комментарии 48

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн