board707 / DMD_STM32

STM32Duino library for RGB, Monochrome and Two-color led matrix panels
GNU General Public License v3.0
65 stars 21 forks source link

Some time display going stuck #41

Closed maxmurugan closed 1 year ago

maxmurugan commented 1 year ago

hi sir,

P6 RGB or P10 Red color module display issue showing at the same time serial port data send receiving working

please check picture.

after poweroff and on going to normal mode ,how to solve this issue

PHOTO-2023-05-30-14-33-12

board707 commented 1 year ago

Sorry, I don't understand. Please explain more clearly, what is a problem

maxmurugan commented 1 year ago

this is p6 module using PICO board 17560

maxmurugan commented 1 year ago

working fine after few hour display showing garbage please check video.

https://github.com/board707/DMD_STM32/assets/4962604/797d4938-7323-412a-8c12-5b2e466a39c0

At the garbage time Restart the controller going to normal working

same issue I will face p10 red color module.

board707 commented 1 year ago

Good afternoon Too little information to give advice This behavior can be caused by many reasons - errors in the code, power problems, some kind of electromagnetic interference. For example, one of the options is memory problems in the library code or in the main program. Could you please provide a example code, where the problem is observed.

maxmurugan commented 1 year ago

please check

/*-------------------------------------------------------------------------------------- Demo for RGB panels

DMD_STM32a example code for STM32F103xxx board ------------------------------------------------------------------------------------- */

include

include

include

include "DMD_RGB.h"

define RGB32x32plainS8 34 // 32x32 1/8

//###########################################################################################

template class DMD_RGB<RGB32x32plainS8, COL_DEPTH> : public DMD_RGB_BASE2 { public: DMD_RGB(uint8_t mux_list, byte _pin_nOE, byte _pin_SCLK, uint8_t pinlist, byte panelsWide, byte panelsHigh, bool d_buf = false) : DMD_RGB_BASE2(3, mux_list, _pin_nOE, _pin_SCLK, pinlist, panelsWide, panelsHigh, d_buf, COL_DEPTH, 8, 32, 32) {} protected: uint16_t get_base_addr(int16_t x, int16_t y) override { this->transform_XY(x, y); uint8_t pol_y = y % this->pol_displ; x += (y / this->DMD_PIXELS_DOWN) this->WIDTH; uint16_t base_addr = (pol_y % this->nRows) this->x_len + (x / this->DMD_PIXELS_ACROSS) this->multiplex this->DMD_PIXELS_ACROSS; if (pol_y / this->nRows) base_addr += x % this->DMD_PIXELS_ACROSS ; else base_addr += x % this->DMD_PIXELS_ACROSS + this->DMD_PIXELS_ACROSS; return base_addr; }

}; //################################################################################ byte second1, minute1, hour1, dayOfWeek1, dayOfMonth1, month1,year1; char a[15]; char b[15]; // Fonts includes

include "st_fonts/SystemFont5x7.h"

include "st_fonts/max32.h"

include "st_fonts/Font6x16.h"

include "st_fonts/Font7x16.h"

include "st_fonts/Basket_16.h"

pragma GCC diagnostic ignored "-Wnarrowing"

pragma GCC diagnostic ignored "-Woverflow"

include "gfx_fonts/GlametrixLight12pt7b.h"

include "gfx_fonts/FreeSans9pt7b.h"

pragma GCC diagnostic warning "-Wnarrowing"

pragma GCC diagnostic warning "-Woverflow"

//Number of panels in x and y axis

define DISPLAYS_ACROSS 2

define DISPLAYS_DOWN 1

define ENABLE_DUAL_BUFFER true

define ARDUINO_ARCH_RP2040

// ==== DMD_RGB pins ==== // mux pins - A, B, C... all mux pins must be selected from same port!

define DMD_PIN_A 6

define DMD_PIN_B 7

define DMD_PIN_C 8

define DMD_PIN_D 9

define DMD_PIN_E 10

