Тема: Динамический экран на 74HC595
Добрый день, сделал я мини экранчик на 3-ех разрядном 7 сегментном индикаторе на регистре сдвига 74HC595. Экран у меня с общим катодом, нашёл на ютубе пример для вывода на него информации, всё прекрасно выводится. Но столкнулся с проблемой, а именно в коде нет функции вывода точек на нужных разрядах. В комментариях к видео автор рассказал как сделать данный вывод, но в реализации него у меня возникли сложности
Сам код(немного я его подкорректировал, и убрал лишнее)
#include <MsTimer2.h>
uint8_t digital_OK[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0b00000001};
#define clockPin 6
#define dataPin 4
#define latchPin 5
#define pinBeginStrob 8 // номер пина для подключения строба (разряда) первого индиеатора
#define pinEndStrob 11 // номер пина для подключения строба (разряда) последнего индиеатора
#define numberDigits 4 // количество разрядов индикатора (до 8-ми)
#define durationPause 10 // длительность паузы (мсек)
#define maxCount 10000 // максимально возможное число счёта
uint8_t mass[numberDigits]; // буфер данных индикатора
uint32_t count = 0;
uint32_t num;
bool modeStrob = false;
bool typeDigit = true;
void setup()
{
Serial.begin(9600);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
digitalWrite(latchPin, HIGH);
for (uint8_t i = pinBeginStrob;i <= pinEndStrob;i ++)
{
pinMode(i, OUTPUT);
digitalWrite(i, HIGH);
}
MsTimer2::set(2, timerInterrupt);
MsTimer2::start();
}
void loop()
{
num= millis()/1000;
count = num*10;
convert(count, mass);
Serial.println(count);
delay(durationPause);
}
void timerInterrupt()
{
static uint8_t index = 0;
for (uint8_t i = pinBeginStrob;i <= pinEndStrob;i ++)
{
digitalWrite(i, HIGH);
}
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, mass[index]);
digitalWrite(latchPin, HIGH);
digitalWrite(index + pinBeginStrob, LOW);
index ++;
if (index == numberDigits) index = 0;
}
void convert(uint32_t value, uint8_t *m)
{
for (uint8_t i = 0;i < numberDigits;i ++)
{
*(m + i) = digital_OK[value %10];
value /= 10;
}
}
Видео автора кода
Комментарий,как реализовать вывод точки на экран