Problem interfacing NANO 33 BLE SENSE and APA102 (Dotstar)


I tried the adafruit library and the fastled library, I have compilation errors in both cases. I tried previously with a regular Nano and it worked like a charm with both libraries.

But not with the new BLE 33 SENSE.
Can somebody point me some instructions ? Is there ans other library ? Is the Nano sense too new ?

Any help appreciated.

Hello Tony,

Would it be possible for you to upload the error/compilation message you are getting? Also, have you tried the NeoPixelBus library? It has a Dotstar test as well and is pretty up to date.


first of all thank you for your answer.

I got : SPI.setClockDivider , SPI.setBitOrder error oncompilation.

I read a lot to find the patch with SPI. I found that SPI.h did not have a : #define SPI_HAS_TRANSACTION

but where to put this line ? I did not post the code because is the example : strandtest included in the library <Adafruit_DotStar.h>.



FYI the suggested library at least compiled fine.
I will test it tonight and post follow-ups.

Thanks again,


still not working...
I put a LLC for both data and clock connections.
everything is simple and straightforward but not working....

I tried previously with a regular Nano and it worked like a charm with both libraries.
Is the Nano sense too new ?

The Arduino Nano 33 BLE and the "regular" Nano only have the name in common. I think its about the size of the board. The hardware architecture is completely different and the Nano 33 BLE uses mbedOS as a software framework. This works a bit different than the Arduino framework. So, you will see some additional issues over differences between older Arduinos.

So, yes the Nano 33 BLE is still new, but we get some additional features. The BLE library for instance is quite easy to use.

dear community,
I have some updates. I ran a simple benchmarch test for my 12 leds strip. (apa102 aka dotstar)
It took 4450 us to write 12 leds.

With hardware SPI, it seems a lot. an my POV architecture with this kind of refreshing time makes no sense.

I use the neopixelbus library.

4450 us for my refreshing time, is it normal ? can I do it faster ?


here is my timing routine :

t1 = micros();
  for (int i = 0 ; i < num_tests ; i++){
      for (int j = 0; j < 12 ; j++){
            strip.SetPixelColor(j, RgbColor(200,15,200));
  t2 = micros();
  elapsed_time = (t2 - t1)/num_tests;
  Serial.print(elapsed_time);   //4600 us   0,0046 sec

Do you have an oscilloscope or logic analyzer to look at the signal? You should see whether the clock speed is the issue or the time in between data bytes send or both?

No, I don't. 4500 ish us seems normal for you? Or is it way too much as I think?

Can you post a complete test sketch including the declarations and setup, so I can run the sketch on my board? I installed the neopixelbus library. I can have a look at the signals with an oscilloscope.