Skip to content

Instantly share code, notes, and snippets.

@xseignard
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save xseignard/e2dda826e8825f64f14c to your computer and use it in GitHub Desktop.

Select an option

Save xseignard/e2dda826e8825f64f14c to your computer and use it in GitHub Desktop.
#include "LPD8806.h"
#include "SPI.h"
// passer à 0 pour virer le debug
#define DEBUG 1
// nb de leds pour un tube
// 144 leds par tube, leds adressable 3 par 3, et 3 leds pour un RGB, donc 144/9 = 16 leds RGB en equivalence
int nLEDs = 16;
// pin de donnée et de clock
int dataPin = 12;
int clockPin = 13;
// variables pour traitement série
String fromMax;
char charBuf[50];
// constructeur
LPD8806 strip = LPD8806(nLEDs, dataPin, clockPin);
// couleurs : G,R,B de 0 à 127
//uint8_t color = strip.Color(G,R,B);
void setup() {
Serial.begin(9600);
// démarre le strip
strip.begin();
// met à jour les leds du strip
strip.show();
}
void loop() {
// permet d'allumer un pixel grace à un message du type INDEX,R,G,B#
// 1,127,127,127# allumera le pixel d'index 1 avec un r,g et b à fond
// 1,0,0,0# éteindra le pixel d'index 1
// 10,0,127,0# allumera le pixel d'index 10 en vert
while (Serial.available() > 0) {
char recieved = Serial.read();
// si le caractère recu est le caractère de stop
if (recieved == '#') {
// convertir le message en tableau de char afin de la traiter
fromMax.toCharArray(charBuf, 50);
// récupérer les données
int pixelIndex = atoi(strtok(charBuf, ","));
int r = atoi(strtok(NULL, ","));
int g = atoi(strtok(NULL, ","));
int b = atoi(strtok(NULL, ","));
// afficher sur le port série les données brutes et traitées
if (DEBUG) {
Serial.print("Message reçu: ");
Serial.println(fromMax);
Serial.print("Index du pixel: ");
Serial.println(pixelIndex);
Serial.print("R: ");
Serial.println(r);
Serial.print("G: ");
Serial.println(g);
Serial.print("B: ");
Serial.println(b);
}
// allumer le pixel
strip.setPixelColor(pixelIndex, strip.Color(g, r, b));
// remettre à zéro la chaine servant à stocker les données série
fromMax = "";
}
// si ce n'est pas la caractère de stop, continuer à concaténer
else {
fromMax += recieved;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment