Я это перенесу из коммерческого раздела в Программирование? Никто не против?
Даже в Аппаратные. Так вернее
в самом начале я говорю голосом что и где, в обоих видео
Звук был отключен …
- Вот эта китайская библиотека будет работать после небольшой коррекции.
(нужно изменить метод update() и возможно charToSegBits() ).
- Лучше использовать ЖК через контроллер, а не напрямую. Хотя это и был бы ценный опыт.
- И нет это не SPI интерфейс. Синхронный, последовательный, но не SPI.
“Таки Фима, вы будете смеяться!” Именно эту библиотеку я и пробовал когда писал выше про эксперимент…
Плохо только то, что если во вчерашних твоих словах я ещё что то понимал, то править библиотеку я точно не смогу…
Ничего ты не понимал!
Ты выдал на ЖК 6 полупериодов каких?
Нужно по одному каналу на низкой частоте, то есть, если 6, то три 0 потом три 1. А по остальным каналам 0, 1, 0, 1, 0, 1 - то есть на высокой частоте.
Например выбираем канал Com0, и строим пересечение с Seg3, тогда выдаем -
segMask = 0b00001000;
//***************
PORTB = 0b0000;
PORTD = segMask;
delayMicroseconds(500);
PORTB = 0b1110;
PORTD = segMask;
delayMicroseconds(500);
PORTB = 0b0000;
PORTD = segMask;
delayMicroseconds(500);
PORTB = 0b1111;
PORTD = ~segMask;
delayMicroseconds(500);
PORTB = 0b0001;
PORTD = ~segMask;
delayMicroseconds(500);
PORTB = 0b1111;
PORTD = ~segMask;
delayMicroseconds(500);
и всего таких блоков должно быть 4. Для каждого КОМа по одному. В каждом ты строишь пересечения с теми Сегментами. которые тебе нужны.
например для цифры 5 на первой позиции нужно сделать по блокам
com0 - 0b01
com1 - 0b01
com2 - 0b11
com3 - 0b10
добавлю, что 6 - плохой выбор. Нужно чтобы на 4 делилось - то есть 4 или 8 полупериодов.
но повторю - лучше поправить библиотеку. Это точно проще. На порядок.
Вот нет в тебе совести! Старого человека заставляет сидеть за паяльником…
перепаял обратно на контроллер, подключил к Nano, залил такой скетч
#include <HT1621.h>
#define LCD_CS_PIN 13
#define LCD_WR_PIN 12
#define LCD_DATA_PIN 8
// #define HT1621_DEBUG
HT1621 lcd;
void setup() {
lcd.begin(LCD_CS_PIN, LCD_WR_PIN, LCD_DATA_PIN);
lcd.clear();
}
void loop(){
lcd.print("1111");
delay(1000);
lcd.clear();
lcd.print("2222");
delay(1000);
lcd.clear();
lcd.print("3333");
delay(1000);
lcd.clear();
lcd.print("4444");
delay(1000);
lcd.clear();
lcd.print("5555");
delay(1000);
lcd.clear();
lcd.print("0000");
delay(1000);
}
результат? вроде работает, но понятное дело всё криво…
вот
Спойлер
выведи не по 4 а по 5 цифирок.
я вместо
lcd.print(“8888”);
написал
lcd.print((long)8888);
теперь я вижу подобие цифр во всех разрядах
Спойлер
остановимся на такой записи или попробовать 5 цифр под кавычки?
Для начала надо:
void wrone(unsigned char addr, unsigned char sdata);
перенести в public
Насколько я вижу - там шрифт под стандарт знакоместа/сегменты
А тут не так и надо шрифт менять.
Потом пробуем:
void loop() {
lcd.wrone(0,0xff);
lcd.wrone(2,0xff);
lcd.wrone(4,0xff);
lcd.wrone(6,0xff);
lcd.wrone(8,0xff);
}
стыдно быть бестолковым, но я даже не понимаю о чём речь…
p.s. из неприятного, по мимо кракозябров, идут какие то паразитные засветки, без контроллера, на прямую от ардуино с кодом Командира всё в разы чётче!
после переноса и компиляции твоего кода вижу засветку всех сегментов
А если 0x00 везде ?
Командир! У меня гости, Шаббат, самогон и все эти вещию Ты уж дальше сам - как нить.
1… нужно update() поменять. так как цифры у нас не на местах 0,2,4,6,8, 10 а на 0, 2, 5, 7, если я правильно помню “наскальную живопись”
2. ну и дешифратор символа в битмаску у нас несколько иной. так как ком элкектроды не одинаковы на всех знакоместах. Его нужно внимательно переделать.
тёмный экран, ничего не светится
Так и должно быть !