Bonjours,
Des nouvelles fraiche et de nouvelles questions pour ce projet.
J'ai bien bataillé avec l’allumage et surtout l’extinction des LEDs.
Si j’incrémente directement dans le strip.setPixelColor
dans le genre :
- Code: Tout sélectionner
strip.setPixelColor(b++,c++,d++,e);
strip.show ();
delay (a);
strip.setPixelColor (b,0,0,0);
strip.show();
Cela n’éteint pas la LED...
J'ai essayé plein de trucs qui font des choses bizarres comme au premier tour les LED s’allument et s’éteignent l'une après l'autre puis au second les LEDs fonctionnent par groupe de 2 puis trois... puis les 25 restent allumées et s’éteignent une par une au tour suivant et tout repart...
Mais bref, comme ça sa marche:
void loop() {
//J'incremente les variable avant le strip.set
if (b<25){b++;}else {b=0;}
if (c<255-50){c=c+50;}else {c=0;}
if (d<255-100){d=d+100;}else {d=0;}
if (e<255-75){e=e+75;}else {e=0;}
if (1>0){f++;}//C'est la façon un peut bizar qui ne marche pas bien pour compter le nombre de loop dans le moniteur serie
strip.setPixelColor(b,c,d,e);
strip.show();
delay (a);
strip.setPixelColor(b,0);//J'eteint la led
strip.show();
}
Pour essayer de comprendre ce qui ce passe réellement je me suis dit qu'utiliser le moniteur serie serrais une bonne idée.
Serial.println("-------------------");
Serial.print (" ");
Serial.println(f);
Serial.println("-------------------");
Serial.print("a | ");
Serial.println(a);
Serial.print ("b | ");
Serial.println(b);
Serial.print ("c | ");
Serial.println(c);
Serial.print ("c | ");
Serial.println(d);
Serial.print ("e | ");
Serial.println(e);
Serial.println();
Le problème est que l’incrémentation des variables commence à l'ouverture du moniteur et ce remet à 0 si je le ferme et le rouvre.
Comment lire les réels valeurs traitées en direct par la carte?
Merci
Etienne
// BE SURE TO CHECK YOUR PIXELS TO SEE WHICH WIRES TO USE!
uint8_t dataPin = 11; // Yellow wire on Adafruit Pixels
uint8_t clockPin = 12; // Green wire on Adafruit Pixels
// Don't forget to connect the ground wire to Arduino ground,
// and the +5V wire to a +5V supply
// Set the first variable to the NUMBER of pixels in a row and
// the second value to number of pixels in a column.
Adafruit_WS2801 strip = Adafruit_WS2801((uint16_t)7, (uint16_t)7, dataPin, clockPin);
int z=500;// defini la valeur de depart de a donc le delay
int a=z;// prend la valeur de z pour le delay
int b=-1;// determine la led a commander
int c=50;// rouge
int d=100;//vert
int e=150;//Bleu
int f=0;//conpteur de boucle void loop
int g=b;
void setup() {
strip.begin();
// Update LED contents, to start they are all 'off'
strip.show();
Serial.begin(9600);
}
void loop() {
//J'incremente les variable avant le strip.set
if (b<25){b++;}else {b=0;}
if (c<255-50){c=c+50;}else {c=0;}
if (d<255-100){d=d+100;}else {d=0;}
if (e<255-75){e=e+75;}else {e=0;}
if (1>0){f++;}//C'est la façon un peut bizar qui ne marche pas bien pour compter le nombre de loop dans le moniteur serie
strip.setPixelColor(b,c,d,e);
strip.show();
delay (a);
strip.setPixelColor(b,0);//J'eteint la led
strip.show();
//J'affiche la valeur de mes variable mais le compteur ce met a zero
//à chaque ouverture du moniteur et ne contient donc pas les valeurs réel
//assigné aux LEDs ni au compteur!
Serial.println("-------------------");
Serial.print (" ");
Serial.println(f);
Serial.println("-------------------");
Serial.print("a | ");
Serial.println(a);
Serial.print ("b | ");
Serial.println(b);
Serial.print ("c | ");
Serial.println(c);
Serial.print ("c | ");
Serial.println(d);
Serial.print ("e | ");
Serial.println(e);
Serial.println();
Serial.println();
Serial.println();
}