Скетч управления ЖК экраном

вот так выглядит мой скетч, с гашением одного сегмента
осциллограмма нужна?

тут чётко пропал один сегмент из нижнего COM0

#define dm 1550

PORTB = B10001
PORTD = B11111111
delayMicroseconds(dm);
PORTB = B11111
PORTD = B11111111
delayMicroseconds(dm);
PORTB = B00000
PORTD = B00000000
delayMicroseconds(dm);
PORTB = B01110
PORTD = B00000000
delayMicroseconds(dm);

Гы! Прогресс! А теперь скажу гадость: все это требует подбора базового напряжения. В идеальном мире - линейкой формирователей уровня. В нашем случае можно крутить питание Ардуино. Если диапазона хватит! :wink:

1 лайк

вот

спасибо! А в чём цель подбора, ресурс? Я думаю нанку можно “опустить” вольт до трёх…

В получении нужных значений среднеквадратичного напряжения выключенного сегмента. Ниже порогового значения.

Ысчо рас: для того, чтобы понять выше написанное и нужна Вышка. :wink:

В крайнем скетче пробуй уменьшать кардинально dm - по идее должно погаснуть одно знакоместо целиком

что 1550 что просто 50 разницы вообще нет

Тут размах сигнал всего 0.6 В !!!

глянь одним глазом то, что я пытался писать, закомментированная часть если её взять отдельно, гасит один элемент порта COM1

чтобы погасить всё знакоместо, нужно погасить по четыре сегмента COM0 и COM1

я боюсь там щуп ослика был на 1х10

С0-S2
правда без подключённого дисплея, но я думаю это не играет роли…
теперь щуп 1х1

Не похоже - на других осциллограммах не видно разряда емкостей

Какой ваш кусок кода точно гасил сегмент ? Перепостите

вот, первая часть гасит “шпалу” у первого знакоместа в СОМ0
если первую закомментировать а вторую раскомментировать, гасит “шпалу” у первого знакоместа в СОМ1
но вот заставить гасить шпалу и по СОМ0 и по СОМ1 одновременно не получается…

void setup() {
//         ↓ - этот бит порта В это тоже сегмент, последний, 9-тый
  DDRB = B111111; // ком порты
  DDRD = B11111111;  // сегменты
}
void loop() {
//              ↓ - этот бит порта В это тоже сегмент, последний, 9-тый
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B000001;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B011110;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
//=======================================================
/*    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B000010;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B011101;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500); */
   
}

результат


void setup() {
//         ↓ - этот бит порта В это тоже сегмент, последний, 9-тый
  DDRB = B111111; // ком порты
  DDRD = B11111111;  // сегменты
}
void loop() {
//              ↓ - этот бит порта В это тоже сегмент, последний, 9-тый
    PORTB =   B001111;
    PORTD = B11111111;
    delayMicroseconds(500);
    PORTB =   B000001;
    PORTD = B11111111;
    delayMicroseconds(500);
    PORTB =   B001111;
    PORTD = B11111111;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B00000000;
    delayMicroseconds(500);
    PORTB =   B011110;
    PORTD = B00000000;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B00000000;
    delayMicroseconds(500);
}

:slight_smile:

я вот всё таки думаю, может стоит ковырнуть эту хрень не по выходу а по входу?
какую нить библиотеку типа HT1621 на неё натравить?

    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);