Тема: Динамический экран на 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;
  }
}

Видео автора кода


Комментарий,как реализовать вывод точки на экран http://forum.rcl-radio.ru/uploads/images/2024/05/8760de43cbb508a24e36fa7f9c3c166f.png

2

Re: Динамический экран на 74HC595

http://rcl-radio.ru/?p=53350

Re: Динамический экран на 74HC595

Я бы смог бы повторить этот модуль, у него 2 микросхемы 74hc595, но у меня одна, и разрядами управляет не микросхема а ардуина

Re: Динамический экран на 74HC595

И я хотел бы именно добавить вывод точки в скетч который я скинул. Не могли бы вы мне просто объяснить как это сделать ссылаясь на комментарий автора видео

5

Re: Динамический экран на 74HC595

digital_OK[value %10]+0b10000000;