// put all mux pins at list uint8_t mux_list[] = { DMD_PIN_A , DMD_PIN_B , DMD_PIN_C , DMD_PIN_D , DMD_PIN_E };

// pin OE must be one of PB0 PB1 PA6 PA7

define DMD_PIN_nOE 15

define DMD_PIN_SCLK 12

define Start_Timer 26

define Stop_Timer 27

define Reset_Timer 28

// Pins for R0, G0, B0, R1, G1, B1 channels and for clock. // By default the library uses RGB color order.2 // If you need to change this - reorder the R0, G0, B0, R1, G1, B1 pins. // All this pins also must be selected from same port! uint8_t custom_rgbpins[] = { 11, 16,17,18,19,20,21 }; // CLK, R0, G0, B0, R1, G1, B1 // Fire up the DMD object as dmd<MATRIX_TYPE, COLOR_DEPTH> // We use 64x32 matrix with 16 scans and 4bit color: DMD_RGB <RGB32x32plainS8 , COLOR_4BITS> dmd(mux_list, DMD_PIN_nOE, DMD_PIN_SCLK, custom_rgbpins, DISPLAYS_ACROSS, DISPLAYS_DOWN, ENABLE_DUAL_BUFFER);

// --- Define fonts ---- // DMD.h old style font DMD_Standard_Font UkrRusArial_F(SystemFont5x7); DMD_Standard_Font basket_32(max32); DMD_Standard_Font font6x16(Font6x16); DMD_Standard_Font font7x16(Font7x16); DMD_Standard_Font basket_16(Basket_16); // GFX font with sepatate parts for Latin and Cyrillic chars DMD_GFX_Font GlametrixL((uint8_t)&GlametrixLight12pt7b, (uint8_t)&GlametrixLight12pt8b_rus, 0x80, 13);

//############################################################### uint16_t col[] = { dmd.Color888(255,0, 0), // red dmd.Color888(0, 255, 0), // green dmd.Color888(0, 0, 255), // blue dmd.Color888(0, 255, 255), // blue dmd.Color888(255, 255, 0), // blue dmd.Color888(255, 255, 255), // blue }; //############################################################## int utf8_rus(char dest, const unsigned char src) {

uint16_t i, j; for ( i =0, j =0; src[i]; i++) { if ((src[i] == 0xD0 )&& src[i+1]) { dest[j++] = src[++i] - 0x10;} else if ((src[i] == 0xD1 )&& src[i+1]) {dest[j++] = src[++i] + 0x30; } else dest[j++] = src[i]; } dest[j] ='\0'; return j; }

const int dimmerValues[11] = {10, 25 , 50, 64 , 100 , 160, 210, 500, 750, 1000,1024}; byte Select_RTC = 0; // 1 - MCP7940 0 - Ds1307 byte ON = 0; int16_t brightness=6; int8_t switchhour=12; int8_t Timer_start = 0; int8_t Timer_counter =0; int8_t prestate = 0; void setup(void) {

// initialize DMD objects

dmd.init(); Wire.begin(); delay(100); EEPROM.begin(512); delay(100); brightness = EEPROM.read(1); Timer_counter = EEPROM.read(2);; delay(10); dmd.setBrightness(dimmerValues[brightness]); Serial.begin(9600); Serial.println("PICO P10 RTC"); pinMode(Start_Timer, INPUT_PULLUP); pinMode(Stop_Timer, INPUT_PULLUP); pinMode(Reset_Timer, INPUT_PULLUP); digitalWrite(Start_Timer,HIGH); digitalWrite(Stop_Timer,HIGH); digitalWrite(Reset_Timer,HIGH); delay(1000);

}

/-------------------------------------------------------------------------------------- loop Arduino architecture main loop --------------------------------------------------------------------------------------/

