LED DOT MATRIX 64x16

any idea....

No, sorry, you must be much more detailed and specific in your question. I would guess you have some problem converting int to string. There are several ways to achieve this but without context I do not know which way to recommend. Which line of your sketch?

I get hard to...

Please be careful with your English. I am certain you did not intended it, but you were close to "obscene" language there which could cause offence.

Dancopy:
Hi mocart! Sorry, after all this time, have you solved your problem?

I have the same problem.

any ideas?

is there someone who has succeeded in performing the split function........

Greetings everyone!
I have an arduino sketch: "64x32 LED display matrix test code" which is possibly from Phil Kaziewicz (at least it's in the code header) and is calling a library (#include "sriftas.h":wink: but I do not I can find nowhere; could someone or the author himself share the link from that library? I would be very grateful
The sketch link is this: // Author: Phil Kaziewicz 19th July 2014// 64x32 LED display matrix test code - Pastebin.com

Dancopy:
Greetings everyone!
I have an arduino sketch: "64x32 LED display matrix test code" which is possibly from Phil Kaziewicz (at least it's in the code header) and is calling a library (#include "sriftas.h":wink: but I do not I can find nowhere; could someone or the author himself share the link from that library? I would be very grateful
The sketch link is this: // Author: Phil Kaziewicz 19th July 2014// 64x32 LED display matrix test code - Pastebin.com

just delete #include "sriftas.h" and add font data (font8x16_basic[] & font8x16_basic[]) to the sketch, done compiliing and work as well for me. thanks for all

so ive made a void to draw some words easily,

just call it by

drawText(0, 8, "test");
void drawText (int x, int y, const String text)
{
  int start;
  int len = text.length();
  char buf[len + 1];
  text.toCharArray(buf, len + 1);
  while (len > 0) {
    drawChar(x, y, buf[start], 2, false);
    start ++;
    x += 8;
    if (start >= len)
    {
      x = 0;
      break;
    }
  }
}

Combed:
ive made a void

Good work, but its not called a "void". Its called a function. The function's return type is void (meaning it has no return value).

Combed:
just delete #include "sriftas.h" and add font data (font8x16_basic[] & font8x16_basic[]) to the sketch, done compiliing and work as well for me. thanks for all

Hi Combed! Thanks for the answer. I have no idea where to add the lines you said; could you please send me the sketch link you have (with those lines added)? Thank you very much!

Combed:
just delete #include "sriftas.h" and add font data (font8x16_basic[] & font8x16_basic[]) to the sketch, done compiliing and work as well for me. thanks for all

I again Combed!
I did the procedure you told me (I think I did right) but it is showing the following error:

Arduino: 1.8.5 (Windows 10), Card: "Arduino / Genuine One"

50: 53: fatal error: twi.h: No such file or directory C: \ Users \ Daniel \ Documents \ Arduino \ libraries \ Wire \ Wire.cpp

#include "twi.h" // i2c software bit-bang emulation
^
compilation terminated.

exit status 1
Compiling Error for Arduino / Genuine One Card

I think it's in relation to the Wire library but, I've used others as well.

And replacing the Wire library with another, (from PaulStoffregen) shows this:

Arduino: 1.8.5 (Windows 10), Card: "Arduino / Genuine One"

Compilation options changed, recompiling all
D: \ Arduino \ LEDs Matrix 16x64 \ 16x64_Led_Matrix_Clock_DS1307 (Jan.2019) \ 16x64_Led_Matrix_Clock_DS1307_without_sriftas \ 16x64_Led_Matrix_Clock_DS1307_without_sriftas.ino: In function 'void drawDigital (uint16_t, uint16_t, uint8_t)':

16x64_Led_Matrix_Clock_DS1307_without_sriftas: 365: Error: 'digitals' was not declared in this scope

const uint8_t * pSrc = digitals + n * 16;
^
exit status 1
'digitals' was not declared in this scope

Hugs from Daniel Fernandes

PaulRB:
Good work, but its not called a "void". Its called a function. The function's return type is void (meaning it has no return value).

that what i mean :), iam beginner for this, I'ill improve my word in the next post thanks for the correction

Dancopy:
Hi Combed! Thanks for the answer. I have no idea where to add the lines you said; could you please send me the sketch link you have (with those lines added)? Thank you very much!

you're welcome, just download and tell me if it works

Dancopy:
I again Combed!
I did the procedure you told me (I think I did right) but it is showing the following error:

Arduino: 1.8.5 (Windows 10), Card: "Arduino / Genuine One"

50: 53: fatal error: twi.h: No such file or directory C: \ Users \ Daniel \ Documents \ Arduino \ libraries \ Wire \ Wire.cpp

#include "twi.h" // i2c software bit-bang emulation
^
compilation terminated.

exit status 1
Compiling Error for Arduino / Genuine One Card

I think it's in relation to the Wire library but, I've used others as well.

And replacing the Wire library with another, (from PaulStoffregen) shows this:

Arduino: 1.8.5 (Windows 10), Card: "Arduino / Genuine One"

Compilation options changed, recompiling all
D: \ Arduino \ LEDs Matrix 16x64 \ 16x64_Led_Matrix_Clock_DS1307 (Jan.2019) \ 16x64_Led_Matrix_Clock_DS1307_without_sriftas \ 16x64_Led_Matrix_Clock_DS1307_without_sriftas.ino: In function 'void drawDigital (uint16_t, uint16_t, uint8_t)':

16x64_Led_Matrix_Clock_DS1307_without_sriftas: 365: Error: 'digitals' was not declared in this scope

const uint8_t * pSrc = digitals + n * 16;
^
exit status 1
'digitals' was not declared in this scope

Hugs from Daniel Fernandes

i dont know what is your problem exactly, i think you should re install your arduino, or do you use portable arduino ide?

it_works.ino (28.6 KB)

Hi Combed! Thanks for sending me your sketch; very cool, worked but for me, with some very noticeable Flicker.
Another friendly thing: It's difficult (for me it is) to add the colon between the hours and the minutes and between the minutes and the seconds, as here: Interfacing with computer via serial - Arduino for STM32
Thanks again

Dancopy:
Hi Combed! Thanks for sending me your sketch; very cool, worked but for me, with some very noticeable Flicker.
Another friendly thing: It's difficult (for me it is) to add the colon between the hours and the minutes and between the minutes and the seconds, as here: Interfacing with computer via serial - Arduino for STM32
Thanks again

can you give me some picture how flicker looks like, maybe i can help you. i think the problem is the value "prescaler" that you use.
have you connected EN pin form panel to pin 2 arduino ?

this is my code to show digital clock, hours minutes seconds included. you can use it for your reference.

drawText.ino (32 KB)

Excellent Combed!!! Your 'drawText' sketch now works perfectly for me with the pins:

// Connections to board
const byte latchPin = 8;
const byte clockPin = 12;
const byte data_R1 = 10; // I changed from 11 to 10
const byte data_R2 = 11; // I changed from 10 to 11
const byte en_74138 = 2;
const byte la_74138 = 3;
const byte lb_74138 = 4;
const byte lc_74138 = 5;
const byte ld_74138 = 6;

Thank you very much ++

BlackMajj:
I'll try the 128x16 code in the weekend.
I suspect that one will give me less of an headache when it's just made for a "longer display".

Thanks a bunch for the tip on where in the code I can get it to scroll all the rows.
That vital info will help me a lot, so now I could probably use the 64x32 code as well. :slight_smile:

Will try to fiddle with the delay(15) and see if it solves the scrolling issue I am plagued with.
On the left side when the letters scroll out everything looks right.
So a "E" for instance will on the left go from an E to three lines, then three dots and then it's gone.
On the right side it just appears as an complete E two columns from the end and starts scrolling to the left. :confused:
The last two columns never see any action on my display when scrolling text. :~

But I'll see what I can figure out during the weekend. :slight_smile:

As for the adressing on the red and green, it seems that it just sets either red or green pin high but the rest seems the same.
This is a code part from another sketch I found that has the green/red/orange working but no fancy scrolling and such.
Just shows clock in green and Hello in red.

  {

digitalWrite(greenPin,HIGH);
                  digitalWrite(oePin, HIGH);
                  digitalWrite(aPin,row & B0001 );
                  digitalWrite(bPin,row & B0010 );
                  digitalWrite(cPin,row & B0100 );
                  digitalWrite(dPin,row & B1000 );
                  digitalWrite(strPin, LOW);
                  shiftOut(redPin, sckPin, MSBFIRST, pbuffer_r[0][row]);
                  shiftOut(redPin, sckPin, MSBFIRST, pbuffer_r[1][row]);
                  shiftOut(redPin, sckPin, MSBFIRST, pbuffer_r[2][row]);
                  shiftOut(redPin, sckPin, MSBFIRST, pbuffer_r[3][row]);
                  digitalWrite(strPin, HIGH); 
                  digitalWrite(oePin, LOW);
                  delayMicroseconds(draw_delay);  // delay for seeing red
                  digitalWrite(redPin,HIGH);
                  digitalWrite(oePin, HIGH);
                  digitalWrite(strPin, LOW);
                  shiftOut(greenPin, sckPin, MSBFIRST, pbuffer_g[0][row]);
                  shiftOut(greenPin, sckPin, MSBFIRST, pbuffer_g[1][row]);
                  shiftOut(greenPin, sckPin, MSBFIRST, pbuffer_g[2][row]);
                  shiftOut(greenPin, sckPin, MSBFIRST, pbuffer_g[3][row]);
                  digitalWrite(strPin, HIGH); 
                  digitalWrite(oePin, LOW);
                  delayMicroseconds(draw_delay);  // delay for seeing green
  }

Hi BlackMajj
Do you have the complete sketch for this Dot MATRIX 64x32 Bicolor LED? If so, could you put it here?
Thank you

Dear members,
May I display more than 8 independent character in 64x16 dot matrix statically, not animated ?

Greetings to all!
I am not a programmer, I am far from it, but I am simply an admirer, especially of these colored LED panels and, I would like your opinion on which LED array module should I buy, to do, among other things, a Clock and/or Static or Dynamic Scrolling Text, in two lines or not, considering the ease of finding Arduino sketches for this.
These are two preferred options:

  1. https://pt.aliexpress.com/item/32977781030.html?spm=a2g0o.cart.99999999.258.17053c00AzXLXx

  2. LED Business Signs for sale | eBay

Option (1) would be a two-color panel (64x16), and option (2) would be two panels (16x24 x2 = 16x48), considering its smaller size;
In short, what better panel, if I may say so?
Thanks to anyone who can help me.

Hello everybody.

i don't know how to use array pointer ,can you help me !

i downloaded shortened_Final_Code_A.ino , it works good .
But i don't understand these code ,can you explan for me .
Thankyou

for (byte i=0; i<fontrows; i++) {
*pDst = *pSrc; // populate the destination byte
pDst += 8; // go to next row on buffer
pSrc++; // go to next set of 8 pixels in character
}


and full codes:
// Arduino 1.0.5 UNO R3

// Connections to board
const byte latchPin=8;
const byte clockPin=12;
const byte data_R1=10;
const byte data_R2=11;
const byte en_74138=2;
const byte la_74138=3;
const byte lb_74138=4;
const byte lc_74138=5;
const byte ld_74138=6;
byte ScanRow = 0;
unsigned long counter;

//Insert message here ("message ")
const char message[] = "Tustin High School T-Tech Academy ";

// Routine to print a single character in one of 8 columns
// Inputs:
// x is one of (0,16,24,32,40,48,56),
// y (0 to 16 or 24 depending upon font size),
// n is either (0 to 9) or an ascii value,
// font=0 for big font, 2 for small font,
// inverse is true for an inverted character
void drawChar(uint16_t x, uint16_t y, byte n, byte font, boolean inverse) {
byte charbytes[16], fontrows, xover8 = x>>3;
int index;
if (0 != (x % 8)) return; // x not a multiple of 8
if ((n>9) && (n<32)) return; // invalid character
if (font==0) fontrows=16; else fontrows=8;
if ((n>=0) && (n<=9)) index=(n+16)*fontrows; else index=(n-32)*fontrows; // go to the right code for this character

// addressing start at buffer and add y (rows) * (WIDTH is 64 so WIDTH/8) is 8 plus (x / 8) is 0 to 7
byte *pDst = buffer + (y << 3) + xover8;
for (byte i=0;i<fontrows;i++) { // fill up the charbytes array with the right bits
if (font==0) charbytes = pgm_read_byte(&(font8x16_basic[index+i]));

  • // reverse bit order for fonts 0 and 1*
  • if (font != 0) {*
    charbytes = (charbytes & 0xF0) >> 4 | (charbytes & 0x0F) << 4;
    charbytes = (charbytes & 0xCC) >> 2 | (charbytes & 0x33) << 2;
    charbytes = (charbytes & 0xAA) >> 1 | (charbytes & 0x55) << 1;
    * };*
    if (inverse) charbytes = ~charbytes*;*
    * };*
    _ const byte pSrc = charbytes; // point at the first set of 8 pixels
    for (byte i=0; i<fontrows; i++) {
    pDst = pSrc; // populate the destination byte_
    _ pDst += 8; // go to next row on buffer

    pSrc++; // go to next set of 8 pixels in character*

    * }
    };
    void moveLeft(byte pixels, byte rowstart, byte rowstop) { // routine to move certain rows on the screen "pixels" pixels to the left
    byte row, column;
    short unsigned int address;
    for (column=0;column<8;column++) {
    for (row=rowstart;row<rowstop;row++) {
    address = (row<<3) + column; /// right here!
    if (column==7)
    buffer[address] = buffer[address]<<pixels; // shuffle pixels left on last column and fill with a blank*

    * else { // shuffle pixels left and add leftmost pixels from next column*
    * byte incomingchar = buffer[address+1];
    buffer[address] = buffer[address]<<pixels;
    for (byte x=0;x<pixels;x++) { buffer[address] += ((incomingchar & (128>>x)) >> (7-x))<<(pixels-x-1); };
    }
    }
    }
    };
    void shiftOut(byte row) { // fast routine to shove out 8 columns into two rows via board's shift registers
    for(byte column=0;column<8;column++) {
    byte index = column + (row<<3);
    for(byte i=0;i<8;i++) { _

    PORTB &=~(3<<(data_R1-8)); // data_R2 is LOW; data_R1 is LOW;
    _ PORTB &=~(1<<(clockPin-8)); // digitalWrite(clockPin,LOW);_
    PORTB |= !((buffer[index]>>(7-i)) & 0x01) << (data_R1-8); // top set of rows*

    * PORTB |= !((buffer[index+128]>>(7-i)) & 0x01) << (data_R2-8); // bottom set of rows*
    * PORTB |= 1<<(clockPin-8); // digitalWrite(clockPin,HIGH);*
    * };*
    * };*
    };
    ISR(TIMER2_COMPA_vect){
    _ cli();

    * digitalWrite(en_74138, HIGH); // Turn off display*
    * shiftOut(ScanRow); // Shift out 8 columns*
    * digitalWrite(latchPin, LOW);
    digitalWrite(latchPin, HIGH);_

    PORTD = (ScanRow << 3) | (PORTD & 0X87); // Highlight row: pins 3 4 5 6 (la_74138 lb_74138 lc_74138 ld_74138)
    digitalWrite(en_74138, LOW); // Turn on display*

    * ScanRow++; // Do the next pair of rows next time this routine is called*
    * if (ScanRow==16) ScanRow=0;*
    * sei();*
    };
    void setup() {
    // Set up Timer2 as the scanning interrupt timer
    * cli(); // clear interrupts*
    * TCCR2A = 0; TCCR2B = 0; TCNT2 = 0;*
    * TCCR2B |= (1 << CS12) | (1 << CS10); // Set 1024 prescaler*
    * // 160Hz scan rate = 10 frames/second (16 pairs of rows)*
    _ OCR2A = 97; // 97 = (16,000,000 / (1024160)) - 1_
    _ TCCR2A |= (1 << WGM21); TIMSK2 |= (1 << OCIE2A);*_

* pinMode(latchPin,OUTPUT); pinMode(clockPin,OUTPUT);*
* pinMode(data_R1,OUTPUT); pinMode(data_R2,OUTPUT);*

* pinMode(en_74138,OUTPUT);
pinMode(la_74138,OUTPUT); pinMode(lb_74138,OUTPUT);
pinMode(lc_74138,OUTPUT); pinMode(ld_74138,OUTPUT);*

* digitalWrite(en_74138, LOW);
digitalWrite(data_R1, HIGH); digitalWrite(data_R2, HIGH);
_ counter = millis();
sei(); //allow interrupts*

};
*void loop() { *
static int count=0;_

// display next character of message
* drawChar(56,16,message[count%(sizeof(message)-1)],0,false);*
* count = (count + 1);*
* // move the text 7 pixels (not 8 because it looks better) to the left*
* for (byte i=0; i<4; i++) {*
* delay(80);*
* moveLeft(2,1,32);*
* };*
};

@taipscode
Sorry, after so long, what you do not understand in this sketch? It is simply to scroll a configurable text message on the line: const char message [] = "Tustin High School T-Tech Academy";