hotz
New Member
Posts: 28
|
Post by hotz on Feb 11, 2017 21:40:43 GMT
The Arduino "Adafruit_DotStar" Library will not compile for the ShieldBuddy. It works fine with other Arduino boards. Here is a link to the library: github.com/adafruit/Adafruit_DotStar/archive/master.zipHere is a link to an Overview of the Dotstar LEDs: learn.adafruit.com/adafruit-dotstar-ledsThe code to drive these LEDs on their own core is a perfect showcase for the ShieldBuddy! If we can get it to work. We are interested in purchasing many more ShieldBuddy's if we can get this to work. Any help would be greatly appreciated.
|
|
|
Post by Admin on Feb 11, 2017 23:11:38 GMT
Hi,
We have compiled this successfully and we have someone working on getting a dotstars strip running!
|
|
hotz
New Member
Posts: 28
|
Post by hotz on Feb 11, 2017 23:32:29 GMT
This is Great News!
Please let me know any steps necessary for getting it to compile and I will also be happy to test multiple Dotstar strips.
Note: I am using the Arduino IDE
Thank you very much!
|
|
|
Post by mjb on Feb 13, 2017 13:58:28 GMT
The strandtest.ino example from Adafruit compiles OK with the ShieldBuddy add-in v1.30. I cannot test it right now though. It seems to use the default spi slave select on pin10 with the MISO = P201.1, MOSI = P201.4 SCK = P201.3. BTW: We will fit the 6w pin header for P201 on the next ShieldBuddy build.
|
|
|
Post by mjb on Feb 14, 2017 10:28:05 GMT
How many SPI channels do you need? Is it OK to have many chipselects on one SPI channel or do you need many independent SPI channels each with many chipselects?
|
|
hotz
New Member
Posts: 28
|
Post by hotz on Feb 14, 2017 18:58:52 GMT
We are running 10 parallel streams where each String has it's own DATAPIN and they all share a common CLOCKPIN.(#define CLOCKPIN_Master 13 // ) This works great on an Arduino Due and is extremely stable, but we desire faster speed. This is what attracted us to the Shieldbuddy. We have optimized the code for time critical MIDI processing, but highly desire to have all of the Dotstar LED code running on it's own core. We are driving 200 Dotstar LEDs in this configuration.
Thank you for your assistance in this matter.
Below are the Pin assignments we are using on the Arduino Due.
#define DATAPIN_S01 2 // #define DATAPIN_S02 3 // #define DATAPIN_S03 4 // #define DATAPIN_S04 5 // #define DATAPIN_S05 6 // #define DATAPIN_S06 7 // #define DATAPIN_S07 8 // #define DATAPIN_S08 9 // #define DATAPIN_S09 10 // #define DATAPIN_S10 11 //
#define CLOCKPIN_Master 13 //
Adafruit_DotStar strip_S01 = Adafruit_DotStar(NUMPIXELS_S01, DATAPIN_S01, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S02 = Adafruit_DotStar(NUMPIXELS_S02, DATAPIN_S02, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S03 = Adafruit_DotStar(NUMPIXELS_S03, DATAPIN_S03, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S04 = Adafruit_DotStar(NUMPIXELS_S04, DATAPIN_S04, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S05 = Adafruit_DotStar(NUMPIXELS_S05, DATAPIN_S05, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S06 = Adafruit_DotStar(NUMPIXELS_S06, DATAPIN_S06, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S07 = Adafruit_DotStar(NUMPIXELS_S07, DATAPIN_S07, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S08 = Adafruit_DotStar(NUMPIXELS_S08, DATAPIN_S08, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S09 = Adafruit_DotStar(NUMPIXELS_S09, DATAPIN_S09, CLOCKPIN_Master, DOTSTAR_BGR); Adafruit_DotStar strip_S10 = Adafruit_DotStar(NUMPIXELS_S10, DATAPIN_S10, CLOCKPIN_Master, DOTSTAR_BGR);
|
|
hotz
New Member
Posts: 28
|
Post by hotz on Feb 14, 2017 21:54:47 GMT
I got the Strandtest code to compile. But it has another issue now.
// ******** Although the code now compiles - The following lines cause the program not to loop ***
Adafruit_DotStar strip = Adafruit_DotStar( NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG);
// ******** end of - [Although the code now compiles - The following lines causes the program not to loop] ***
If I set up Loop 1 and 2 to display a running Loop message in the Serial Monitor, such as the following code, they will display properly if the code just above and other references to "Strip" are commented out.
However, if I comment out all other references to "Strip" and try and leave the above lines in place, it will still not allow the program to display the following Loop messages.
// ************** Loop Display test messages for Core 1 and Core 2 ******************* void loop1() { // put your main code for core 1 here, to run repeatedly: delay(300); /* Make it look like this core is doing something useful! */ while (Htx_LockResource(&SerialASC.PortInUse) == Htx_RESOURCE_BUSY) { ; } SerialASC.print("Hello from Core 1\n\r"); Htx_UnlockResource(&SerialASC.PortInUse); if (serialASCPrint == true) { while (Htx_LockResource(&SerialASC.PortInUse) == Htx_RESOURCE_BUSY) { ; } SerialASC.print("Hello from Core 1\n\r"); Htx_UnlockResource(&SerialASC.PortInUse); } }
void loop2() { // put your main code for core 2 here, to run repeatedly: delay(500); /* Make it look like this core is doing something useful! */ while (Htx_LockResource(&SerialASC.PortInUse) == Htx_RESOURCE_BUSY) { ; } SerialASC.print("Hello from Core 2\n\r"); Htx_UnlockResource(&SerialASC.PortInUse); }
// ************** end of - Loop Display test messages for Core 1 and Core 2 *******************
|
|
|
Post by Admin on Feb 14, 2017 22:00:35 GMT
Ok,we'll try it tomorrow!
|
|
hotz
New Member
Posts: 28
|
Post by hotz on Feb 14, 2017 22:48:02 GMT
Thanks in Advance!
|
|
|
Post by mjb on Feb 15, 2017 15:55:01 GMT
Here is an example with 30 outputs and 3 independent clocks. This seems to run OK with all 3 cores. The clock is around 2MHz but this could be increased to 7MHz, if required.
strandtest30.ino (17.15 KB)
|
|
hotz
New Member
Posts: 28
|
Post by hotz on Feb 15, 2017 19:17:26 GMT
Thank you very much for doing this.
[Before reading the following please note, that the Adafruit DotStar StrandTest works fine while compiling for an Arduino Due, with the fresh install of the Adafruit_DotStar-master library mentioned below. However, I run into exactly the same errors mentioned below, when compiling it for the ShieldBuddy.]
I did a fresh install of the Adafruit_DotStar-master library and ran into a few compile errors. The first was "Adafruit_DotStar.h:35:23: fatal error: WProgram.h: No such file or directory" The second error "Adafruit_DotStar.h:37:27: fatal error: pins_arduino.h: No such file or directory" I got around the first 2nd errors above by replacing the lines:
#include <WProgram.h> #include <pins_arduino.h>
with
#include <Arduino.h>
in the following section of Adafruit_DotStar.h
#if (ARDUINO >= 100) #include <Arduino.h> #else #include <Arduino.h> // #include <WProgram.h> // #include <pins_arduino.h> #endif
Now I am at a point where I am getting the following error:
Adafruit_DotStar.cpp:114:26: error: 'F_CPU' was not declared in this scope
Did you run into any of these issues?
|
|
|
Post by Admin on Feb 15, 2017 20:18:42 GMT
It sounds like you are using an old version of the Shieldbuddy addin as I saw these problems when I first tried this library. Please download the latest version (see thread about v1.30 is now released).
|
|
hotz
New Member
Posts: 28
|
Post by hotz on Feb 22, 2017 6:17:52 GMT
I ended up un-installing everything and re-installing it all from scratch. After that I was able to get it to build without errors. There are still a few issues, but in general it is now working.
Thank you again for your help.
|
|
|
Post by mjb on Feb 22, 2017 8:55:52 GMT
Good! Are you using all 30 Dotstar channels in the example? We are also porting the FastLED driver to the ShieldBuddy.
In the next add-in release, we will speed up the digitalWrite() function to around 45ns rather than the current 120ns. This will allow higher bit-based SPI bit rates.
|
|
hotz
New Member
Posts: 28
|
Post by hotz on Mar 28, 2017 9:57:38 GMT
Sorry it took so long to reply, but I was trying to resolve an issue that seems to be in the Shieldbuddy itself.
We ordered 2 more boards to see if the problem was indeed in the Shieldbuddy.
I have received 4 Boards now from 2 different shipments and they all have the same problem. Analog Inputs A4 & A5 have 5V(4.84V). on brand new boards. Even after programming the boards to Analog Reads on all of the Analog Inputs and making sure that the pinMode is set to INPUT on all of the Analog Inputs A4 & A5 still have 5V(4.84V).
Any help with this matter would be greatly appreciated as I need all of the Analog Inputs for our current project, which will make use of many Shieldbuddy's if we can get them to work properly.
I also made a thread about this problem.
|
|