Hi everyone!
We just released an updated version of Vidor libraries to solve some nasty bug you may have encountered during these weeks; here's the complete changelog
## VidorGraphics and VidorPeripherals 1.1.0 release notes
* Fixed extended UART operations
* jtag communication speedup and cleanup (now based on libxsvf)
# VidorGraphics only:
* Added support for matrix arranged NeoPixels (see VidorNeoPixelMatrix.ino for an overview)
# API changes:
• VidorGFX alpha channel is now 8 bits wide (if you want maximum alpha you need to change 1 to 255)
We also updated samd-beta core to version 1.6.24
This update brings a great speedup for the usual compile/upload/test/modify loop; if you are working on the same bitstream now upload takes ~2 seconds
It also gets rid of a bunch of spurious warnings so compiling with "All warnings" enabled now makes sense
I am working on a neopixel cube (125 pixels at the moment) which in the long term I hope to link to sounds, sensors and perhaps the camera. But to begin with the neopixel library seems to address the wrong neopixels. The neopixels are displayed in a non-sequential order. I wonder if you could help.
This code:
#include "VidorGraphics.h"
#include "Vidor_NeoPixel.h"
Vidor_NeoPixel np(125, 0); // The constructor allows you to set the control pin and the number of the LED's.
void setup() {
Serial.begin(115200);
while (!Serial) {}
if (!FPGA.begin()) {
Serial.println("Initialization failed!");
while (1) {}
}
Serial.println("Initialization Done!");
for (int j = 0; j < 125; j++) {
np.setPixelColor(j, 0, 0, 0, 0); // The function setPixelColor(led,red,green,blue,white) sets the desired color to a particular LED.
}
np.setBrightness(20); // The np.setBrightness(int) function sets the brightness of all the LED's on the strip
np.show(); //The np.show() function send the commands to the strips
}
void loop() {
for (uint16_t j = 0; j < 125; j++) {
Serial.print(j);
np.setPixelColor(j, 255, 255, 0, 1);
np.show();
delay(1000);
np.setPixelColor(j, 0, 0, 0, 1);
np.show();
}
}
produces different results to this on a circuitpython playground express:
num_pixels = 125 # Number of pixels driven from Crickit NeoPixel terminal
# The following line sets up a NeoPixel strip on Crickit CPX pin A1
pixels = neopixel.NeoPixel(board.A1, num_pixels, brightness=0.1,
auto_write=False)
pixels.fill(BLACK)
pixels.show()
while True:
for x in range(0, 125):
print ("pixel %d" % (x))
pixels[x] = BLUE
pixels.show()
time.sleep(2)
pixels[x] = (0,0,0)
Hi Matt,
Apparently code should do the same but there may be some hidden difference. I assume that your cube is wired in some optimize way, usually in a zigzag pattern. The way you are testing should light up LEDs in a sequential way, exactly as they're wired however you can use the matrix object that allows handling a 2d structure specifying it's zigzag pattern so that you can index pixels in an ordered way.
Please let me know if this helps