Go Down

Topic: Scrolling LED matrix display - Parola for Arduino (Read 302535 times) previous topic - next topic

koichirose

The hardware you linked to does not work with this library. It does not use the Max7219 IC for controlling the matrix.
Thank you, sorry about this. Saved me a headache.

borzov161

Hi Marco.
Thank you for the example of the Cyrillic alphabet.
I added the Russian alphabet to the file
Cyrillic_by_ton4eff_var_single.h
Cyrillic_by_ton4eff_var_single.txt
replaced the question on the letters.
https://yadi.sk/d/2-43o7tO3JXGvA

graphics of each letter to do lazy (in txt).
written in Excel.


DaIceMan

I've discovered that what I'm personally experiencing is a start-up issue which happens only after a power cycle when 2 or more zones are defined in the SW. I tested it up to 4 zones and in this case I observe also that some of the displays in the last positions of the chain turn off after few seconds.
If I perform an Arduino soft reset, everything goes back to normal and works fine. The same if I reload the sw a second time keeping the Arduino board on.

It seems an initialization timing issue, which might be probably more evident in case of long device chains (I presume...)

Hi Antonio and Marco, I have had the same issues. I am running IDE 1.6.9 and the latest downloadable library offered. The Zone example sketches run fine but if I compile a larger code (a 2 zone scrolling time display I modified, nothing too fancy) I have intermittent cold start problems. I have also encountered warm boot issues, but fewer. Simply rearranging some headers or adding an include or moving some code changes this behaviour so it seems memory (alloc/init) related. I have tried this on 2 NANOs and one UNO (which I use for other projects and am 100% certain work fine). Surprisingly if I leave the Arduino powered on (blank display) and wait for some time, then power off and on, it magically starts working again - very mysterious. As I said, the example sketches without zones always work 100% after every cold boot or warm boot, I have noticed that my array flashes every so slightly at code start but then remains blank when the problem occurs. When it blanks, I have to reflash the Arduino then unplug and warm reset it to get it working again - this happens on all the arduinos I have so it's not arduino hardware related. I first thought of some faulty 8x8 module (I am using 5 in a row, FC-16 type) but I haven't had cold boot problems with any other test code (scrolling sprites etc) I tried in these weeks. I downloaded the latest library from Marco's links now and will try again and see what happens and report back.

   A question regarding the Zones: is it possible to toggle a single LED in this mode or is it only possible to pass the whole string pointer to be displayed then refresh? I would like to update a single dot based on an external random event/signal in the zone without the need to refresh all of the specific zone's contents. I guess I could do this through the MDMAX lib directly but would like to avoid some bashing.


   Cheers for the support!

marco_c

Quote
is it possible to toggle a single LED in this mode or is it only possible to pass the whole string pointer to be displayed then refresh?
You will need to modify the MD_Parola library to exposed the MD_MAX72xx object as a public variable. You can then access this from your user code.
Disclaimer: This can have unexpected consequences as the Parola library expects exclusive access to a zone.
Arduino Libraries https://github.com/MajicDesigns?tab=Repositories
Parola for Arduino https://github.com/MajicDesigns/Parola
Arduino++ blog https://arduinoplusplus.wordpress.com

DaIceMan