void loop(void) {

dmd.selectFont(&basket_16);
 dmd.setTextColor(0, 0);
Serial.print("WELCOME PICO P4 RGB");
// Cycle for tests:
// -- running texts moving at x and y axis with single and double speed
// -- vertical scrolling message
while (1) 
{

  if(ON == 0)
    {
        int start_timer = digitalRead(Start_Timer);
        int stop_timer = digitalRead(Stop_Timer);
        int reset_timer = digitalRead(Reset_Timer);
        //#########################read ball count
        if(start_timer == LOW && prestate == 0)
          {
            hour1 =0;minute1=0;second1=0;
            setDate_DS1307();
            Timer_start = 1;
            prestate = 1;

          }

        else if(stop_timer == LOW && prestate == 0 && Timer_start == 1)
          {
              Timer_start = 2;
              Timer_counter++;
              EEPROM.write(2, Timer_counter);
              EEPROM.commit();
              delay(100);
              prestate = 1;

          }
          else if(reset_timer == LOW && prestate == 0)
          {
              Timer_start = 2;
              Timer_counter =0;
              hour1 =0;minute1=0;second1=0;
              setDate_DS1307();
              EEPROM.write(2, Timer_counter);
              EEPROM.commit();
              delay(100);
              dmd.clearScreen(true);
              prestate = 1;

          }
        else if (start_timer == HIGH && stop_timer == HIGH && reset_timer == HIGH)
        {
          prestate = 0;
        }

        if(Timer_start == 1)
        {
          if(Select_RTC == 0)getDate_DS1307();
          if(Select_RTC == 1)getDate_MCP7940();
        }
          //sprintf(a,"%02d:%02d:%02d",hour1,minute1,second1);
          //sprintf(b,"%02d:%02d:%02d",dayOfMonth1,month1,year1);
                dmd.selectFont(&basket_16);
                sprintf(a,"%02d:%02d",minute1,second1);
                 sprintf(b,"%4d",Timer_counter);
                dmd.drawString(17,0,a,sizeof(a),col[1]);
                dmd.selectFont(&basket_16);
                dmd.drawString(24,17,b,sizeof(b),col[2]);
                dmd.selectFont(&UkrRusArial_F);
                dmd.drawString(1,5,"CT",3,col[4]);
                dmd.drawString(1,22,"QTY",4,col[4]);
                dmd.swapBuffers(true);

   }
}

} //###################################### DS3232 clock code ######################## byte decToBcd(byte val) { return ( (val/1016) + (val%10) ); } byte bcdToDec(byte val) { return ( (val/1610) + (val%16) ); } void setDate_DS1307()
{ Wire.beginTransmission(104); Wire.write(0); Wire.write(decToBcd(second1)); Wire.write(decToBcd(minute1)); Wire.write(decToBcd(hour1)); Wire.write(decToBcd(dayOfWeek1)); Wire.write(decToBcd(dayOfMonth1)); Wire.write(decToBcd(month1)); Wire.write(decToBcd(year1)); Wire.endTransmission(); } void getDate_DS1307() { Wire.beginTransmission(104); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(104,7); second1 = bcdToDec(Wire.read() & 0x7f); minute1 = bcdToDec(Wire.read()); hour1 = bcdToDec(Wire.read() & 0x3f); dayOfWeek1 = bcdToDec(Wire.read()); dayOfMonth1 = bcdToDec(Wire.read()); month1 = bcdToDec(Wire.read()); year1 = bcdToDec(Wire.read()); } //##################################### end of code #################### void setDate_MCP7940()
{ Wire.beginTransmission(111); Wire.write(0); Wire.write(decToBcd(second1) | 0x80); Wire.write(decToBcd(minute1)); Wire.write(decToBcd(hour1)); Wire.write(decToBcd(dayOfWeek1) | 0x08); Wire.write(decToBcd(dayOfMonth1)); Wire.write(decToBcd(month1)); Wire.write(decToBcd(year1)); Wire.endTransmission(); } void getDate_MCP7940() { Wire.beginTransmission(111); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(111,7); second1 = bcdToDec(Wire.read() & 0x7f); minute1 = bcdToDec(Wire.read()); hour1 = bcdToDec(Wire.read() & 0x3f); dayOfWeek1 = bcdToDec(Wire.read() & 0x07); dayOfMonth1 = bcdToDec(Wire.read()); month1 = bcdToDec(Wire.read()); year1 = bcdToDec(Wire.read()); }

