bonjour, je suis un gros gros noob avec arduino et la programmation.
je m’aide du site du zéro et leur tuto et l’énorme base de donnée du site officiel d’arduino et des tuto du site pjrc qui vend les teensy que j’ai acheté.
mon but est de faire un escalier avec des trips leds rgb et de controler l’allumage des marches au fur et à mesure ainsi que le changement des couleurs des leds de façon progressive avec deux boutons Couleur + et - (et plus tard, deux boutons luminosité +/-)
pour passer par toutes les couleurs de façon progressive, je voulais utiliser la méthode des tables codées en GRAY sur 3 bits ici.
j’ai donc fait ce code:
//déclaration des pins
int redPin = 24;
int greenPin = 26;
int bluePin = 25;
int Cmoinspin = 18;
int Cpluspin = 19;
//initialisation du mode de connection des pins
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(Cpluspin, INPUT_PULLUP);
pinMode(Cmoinspin, INPUT_PULLUP);
Serial.begin(38400);
}
// mise à zéro des variables
int ColorR = 0;
int ColorG = 0;
int ColorB = 0;
//programme
void loop()
{
//écriture du code rgb vers les sorties
analogWrite(redPin, ColorR);
analogWrite(greenPin, ColorG);
analogWrite(bluePin, ColorB);
Serial.println(ColorR);
Serial.println(ColorG);
Serial.println(ColorB);
//conditions augmentation couleur.
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 0) && (ColorG = 0) && (ColorB = 0)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG = 0) && (ColorB = 0)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 255) && (ColorG = 0) && (ColorB = 0)) {
ColorG = ColorG + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 255) && (ColorG > 0 && ColorG < 255) && (ColorB = 0)) {
ColorG = ColorG + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 255) && (ColorG = 255) && (ColorB = 0)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG = 255) && (ColorB = 0)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 0) && (ColorG = 255) && (ColorB = 0)) {
ColorB = ColorB + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 0) && (ColorG = 255) && (ColorB > 0 && ColorB < 255)) {
ColorB = ColorB + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 0) && (ColorG = 255) && (ColorB = 255)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG = 255) && (ColorB = 255)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 255) && (ColorG = 255) && (ColorB = 255)) {
ColorG = ColorG - 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 255) && (ColorG > 0 && ColorG < 255) && (ColorB = 255)) {
ColorG = ColorG - 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR = 255) && (ColorG =0) && (ColorB = 255)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG =0) && (ColorB = 255)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR =0) && (ColorG =0) && (ColorB = 255)) {
ColorB = ColorB - 1;
delay(100);
}
if ((digitalRead (Cpluspin) == LOW) && (ColorR =0) && (ColorG =0) && (ColorB > 0 && ColorB < 255)) {
ColorB = ColorB - 1;
delay(100);
}
//conditions diminution couleur.
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 0) && (ColorG = 0) && (ColorB = 0)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG = 0) && (ColorB = 0)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 255) && (ColorG = 0) && (ColorB = 0)) {
ColorG = ColorG - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 255) && (ColorG > 0 && ColorG < 255) && (ColorB = 0)) {
ColorG = ColorG - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 255) && (ColorG = 255) && (ColorB = 0)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG = 255) && (ColorB = 0)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 0) && (ColorG = 255) && (ColorB = 0)) {
ColorB = ColorB - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 0) && (ColorG = 255) && (ColorB > 0 && ColorB < 255)) {
ColorB = ColorB - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 0) && (ColorG = 255) && (ColorB = 255)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG = 255) && (ColorB = 255)) {
ColorR = ColorR - 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 255) && (ColorG = 255) && (ColorB = 255)) {
ColorG = ColorG + 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 255) && (ColorG > 0 && ColorG < 255) && (ColorB = 255)) {
ColorG = ColorG + 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR = 255) && (ColorG =0) && (ColorB = 255)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR > 0 && ColorR < 255) && (ColorG =0) && (ColorB = 255)) {
ColorR = ColorR + 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR =0) && (ColorG =0) && (ColorB = 255)) {
ColorB = ColorB + 1;
delay(100);
}
if ((digitalRead (Cmoinspin) == LOW) && (ColorR =0) && (ColorG =0) && (ColorB > 0 && ColorB < 255)) {
ColorB = ColorB + 1;
delay(100);
}
}
sauf que ça ne marche pas, la led de test reste en bleu quand je reste appuyé sur le bouton.
le bouton couleur + met la led en blanc et l’autre la met en violet.
je n’arrive pas à voir dans la fenetre monitor ce qu’il devrait être marqué.
je pense que le soucis viens de la fonction if qui intègre des conditions ET …
mais j’arrive pas à trouver un tuto expliquant comment l’utiliser ou si c’est bien ça mon soucis.
merci pour votre aide ! c’est vraiment pas évident de débuter en programmation !