#1114
Aug 12, 2017, 08:50 pm Last Edit: Aug 12, 2017, 08:56 pm by DaIceMan
Marco, thanks for the heads up: for the moment I bypassed the problem by creating a specific font with one bit enabled where I want it which I append to the displayed string when I need to toggle it (as it's at the end of the string I just need to toggle a bit in the first column as I still have space in the zone). This way it's also safer and I don't need to expose the library MAX lib at all.

Cheers

mrsharkit

hi
just installed parola and max72xx libs, testing on esp8266, no problem with example MD_MAX72XX_Message_ESP8266 but the Parola_Scrolling_ESP8266 gives these errors... hints? thanks in advance

Code: [Select]
Arduino:1.8.3 (Windows 10), Scheda:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"


Sto compilando lo sketch...
"C:\arduino\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/include" "-IC:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/lwip/include" "-IC:\Users\mrshark\AppData\Local\Temp\arduino_build_88335/core" -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections -DF_CPU=80000000L -DLWIP_OPEN_SRC   -DARDUINO=10803 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_NODEMCU"  -DESP8266 "-IC:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266" "-IC:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0\variants\nodemcu" "-IC:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi\src" "-IC:\arduino\portable\sketchbook\libraries\MD_Parola-master\src" "-IC:\arduino\portable\sketchbook\libraries\MD_MAX72XX-master\src" "-IC:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0\libraries\SPI" "C:\Users\mrshark\AppData\Local\Temp\arduino_build_88335\sketch\Parola_Scrolling_ESP8266.ino.cpp" -o "C:\Users\mrshark\AppData\Local\Temp\arduino_build_88335\sketch\Parola_Scrolling_ESP8266.ino.cpp.o"
C:\Users\mrshark\AppData\Local\Temp\arduino_modified_sketch_983164\Parola_Scrolling_ESP8266.ino: In function 'void getData(char*, uint8_t)':

Parola_Scrolling_ESP8266:189: error: 'P' was not declared in this scope

     P.setTextEffect(scrollEffect, scrollEffect);

     ^

Parola_Scrolling_ESP8266:200: error: 'P' was not declared in this scope

     P.setInvert(*pStart == '1');

     ^

Parola_Scrolling_ESP8266:210: error: 'P' was not declared in this scope

     PRINT("\nSpeed: ", P.getSpeed());

                        ^

C:\Users\mrshark\AppData\Local\Temp\arduino_modified_sketch_983164\Parola_Scrolling_ESP8266.ino:35:56: note: in definition of macro 'PRINT'

 #define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }

                                                        ^

Parola_Scrolling_ESP8266:211: error: 'P' was not declared in this scope

     P.setSpeed(speed);

     ^

C:\Users\mrshark\AppData\Local\Temp\arduino_modified_sketch_983164\Parola_Scrolling_ESP8266.ino: In function 'void setup()':

Parola_Scrolling_ESP8266:304: error: 'P' was not declared in this scope

   P.begin();

   ^

C:\Users\mrshark\AppData\Local\Temp\arduino_modified_sketch_983164\Parola_Scrolling_ESP8266.ino: In function 'void loop()':

Parola_Scrolling_ESP8266:337: error: 'P' was not declared in this scope

   if (P.displayAnimate())

       ^

Uso la libreria ESP8266WiFi alla versione 1.0 nella cartella: C:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi
Uso la libreria MD_Parola-master alla versione 2.6.4 nella cartella: C:\arduino\portable\sketchbook\libraries\MD_Parola-master
Uso la libreria MD_MAX72XX-master alla versione 2.9.0 nella cartella: C:\arduino\portable\sketchbook\libraries\MD_MAX72XX-master
Uso la libreria SPI alla versione 1.0 nella cartella: C:\arduino\portable\packages\esp8266\hardware\esp8266\2.3.0\libraries\SPI
exit status 1
'P' was not declared in this scope

marco_c

Looks like it can't find the Parola library. Do any of the other examples compile? What about for different hardware selection?
Arduino Libraries https://github.com/MajicDesigns?tab=Repositories
Parola for Arduino https://github.com/MajicDesigns/Parola
Arduino++ blog https://arduinoplusplus.wordpress.com

mrsharkit

Looks like it can't find the Parola library. Do any of the other examples compile? What about for different hardware selection?
sorry, my bad... i copied the settings from the max72xx esp8266 example, and there it's defined as MX and not P... forgive me :)
just playing with the examples, impressive work, congratulations :)

DaIceMan

