Go Down

Topic: Avago Display LedDisplay Library Bug (Read 696 times) previous topic - next topic

KaR]V[aN

Oct 06, 2009, 06:15 pm Last Edit: Oct 06, 2009, 11:35 pm by karman Reason: 1
Hello,

I've been trying to contact with Tom Igoe since he was the developer of this library but I couldn't find some email to write him. Therefore I think the apropiate place to post the bug is here.

I found an old avago 4 character display from a nortel modular router board so I decided to play a bit with it and arduino and it gave me a lot of fun.

What I found was that the library was originally writen for a 8 character display and (maybe) never tested against a 4 character display, until I tried it out to find it didnt work. Always showed blank display, and running some tests and debugs I found that the display worked if, instead using myDisplay.home(); used myDisplay.setCursor(4);.

I worked a couple of days with that little trick, until an idea crossed my mind like a bolt: the display was a shift register and the library allways sent a 40 lenght array without checking the display length; it was too much for a 20 needed display, so the display showed positions 4 to 7 instead 0 to 3 (20 to 39 instead 0 to 19).

Anyway, here is the patch that fixes this little issue:

Code: [Select]
--- LedDisplay_orig/LedDisplay.cpp      2009-04-17 22:12:49.000000000 +0200
+++ LedDisplay/LedDisplay.cpp      2009-10-06 18:05:14.000000000 +0200
@@ -250,12 +250,14 @@

// this method sends 320 bits to the dot register:
void LedDisplay::loadDotRegister() {
+  // define max data to send, patch for 4 length displays by KaR]V[aN
+  int maxData = displayLength * 5;
  // select the dot register:
  digitalWrite(registerSelect, LOW);
  // enable writing to the display:
  digitalWrite(chipEnable, LOW);
  // shift the data out:
-  for (int i = 0; i < 40; i++) {
+  for (int i = 0; i < maxData; i++) {
    shiftOut(dataPin, clockPin, MSBFIRST, dotRegister[i]);
  }



Hope to see it fixed soon.

Thanks for the effort, Arduino Community and keep up the good job!

PS: As the main arduino.cc page says about this library:
Quote
loadDotRegister() - sends 320 bits to the dot register

320 bits is for 8 character display, 4 character display *must* send 160 bits.
http://karman.cc

KaR]V[aN

Hello,

after reading the forum a little bit more i have to say this topic is in the worng forum and should be under softwaree instead of hardware so please admin, move it to the right forum.

My apoligies.
http://karman.cc

DrLabel

Hello

One question is it possible to display special charaters like ã or ç

if yes who i'm waiting for my display to arrive and i need this ones

TKS

mvcl

Hi,
I extended the code a bit to support two 2 or 4 of the 8 character displays. Four displays end to end give a 32 character display.
Let me know if you want the modifications.

HCMS-2976 has BLUE leds!
see http://www.avagotech.com/pages/en/led_displays/smart_alphanumeric_displays/serial_interface/hcms-2976/

Go Up