board707 commented 1 year ago

I am not sure is this a cause of the problem or not, but there are errors in the code. At the end of the loop()

dmd.drawString(17,0,a,sizeof(a),col[1]);

The using of sizeof() is incorrect in this case, it returns the size of array rather than a length of string. Use the strlen() instead:

dmd.drawString(17,0,a,strlen(a),col[1]);

There are a several lines with the same error.

Next, these two methods are wrong:

byte decToBcd(byte val)
{
return ( (val/1016) + (val%10) );
}
byte bcdToDec(byte val)
{
return ( (val/1610) + (val%16) );
}

Since the calculation is carried out in integers, the first expression, (val/1610), is always zero and whole result will be val % 10 in first function and val %16 in second.

maxmurugan commented 1 year ago

thanks sir i will change this code and check

maxmurugan commented 1 year ago

this is copy past issue

byte decToBcd(byte val) { return ( (val/1016) + (val%10) ); } byte bcdToDec(byte val) { return ( (val/1610) + (val%16) ); }

maxmurugan commented 1 year ago

(val/10x16)

maxmurugan commented 1 year ago

i get new error in p10 red module

https://github.com/board707/DMD_STM32/assets/4962604/64da251a-9b4d-4ea9-bb7d-ce3d5c0d753e

please check and give the solution sir

maxmurugan commented 1 year ago

DHT.txt

maxmurugan commented 1 year ago

please check txt file code sir

maxmurugan commented 1 year ago

Showing junk display at this time PICO Serial data received

board707 commented 1 year ago

Sorry but your code seems to have a some errors:

