Finally with the fantastic help from Mike I have some semblance of a working prototype in place. Video at (apologies for the bad quality of the video):
Look forward to many such projects.
Thanks
Nitin
I have been it itching to do more on this, mainly because it looks so cool. I was thinking of expanding this both horizontally and vertically. So probably from 64 to 128 channels and then from 16 rows to 32 rows.
But given the timing issues this naturally can not be done with a single ATMEGA. I am curious to understand if it is possible to use the same HC-05 and have its output physically go to 2 separate stand alone arduinos and then use the appropriate values from the output in software.
So basically in the processing sketch send over 128 values and use one arduino to drive the first 64 columns and the second one to drive the next 64 but with a single blue tooth module.
Would certainly appreciate any thoughts.
Thanks
Nitin
I am curious to understand if it is possible to use the same HC-05 and have its output physically go to 2 separate stand alone arduinos
If the data is one way only then yes, but I think it would involve some sort of acknowledgment signal and you can't have two Arduinos doing that. It would be better to receive all the data with one Arduino and have it pass on half that to the other Arduino.
However, two Arduinos is seldom the answer. As you have a Max7219 in the mix that is doing the grunt work in regard to multiplexing so their is nothing much holding you back from using just one. Are you chaining the Max7219s?
Thanks for the reply Mike. The data would only be one way since the way this is currently set up, the arduino does not send back a confirmation to the processing sketch doing the FFT to indicate the completion of the display of a frame.
I did some initial test to try to send data from the HC 05 to the PC over the weekend but that did not work. I will probably need more time to set it up properly.
I am using Max7219 based modules, but the problem in its current shape and form was that when sending data at >38400 baud with no acknowledgement/delay between transmissions, the arduino just hangs after a while. This happens specifically when the values from the FFT are large (substantial number of values >8). If i limit the values being sent by processing to 0 - 8 things work just fine even without a delay. If the arduino is taking too long to load the values to the 7219 and the new data set arrives before that, I suppose at some point the sketch on the arduino would lock up.
I currently have a delay of 40 milliseconds before transmissions on the processing and that seems to work well. If i increase the delay the display looks "out of sync" with the music, hence the thought of multiple arduinos.
Thanks for all the guidance.
Hi all i using Max72xxPanel library on my project, i am using visual studio code editor, copied both .h and.cpp file on my include folder, i got following error, unable to guess what cause this error?, how to resolve it?
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o:(.text.startup._GLOBAL__sub_I_pinCS+0x20): undefined reference to Max72xxPanel::Max72xxPanel(unsigned char, unsigned char, unsigned char)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o: in function _GLOBAL__sub_I_pinCS':
main.cpp:(.text.startup._GLOBAL__sub_I_pinCS+0x50): undefined reference to Max72xxPanel::Max72xxPanel(unsigned char, unsigned char, unsigned char)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o:(.text.setup+0x1c): undefined reference to Max72xxPanel::setIntensity(unsigned char)'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o:(.text.setup+0x20): undefined reference to Max72xxPanel::setRotation(unsigned char, unsigned char)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o:(.text.setup+0x24): undefined reference to Max72xxPanel::fillScreen(unsigned short)'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o:(.text.setup+0x28): undefined reference to Max72xxPanel::write()' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o: in function setup':
main.cpp:(.text.setup+0x74): undefined reference to Max72xxPanel::setIntensity(unsigned char)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0x80): undefined reference to Max72xxPanel::setRotation(unsigned char, unsigned char)'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0x8c): undefined reference to Max72xxPanel::setRotation(unsigned char, unsigned char)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0x98): undefined reference to Max72xxPanel::setRotation(unsigned char, unsigned char)'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0xa4): undefined reference to Max72xxPanel::setRotation(unsigned char, unsigned char)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0xae): undefined reference to Max72xxPanel::fillScreen(unsigned short)'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0xb8): undefined reference to Max72xxPanel::write()' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0x11c): undefined reference to Max72xxPanel::write()'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0x12c): undefined reference to Max72xxPanel::fillScreen(unsigned short)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: main.cpp:(.text.setup+0x134): undefined reference to Max72xxPanel::write()'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o:(.text.loop+0x39): undefined reference to Max72xxPanel::setIntensity(unsigned char)' /home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o:(.text.loop+0x43): undefined reference to Max72xxPanel::fillScreen(unsigned short)'
/home/raman/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .pio/build/esp32dev/src/main.cpp.o: in function loop': main.cpp:(.text.loop+0xe2): undefined reference to Max72xxPanel::write()'
collect2: error: ld returned 1 exit status
*** [.pio/build/esp32dev/firmware.elf] Error 1