Всем привет! Кто-нибудь может объяснить как этот дисплей заставить адекватно цифры отображать с ардуино? Распиновку не нашел но затестил сам, чатжпг тоже ниче не знает. Вытащил из кружки-мешалки поломаной, отображала температуру и таймер. Точки не показывала, да и методом тыка они у меня ни разу не загорались
Похожие продают на алике: https://sl.aliexpress.ru/p?key=xNWBGbS
Распиновку собрал такую:
A1: 2(+), 3(-)
B1: 3(+), 2(-)
C1: 4(+), 2(-)
D1: 4(+), 3(-)
E1: 5(+), 2(-)
F1: 5(+), 3(-)
G1: 5(+), 4(-)
A2: 1(+), 2(-)
B2: 2(+), 1(-)
C2: 1(+), 3(-)
D2: 3(+), 1(-)
E2: 1(+), 4(-)
F2: 4(+), 1(-)
G2: 5(+), 1(-)
Буду благодарен за помощь!
нужна динамическая индикация.
Boris45:
Распиновку не нашел
Как это реализовать? Либы может есть какие? К каким пинам к ардуине паять?
MMM
09.Февраль.2025 22:16:53
4
Boris45:
Как это реализовать?
быстро-быстро переключать нужные сегменты
любым цифровым
1 лайк
можешь пример кода скинуть? что бы напрмер отображалась цифра 2 (abged1)
читать, искать, пробовать…
публиковать, что делали и что не получилось, поможем.
если хотите решать только вопросами, у нас есть платный раздел, велком.
MMM
09.Февраль.2025 22:23:50
7
Навскидку можно разделить сегменты на 4 группы - по тому на какой пин заведен минус
B2, D2, F2 G2 - pin 1
B1, C1, E1 A2 - pin 2
A1 D1 F1 C2 - pin 3
G1 E2 - pin 4
В каждой из этих групп сегменты можно включать одновременно. Итого получается цикл всего из четырех шагов
MMM
09.Февраль.2025 22:28:23
8
подаем 2(+) 4(+) 3(-) на 3 мс, 1 и 5 в z-state
подаем 3(+) 5(+) 2(-) на 3мс, 1 и 4 в z-state
подаем 5(+) 4(-) на 3 мс, 1, 2 и 3 в z-state
и так в бесконечном цикле
MMM:
и так
Ты Бармалея чтоль приютил? ))
MMM
09.Февраль.2025 22:33:38
10
Это алгоритм. От него до кода еще 3 дня лесом
Например, надо еще решить, как повесить на сегменты резисторы. Скорее всего, встроенных в индикаторе нет.
Boris45
09.Февраль.2025 22:37:35
12
Идею понял, спасибо! Но чет где-то ошибся, мигают adf1, c2 вместо 2(abged1)
int pins[5] = {2, 3, 4, 5, 6};
void setup() {
for (int i = 0; i < 5; i++) {
pinMode(pins[i], OUTPUT);
}
}
void loop() {
display_digit_2();
}
void display_digit_2() {
pinMode(pins[1], OUTPUT);
pinMode(pins[3], OUTPUT);
pinMode(pins[0], INPUT);
pinMode(pins[2], INPUT);
pinMode(pins[4], INPUT);
digitalWrite(pins[1], HIGH);
digitalWrite(pins[3], HIGH);
delay(3);
pinMode(pins[2], OUTPUT);
pinMode(pins[4], OUTPUT);
pinMode(pins[0], INPUT);
pinMode(pins[1], INPUT);
pinMode(pins[3], INPUT);
digitalWrite(pins[2], HIGH);
digitalWrite(pins[4], HIGH);
delay(3);
pinMode(pins[4], OUTPUT);
pinMode(pins[3], INPUT);
pinMode(pins[0], INPUT);
pinMode(pins[1], INPUT);
pinMode(pins[2], INPUT);
digitalWrite(pins[4], HIGH);
delay(3);
}
MMM
09.Февраль.2025 22:40:09
13
Boris45:
Но чет где-то ошибся,
конечно ошиблись, у вас на всех выходах HIGH, куда LOW потеряли?
И да, чтобы не путаться - я бы пины назвал pin_1 pin_2 и так далее - в соответствии с первоначальной таблицей.
MMM
09.Февраль.2025 22:44:28
14
и да - что там у вас с резисторами? Пожгете же индикатор или ардуину, если без них.
Boris45
09.Февраль.2025 22:47:31
15
MMM:
с резисторами?
А я не надолго включаю, пока для теста. Вобщем 2 почти получилась - не хватает одного сегмента (b1)
int pins[5] = {2, 3, 4, 5, 6};
void setup() {
for (int i = 0; i < 5; i++) {
pinMode(pins[i], OUTPUT);
}
}
void loop() {
display_digit_2();
}
void display_digit_2() {
pinMode(pins[1], OUTPUT);
pinMode(pins[3], OUTPUT);
pinMode(pins[0], INPUT);
pinMode(pins[2], INPUT);
pinMode(pins[4], INPUT);
digitalWrite(pins[1], HIGH);
digitalWrite(pins[3], HIGH);
digitalWrite(pins[0], LOW);
digitalWrite(pins[2], LOW);
digitalWrite(pins[4], LOW);
delay(3);
pinMode(pins[2], OUTPUT);
pinMode(pins[4], INPUT);
pinMode(pins[0], INPUT);
pinMode(pins[1], INPUT);
digitalWrite(pins[2], HIGH);
digitalWrite(pins[0], LOW);
digitalWrite(pins[1], LOW);
digitalWrite(pins[3], LOW);
delay(3);
pinMode(pins[4], OUTPUT);
pinMode(pins[3], INPUT);
pinMode(pins[2], INPUT);
pinMode(pins[0], INPUT);
pinMode(pins[1], INPUT);
digitalWrite(pins[4], HIGH);
digitalWrite(pins[0], LOW);
digitalWrite(pins[1], LOW);
digitalWrite(pins[2], LOW);
digitalWrite(pins[3], LOW);
delay(3);
}
xDriver
09.Февраль.2025 22:54:07
16
каша у вас, пин переключаете зачем то на INPUT, потом лепите ему digitalWrite, зачем?
1 лайк
MMM
09.Февраль.2025 22:57:00
17
неправильно INPUT OUTPUT используете. Разберитесь, что эти режимы значат
1 лайк
MMM
09.Февраль.2025 23:08:33
20
Я не стану разбираться, почему у вас b1 не горит. Вы пины как будто специально обозначили так, чтобы другие в них запутались. У вас соответвие пинов надо искать по двум косвенным таблицам - поэтому я совсем не уверен, что вы зажигаете их в нужном порядке.
Ну и плюс к тому, вы зажигаете их неверно.
Чтобы подать на пин HIGH или LOW - он должен быть в OUТPUT режиме, а чтобы перевести пин в z-state - сделайте его INPUT.
Вроде бы элементарные вещи, могли бы сами прочитать книжку.
Все, спать ушел
xDriver
09.Февраль.2025 23:09:23
21
Boris45:
из-за этого b1 не горит?
в частности, вам очень повезло, что ARDUINO это для “тупых” (тока давайте без обид )и digitalWrite переключает пин на выход, о чем вы не заботитесь.
воспользуйтесь советом дона