Задумалось мне как-то подключить обычный индикатор - дело не сложное, но выводов потребляет... Жуть.
А если их надо 2-3-4-5 ?
О тож :)
После определённых поисков был найден у буржуев вариант индикатора со своими мозгами и подключением по SPI/I2c/Uart по выбору. Ещё он у них может менять яркость. Вот такой 7-Segment Serial Display - Blue
Одна проблемка - там использовался 32 чип, что при наших ценах... Да ну его на фиг - будем творить своё.
От изменения яркости пришлось отказаться - в atmega8 не получилось - зато удалось значительно сократить размер платы - она практически совпадает по размерам с индикатором.
В общем что получилось.
А по деталям - вообще песня - 3 резистора, 1 конденсатор, 1 чип atmega8 ну и индикатор конечно.
Разъём "JARKOST" оставлен для того, если вдруг нужно будет яркость всё-таки менять - туда подключаем соответственно резисторы - или что придумаете сами - если не нужна эта опция - можно просто впаять перемычки или дорисовать дорожки перед травлением.
Кроме этого - на плате есть одна перемычка (синим цветом) - она будет идти под индикатором и её будет не видно.
Размер платы практически совпадает с размерами индикатора типа kem-5641(даташит в архиве).
Сам индикатор - с общим анодом. Понятно, что можно взять любой другой, совпадающий по параметрам.
Подключение по I2c адрес в прилагаемой прошивке - 45.
Если нужно пересобрать прошивку - то нужно доработать Arduino IDE - нужна плата с atmega8 c внутренними 8 mHz.
Как это сделать - довольно подробно описано в инете + инфа в прилагаемом архиве.
Набор символов, которые можно передавать по I2c в полученный индикатор нужно отправлять в ASCII коде - например вместо 0, нужно отправить 48.
Таблица поддерживаемых символов
- 0 => 48
- 1 =>49
- 2=>50
- 3=>51
- 4=>52
- 5=>53
- 6=>54
- 7=>55
- 8=>56
- 9=>57
- #=>35
- 0.=>65
- 1.=>66
- 2.=>67
- 3.=>68
- 4.=>69
- 5.=>70
- 6.=>71
- 7.=>72
- 8.=>73
- 9.=>74
Знак # (шарп) передаётся, если нужно погасить ячейку (пустая).
Ну вот вроде и всё. Собирается быстро, умеет достаточно :)
Удачи.
Ссылка на архив ТЫЦ!
Список деталей
Part Value Package Library Position (mm) Orientation
C1 0.1mF C1206 rcl (4.2 13.8) R270
IC1 MEGA8-AI TQFP32-08 atmel (19.15 7.16) R90
JARKOST M04X2 2X4 SparkFun (33.4 5.4) R270
JP1 1X02_LOCK SparkFun (0.2 12.7) R90
JP3 1X02_LOCK SparkFun (2.4 7.2) R270
R1 000 M1206 resistor (37 -1.4) R180
R2 10kOm M1206 resistor (1.9 0.8) R180
R3 000 M1206 resistor (9.4 -2) R270
+индикатор kem-5641
P.s. Чуть не забыл :)
Надо же прошить бутлоадер в чистый чип - перед загрузкой скетча.
Используем в данном примере avrdude и Usbasp (программатор) ATmegaBOOT.hex - берём из прилагаемого архива из каталога "8 noxtal atmega8" :
sudo avrdude -c usbasp -P /dev/ttyUSB0 -p m8 -b 19200 -U hfuse:w:0xc4:m -U lfuse:w:0xe4:m
sudo avrdude -c usbasp -P /dev/ttyUSB0 -p m8 -b 19200 -U flash:w:ATmegaBOOT.hex
sudo avrdude -c usbasp -P /dev/ttyUSB0 -p m8 -b 19200 -U lock:w:0x0F:mА уже после этого можно заливать прошивку:
sudo avrdude -c usbasp -P /dev/ttyUSB0 -p m8 -b 19200 -U flash:w:I2c_45.hex
Вот теперь всё!
А почему не использовали обычные сдвиговые регистры? Они ж вроде копейки стоят.
ОтветитьУдалитьА размер? Тут платка получается совсем небольшая. Да и использовать намного проще - послал 4 цифры и готово - не нужно городить огород с описанием цифр в основном коде и процедурой отсылки в регистры. Код уменьшается очень заметно - соответственно намного проще писать и уменьшается нагрузка на проц. Да и память какая - никакая высвобождается.
ОтветитьУдалитьА если нужно 2 - 3 индикаторов?
А ещё на этой основе можно спокойно лепить любое конечное устройство с I2c.
ОтветитьУдалить