What are you try to achieve in this line?

 if((Adjust_Temp/1000)== '+')   {

your Adjust_Temp is integer, comparing it with char not making sense for me

This line is not the one with errors...

If you find a bug in a library, please prepare a short code example where the bug appears. I don't have the ability to run your entire project with modbus, serial and sensors.

maxmurugan commented 1 year ago

i am trying to find this bug ,every 2 to 3 hour create this issue

maxmurugan commented 1 year ago

please need help

every 1 hour, how to restart your library or Software restart for raspberry pi pico

board707 commented 1 year ago

how to restart your library or Software restart for raspberry pi pico

Hi To soft restart a Pico board you can use a watchdog feature: https://github.com/raspberrypi/pico-examples/blob/master/watchdog/hello_watchdog/hello_watchdog.c

maxmurugan commented 1 year ago

I completely remove DHT library code ,Now no error on the led display thanks for your support

maxmurugan commented 1 year ago

I have another one question

i have custom led board 74 hc595 and uln2803 driver ic

1/2 scan method it is possible drive your library

16x48 pixel

board707 commented 1 year ago

have custom led board 74 hc595 and uln2803 driver ic

Uln2803 driver? Are you sure? It is not common for LED panels using this driver. Is the panel has a HUB75 connector ? Please show the pictures

maxmurugan commented 1 year ago

it is old board design using railway application MatrixCircuit

maxmurugan commented 1 year ago

1 and 9 column connected 16x48 total 6 74hc595 ic 8 and 16 connected

tomorrow will send picture

maxmurugan commented 1 year ago

Right side is first input for 74hc595

maxmurugan commented 1 year ago

this code working only move 6 char One shiftRegiter load One char please help

int latchPin = 12; // pis connected to shift registors int clockPin = 9; int dataPin = 8; const int mrpin = 11; // Connects to the DS pin of 74HC595 int pins [8] = {16 ,17,18, 19, 20,21, 10, 6}; // common cathode pinsint pins [8] = {20, 19,18, 17, 16, 6, 10, 21}; // common cathode pins byte Railway_8x16[][16] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 32 0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18, // Code for char num 33 0x00,0x1B,0x1B,0x1B,0x1B,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 34 0x00,0xB0,0xB0,0xD8,0xFE,0xFE,0xD8,0xD8,0x6C,0x6C,0x6C,0xFF,0xFF,0x6C,0x36,0x36, // Code for char num 35 0x0C,0x1E,0x3F,0x33,0x33,0x33,0x07,0x0E,0x1C,0x38,0x38,0x33,0x33,0x33,0x3F,0x1E, // Code for char num 36 0x00,0x1E,0x33,0x33,0x33,0x33,0x33,0x33,0x9E,0x40,0x40,0x20,0x10,0x10,0x08,0x04, // Code for char num 37 0x00,0x3E,0x7F,0x63,0x63,0x63,0x03,0xFE,0xFE,0x63,0x63,0x63,0x63,0x63,0x7F,0x7E, // Code for char num 38 0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 39 0x00,0x18,0x0C,0x0C,0x0C,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0C,0x0C, // Code for char num 40 0x00,0x03,0x06,0x0C,0x0C,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x0C,0x0C, // Code for char num 41 0x00,0x18,0x5A,0xFE,0x18,0xFE,0x5A,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 42 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0xFE,0xFE,0x30,0x30,0x30,0x00,0x00, // Code for char num 43 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x02,0x03, // Code for char num 44 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 45 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18, // Code for char num 46 0x00,0xC0,0x60,0x60,0x60,0x30,0x30,0x18,0x18,0x18,0x0C,0x0C,0x06,0x06,0x06,0x03, // Code for char num 47 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0x7C, // Code for char num 48 0x00,0x0C,0x1C,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C, // Code for char num 49 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0x06,0x0C,0x0C,0x18,0x38,0x30,0x60,0xC0,0xFE,0xFE, // Code for char num 50 0x00,0x7C,0xFE,0xC6,0xC6,0x06,0x0E,0x1C,0x30,0x1C,0x0E,0x06,0xC6,0xC6,0xFE,0x7C, // Code for char num 51 0x00,0x0C,0x0C,0x1C,0x3C,0x3C,0x3C,0x6C,0x6C,0x6C,0xCC,0xFE,0xFE,0x0C,0x0C,0x0C, // Code for char num 52 0x00,0xFE,0xFE,0xC0,0xC0,0xC0,0xFC,0xFE,0x06,0x06,0x06,0x06,0xC6,0xC6,0xFE,0x7C, // Code for char num 53 0x00,0x7C,0xFE,0xC6,0xC6,0xC0,0xC0,0xFC,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0x7C, // Code for char num 54 0x00,0xFE,0xFE,0xC6,0x06,0x06,0x06,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x60,0x60, // Code for char num 55 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0x7C,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0x7C, // Code for char num 56 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0x7E,0x06,0x06,0xC6,0xC6,0xFE,0x7C, // Code for char num 57 0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // Code for char num 58 0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // Code for char num 59 0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x38,0x1C,0x06,0x1C,0x38,0x60,0x40,0x00,0x00, // Code for char num 60 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0x00,0xFE,0xFE,0x00,0x00,0x00, // Code for char num 61 0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x0E,0x1C,0x30,0x1C,0x0E,0x03,0x01,0x00,0x00, // Code for char num 62 0x00,0x1E,0x3F,0x33,0x33,0x30,0x30,0x18,0x0C,0x06,0x06,0x06,0x06,0x00,0x06,0x06, // Code for char num 63 0x00,0xFE,0x01,0x01,0x71,0xD9,0xD9,0xC1,0xF1,0xD9,0xD9,0xD9,0xF1,0x01,0x01,0xFE, // Code for char num 64 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6, // Code for char num 65 0x00,0xFC,0xFE,0xC6,0xC6,0xC6,0xC6,0xFC,0xFC,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xFC, // Code for char num 66 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC6,0xC6,0xFE,0x7C, // Code for char num 67 0x00,0xFC,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xFC, // Code for char num 68 0x00,0xFE,0xFE,0xC0,0xC0,0xC0,0xC0,0xF8,0xF8,0xC0,0xC0,0xC0,0xC0,0xC0,0xFE,0xFE, // Code for char num 69 0x00,0xFE,0xFE,0xC0,0xC0,0xC0,0xC0,0xF8,0xF8,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, // Code for char num 70 0x00,0x7C,0xFE,0xC6,0xC6,0xC0,0xC0,0xDE,0xDE,0xD6,0xC6,0xC6,0xC6,0xC6,0xFE,0x7C, // Code for char num 71 0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6, // Code for char num 72 0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // Code for char num 73 0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xC6,0xC6,0xC6,0xFE,0x7C, // Code for char num 74 0x00,0xC6,0xCC,0xCC,0xD8,0xD8,0xD0,0xF0,0xE0,0xF0,0xF0,0xD8,0xD8,0xCC,0xCC,0xC6, // Code for char num 75 0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xFE,0xFE, // Code for char num 76 0x00,0x82,0xC6,0xEE,0xFE,0xD6,0xD6,0xD6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6, // Code for char num 77 0x00,0xC6,0xC6,0xC6,0xC6,0xE6,0xF6,0xF6,0xDE,0xDE,0xCE,0xCE,0xC6,0xC6,0xC6,0xC6, // Code for char num 78 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0x7C, // Code for char num 79 0x00,0xFC,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xFC,0xC0,0xC0,0xC0,0xC0,0xC0, // Code for char num 80 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xCE,0xCE,0xC6,0xFF,0x7F, // Code for char num 81 0x00,0xFC,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0xF8,0xD8,0xCC,0xCC,0xCE,0xC6,0xC6, // Code for char num 82 0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xE0,0x70,0x38,0x1E,0x0E,0x06,0xC6,0xC6,0xFE,0x7C, // Code for char num 83 0x00,0xFE,0xFE,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38, // Code for char num 84 0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xFE,0x7C, // Code for char num 85 0x00,0xC3,0xC3,0xC3,0x66,0x66,0x66,0x66,0x66,0x24,0x3C,0x3C,0x3C,0x3C,0x18,0x18, // Code for char num 86 0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xD6,0xD6,0xD6,0xFE,0xEE,0xC6,0xC6,0x82, // Code for char num 87 0x00,0xC6,0xC6,0x6C,0x6C,0x6C,0x38,0x38,0x38,0x38,0x38,0x6C,0x6C,0x6C,0xC6,0xC6, // Code for char num 88 0x00,0xC3,0xC3,0x66,0x66,0x66,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // Code for char num 89 0x00,0xFE,0xFE,0x06,0x0C,0x0C,0x08,0x18,0x10,0x30,0x20,0x60,0x60,0xC0,0xFE,0xFE, // Code for char num 90 0x00,0x1C,0x1E,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // Code for char num 91 0x00,0x06,0x06,0x0C,0x0C,0x0C,0x0C,0x18,0x18,0x18,0x30,0x30,0x30,0x30,0x60,0x60, // Code for char num 92 0x00,0x0E,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // Code for char num 93 0x00,0x08,0x1C,0x36,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 94 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 95 0x00,0x00,0x38,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 96 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x3F,0x33,0x30,0x3E,0x33,0x33,0x3F,0x36, // Code for char num 97 0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x1F,0x3F,0x33,0x33,0x33,0x33,0x33,0x3F,0x1F, // Code for char num 98 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x3F,0x33,0x03,0x03,0x03,0x33,0x3F,0x1E, // Code for char num 99 0x00,0x30,0x30,0x30,0x30,0x30,0x30,0x3E,0x3F,0x33,0x33,0x33,0x33,0x33,0x3F,0x36, // Code for char num 100 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x3F,0x33,0x33,0x3F,0x03,0x33,0x3F,0x1E, // Code for char num 101 0x00,0x06,0x07,0x03,0x03,0x03,0x03,0x07,0x07,0x03,0x03,0x03,0x03,0x03,0x03,0x03, // Code for char num 102 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x3F,0x33,0x33,0x33,0x33,0x33,0x3F,0x3E, // Code for char num 103 0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x1B,0x3F,0x37,0x33,0x33,0x33,0x33,0x33,0x33, // Code for char num 104 0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, // Code for char num 105 0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, // Code for char num 106 0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x33,0x1B,0x1B,0x0F,0x0F,0x0F,0x1B,0x1B,0x33, // Code for char num 107 0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, // Code for char num 108 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9B,0xFF,0x77,0x33,0x33,0x33,0x33,0x33,0x33, // Code for char num 109 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x3F,0x37,0x33,0x33,0x33,0x33,0x33,0x33, // Code for char num 110 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x3F,0x33,0x33,0x33,0x33,0x33,0x3F,0x1E, // Code for char num 111 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x3F,0x33,0x33,0x33,0x33,0x33,0x3F,0x1F, // Code for char num 112 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x3F,0x33,0x33,0x33,0x33,0x33,0x3F,0x3E, // Code for char num 113 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x3F,0x37,0x33,0x03,0x03,0x03,0x03,0x03, // Code for char num 114 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x3F,0x33,0x07,0x1C,0x30,0x33,0x3F,0x1E, // Code for char num 115 0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x07,0x07,0x03,0x03,0x03,0x03,0x03,0x07,0x06, // Code for char num 116 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x3F,0x3E, // Code for char num 117 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x12,0x1E,0x1E,0x1E,0x0C,0x0C,0x0C, // Code for char num 118 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x32,0xFE,0xFE,0xFE,0xCC,0xCC,0xCC, // Code for char num 119 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x36,0x36,0x1C,0x1C,0x1C,0x36,0x36,0x63, // Code for char num 120 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x12,0x1E,0x1E,0x1E,0x1E,0x0C,0x0C, // Code for char num 121 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x18,0x18,0x0C,0x06,0x06,0x3F,0x3F, // Code for char num 122 0x00,0x38,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x06,0x03,0x06,0x0C,0x0C,0x0C,0x0C, // Code for char num 123 0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // Code for char num 124 0x00,0x0E,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x30,0x60,0x30,0x18,0x18,0x18,0x18, // Code for char num 125 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCE,0xFE,0xE6,0x00,0x00,0x00,0x00, // Code for char num 126 0x00,0x3F,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x3F,0x00 // Code for char num 127 };

char a[20]="ABCD12"; static char Message[20] = "0";

void setup() { Serial.begin(9600); // Serial begin pinMode(latchPin, OUTPUT); // Pin configuration pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(mrpin, OUTPUT); for (int i = 0; i < 8; i++) { // for loop is used to configure common cathodes pinMode(pins[i], OUTPUT); digitalWrite(pins[i], HIGH); }

}

void loop() {

digitalWrite(mrpin, HIGH); for (int j = 0; j < 8; j++) { digitalWrite(latchPin, LOW); digitalWrite(pins[j], LOW); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[5]-32][j+8]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[5]-32][j]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[4]-32][j+8]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[4]-32][j]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[3]-32][j+8]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[3]-32][j]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[2]-32][j+8]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[2]-32][j]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[1]-32][j+8]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[1]-32][j]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[0]-32][j+8]); shiftOut(dataPin, clockPin, LSBFIRST, Railway_8x16[a[0]-32][j]); digitalWrite(latchPin, HIGH); delayMicroseconds(1000); digitalWrite(latchPin, LOW); for (int i = 0; i < 12; i++) { shiftOut(dataPin, clockPin, LSBFIRST, B00000000); } digitalWrite(latchPin, HIGH); digitalWrite(pins[j], HIGH);

} }

board707 commented 1 year ago

total 6 74hc595 ic

It seems to me that for 16x48 panel it should be 12 74hc595 ic in total.

What for do you plan to use this panels? Without major code modification, they will not work with this library. I could add support for these panels to the code if I had them available. Without panels for tests, this is hardly possible.

Why would you like to use exact this panels? Do you have dozens or hundreds? Apparently, this is a very old design and it is unlikely that anyone will actively use them. If you have only a few panels, it is hardly worth spending so much effort on them, it is more profitable to buy modern ones.

maxmurugan commented 1 year ago

ok thanks