#1118
Aug 20, 2017, 08:31 pm Last Edit: Aug 20, 2017, 11:18 pm by DaIceMan Reason: Updates on tests
Just to follow up on the previously stated cold reset problem, I updated to the latest libs and still experience it (I tried with IDE 1.6.9 and latest 1.8.3). If I power off then on the arduino, it won't display anything on my matrix which is an FC-16 type (maybe occasionally flash some blocks at PON but that's all). I have to reset it and then it will work again. Sometimes when I modify something it won't even work at all.
  Additionally, (may or may not be related) I added a DCF77 lib to sync with the Frankfurt DCF time signal and when it syncs, the display freezes (stops scrolling) and resumes after 1 second but it fails to update. I use this library on 2 other OLED clocks I made and it works perfectly so I am sure this library is ok. Apparently when the coherent timesync is detected, it fails to enter the routine and just skips it (I set a flag when the sync is received and update the nvram in my RTC which is never updated). The lib I am using is by Thijs Elenbaas (http://thijs.elenbaas.net/2012/04/arduino-dcf77-radio-clock-receiver-library/) FYI. I will try using the SetSyncProvider to see if something changes.
 After I updated to 1.8.3 I can no longer get the display to work unless I remove the DFC lib from the code. Additionally if I reduce the blocks to 4 (I am using 5 at the moment) it works, but only at reset not at cold boot. It seems memory related (am using 27284bytes with DFC lib included and 624bytes of RAM so it shouldn't have memory issues) but I can't put my finger on what is going on. The code is based on this which I updated to work with recent IDEs and added the relevant DCF support:
http://www.instructables.com/id/Arduino-Parola-Zone-Time-Msg-Display/
I can paste the whole code here if someone wants to try it - to reproduce the erratic behaviour you need at least the DCF and RTC libs to be included else it works fine apparently.

** Update: I just ran the Parola_Zone_Display demo and that also *fails* to work when I cold boot the arduino (sometimes it doesn't even run on warm boot as with the above clock code). I have tried now on a brand new NANO and the same happens (tried on an UNO and 3 NANOs). However the Parola_Display example works fine (I have 5 modules) so the library is set correctly. Apparently things start acting up when using ZONES and having LESS than 6 modules. The MD_MAX_72xx test works also fine.

*** Update2: I managed to isolate the problem to minimum modules in a zone and number of modules: it seems that with less than 6 modules the code would randomly work. So I increased the number of modules to 6 from 5 and shifted the zones 1 module so that it would display correctly still on 5. Apparently now it will cold boot correctly at PON. I did the same with the Parola_Zone_Demo reducing the number of zones to 2 editing the code reducing the array to 2 blocks instead of 3 and increasing the modules to 6 and apparently this makes it work (even if the letters in one zone are shifted out due to a missing module).

marco_c

If you can isolate to code that does not work, small change, and code that works I would be interested. I have not seen this behavior with my system (Uno).
Arduino Libraries https://github.com/MajicDesigns?tab=Repositories
Parola for Arduino https://github.com/MajicDesigns/Parola
Arduino++ blog https://arduinoplusplus.wordpress.com

DaIceMan

#1120
Aug 21, 2017, 04:15 pm Last Edit: Aug 21, 2017, 04:28 pm by DaIceMan
Marco, I have uploaded a video showing the erratic behavior on my FC-16 matrixes with the MD_Parola_Zone example. The only changes I made to the example code are reducing the Zones to 2 from 3 and changing the devices to 5 and 6 and modifying the *pc array for a matrix of 3x2 instead of 3x3 and subsequently reducing the inFX and outFX calls to 2 elements. When I set 5 zones it will show random stuff on the matrix or nothing at all. With 6 zones it will work consistently even after cold boot. Hope this sheds some light on the problem. I first cold boot the arduino with 5 zones, then upload with 6 and upload 5 again and then 6 again to show consistent buggy behavior with 5 and stable operation with 6.

https://www.youtube.com/watch?v=ACTUDfL_-uI

 Let me know if you need any other tests.

marco_c

What versions of the MD_MAX72xx library are you using? Have you got more than one version of any of the libraries installed on your computer?

You seem to be using the 'hardware' SPI. Please confirm.

Have you got the pull-up (or pull-down, can't remember which) on the SPI control lines? Please Google this one as I don't remember the details.
Arduino Libraries https://github.com/MajicDesigns?tab=Repositories
Parola for Arduino https://github.com/MajicDesigns/Parola
Arduino++ blog https://arduinoplusplus.wordpress.com

DaIceMan

#1122
Aug 21, 2017, 11:51 pm Last Edit: Aug 22, 2017, 12:11 am by DaIceMan
  I have version 2.9.1 (I believe the latest, I downloaded it not long ago) of the MD_MAX72xx lib and yes it is in hardware SPI mode. I have a 10k pulldown (or pullup, either works to keep CS/LOAD stable) on the CS/LOAD pin 10. I tried with or without (started without initially), but the issue remained. Will try with another 10K as this one is less than 1/4w and it's legs are so thin they may not make always reliable contact with the protoboard pinch contacts. Maybe this can cause noise and generate unpredictable results. However this doesn't explain why without touching anything and simply changing from 6-5 or 5-6 modules in the code the failure is consistent and repeatable every time - I doubt it's a bounce or contact pulldown/pullup issue. Will try again with another resistor anyhow.

Cheers

* Update: just checked with another 10K resistor in another position, exactly the same behavior occurs as in the video when compiling with 5 and 6 modules.

borzov161

Marco, I have uploaded a video showing the erratic behavior on my FC-16 matrixes with the MD_Parola_Zone example. The only changes I made to the example code are reducing the Zones to 2 from 3 and changing the devices to 5 and 6 and modifying the *pc array for a matrix of 3x2 instead of 3x3 and subsequently reducing the inFX and outFX calls to 2 elements. When I set 5 zones it will show random stuff on the matrix or nothing at all. With 6 zones it will work consistently even after cold boot. Hope this sheds some light on the problem. I first cold boot the arduino with 5 zones, then upload with 6 and upload 5 again and then 6 again to show consistent buggy behavior with 5 and stable operation with 6.

https://www.youtube.com/watch?v=ACTUDfL_-uI

 Let me know if you need any other tests.
tests without the scoreboard, give similar results.
the led on pin 13 as an indicator of work. or not work

marco_c

Quote
tests without the scoreboard, give similar results.
the led on pin 13 as an indicator of work. or not work
I have no idea what this means. Can you please explain in detail.
Arduino Libraries https://github.com/MajicDesigns?tab=Repositories
Parola for Arduino https://github.com/MajicDesigns/Parola
Arduino++ blog https://arduinoplusplus.wordpress.com

Go Up