Коллега заказал комплект для сборки радио и там есть такой дисплейчик На нём контур батарейки+4 сегмента = 5. Из спортивного интереса хотел подключить к ардуино. Человек я - не особо опытный. Долго гуглил, в итоге понял, что сегменты дисплея нужно питать переменным током, ибо они есть конденсаторы (?). Как это сделать с помощью Матрёшки? Ссылки: http://www.instructables.com/answers/Seven-Segment-LCDs/ http://electronics.stackexchange.com/questions/10897/powering-an-old-alarm-clock-lcd-need-to-invert-dc-to-3-v-ac
Недавно про ЖК спрашивали, поищите на форуме. Если там только изображение батарейки, то можно обойтись без специальных драйверов
Вы об этой теме? Из неё мне всё ещё не понятно как подключить дисплей. Надо менять полярность питания каждого сегмента. Но как.
Есть сегменты и подложка. Чтобы сегмент был виден надо чтобы на нем было напряжение, те состояние на на подложке не равно состоянию на сегменте. Чтобы не виден - равно. Пример: сегмент 1_виден, сегмент_2 не виден, повторять в loop() подложка = LOW сегмент_1 = HIGH сегмент_2 = LOW delay(5) подложка = HIGH сегмент_1 = LOW сегмент_2 = HIGH delay(5)
Спасибо. А как выбирается задержка (5мс) между обновлениями? upd. Экспериментально: 40мс мерцает, 20 - нормально Код (C++): int yes = HIGH, no = LOW; #define GND 8 #define CONTOUR 9 #define PCT_25 13 #define PCT_50 12 #define PCT_75 11 #define PCT_100 10 bool vc=true, p[4] = {false, false, false, false}; int v = 0, counter=0; void setup() { // put your setup code here, to run once: pinMode(GND, OUTPUT); pinMode(CONTOUR, OUTPUT); pinMode(PCT_100, OUTPUT); pinMode(PCT_75, OUTPUT); pinMode(PCT_50, OUTPUT); pinMode(PCT_25, OUTPUT); } void update() { digitalWrite(GND, no); digitalWrite(CONTOUR, vc? yes: no); digitalWrite(PCT_25, p[0]? yes: no); digitalWrite(PCT_50, p[1]? yes: no); digitalWrite(PCT_75, p[2]? yes: no); digitalWrite(PCT_100, p[3]? yes: no); int t = yes; yes = no; no = t; } bool every10() { if(counter<10) counter++; else counter=0; return counter==10; } void loop() { if(every10()) { for(int i=0; i<4; i++) p[i] = i<v?true:false; if(v<4) { v++; } else v=0; } update(); delay(20); }
100Гц ( 1/(5мс+5мс) ) - это по памяти из старых советских журналов. В подтверждение слов сейчас нашел: http://www.goldenviewdisplay.com/driving_LCD_display.html Drive frequencies for direct drive displays are typically between 30Hz and 100Hz. Depending on the display size and design, displays can be operated at higher frequencies, but this will result in increased power consumption. LCDs portray a capacitive load, which reduces the load impedance as frequency increases. However, operation below 30Hz typically results in display flicker
Некоторые можно до 240Hz эксплуатировать, хотя это и не имеет особого смысла. Для сегментных индикаторов есть такие драйверы как MC14489B или PCF8577CT.