Skip to content

Instantly share code, notes, and snippets.

@JasonLS
Last active August 28, 2018 20:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JasonLS/d2911bf3fff2f7acd3f43c9c67dd74f6 to your computer and use it in GitHub Desktop.
Save JasonLS/d2911bf3fff2f7acd3f43c9c67dd74f6 to your computer and use it in GitHub Desktop.
C code to use a basic led strip. this example code should light 4 LEDs in order from Red, Green, Blue, White.
#include <stdio.h>
#include <unistd.h>
//Green = DI
//Blue = CI
//BLack = GND
//Red = PWR
#define ledcount 4
char ledFrame[ledcount*4];
FILE * spidev;
void setled(int pixelIndex, unsigned char red, unsigned char green, unsigned char blue, unsigned char pixelIntensity);
void updateLEDs();
int main() {
spidev = fopen("/dev/spidev1.0", "wb");
for(int i = 0; i < ledcount; i++) {
ledFrame[i*4] = 0xe0;
}
setled(0,100,0,0,5);
setled(1,0,100,0,5);
setled(2,0,0,100,5);
setled(3,100,100,100,5);
updateLEDs();
}
void setled(int pixelIndex, unsigned char red, unsigned char green, unsigned char blue, unsigned char pixelIntensity)
{
pixelIntensity = 0xe0 | (pixelIntensity & 0x1f);
int ledFrameIndex = pixelIndex * 4; // Positions index to beginning of each LED frame
ledFrame[ledFrameIndex] = pixelIntensity;
ledFrame[ledFrameIndex + 1] = blue;
ledFrame[ledFrameIndex + 2] = green;
ledFrame[ledFrameIndex + 3] = red;
}
void updateLEDs()
{
static const char startframe [4]={0,0,0,0};
fwrite(startframe, 1, 4, spidev);
fwrite(ledFrame, 1, ledcount*4, spidev);
fflush(spidev);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment