Code Arduino Color Push Button

Bonjour,

Je cherche a activer un relai lorsque qu'une couleur bien précise est sur le bouton.
L'appuie du bouton fait défiler les couleurs en boucle.

J'aimerais désactiver le relai quand il est sur la couleur "Purple".
Sauf que j'essaye depuis un moment et je n'y arrive pas.

A la fin de se projet il y aura un total de 4 boutons avec 4 couleurs différentes a mettre sur les boutons pour désactiver le relai.

Sauf que avant d'essayer avec 4 bouton j'aimerais y arriver avec 1 seul.

Voici le code que j'ai pour le changement des couleurs a l'appui du bouton:

#define BLUE 24
#define GREEN 23
#define RED 22
#define button 44

int relayPin=11;
int mode = 0;

void setup() {
  
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);

 
  pinMode(button, INPUT_PULLUP);
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin,HIGH);
  
  }

  void loop() {

    if (digitalRead(button) == LOW) {
      mode = mode + 1;
      delay(400);
    }
    // RED
    if (mode == 0) {
      analogWrite(BLUE, 0);
      analogWrite(GREEN, 0);
      analogWrite(RED, 255);
    }
    // Green
    if (mode == 1) {
     analogWrite(BLUE, 0);
      analogWrite(GREEN, 255);
      analogWrite(RED, 0);
    }
    // CYAN
    if (mode == 2) {
     analogWrite(BLUE, 255);
     analogWrite(GREEN, 255);
     analogWrite(RED, 0);
    }
    // Yellow
    if (mode == 3) {
      analogWrite(BLUE, 0);
      analogWrite(GREEN, 255);
      analogWrite(RED, 230);
    }
    // Purple
    if (mode == 4) {
      analogWrite(BLUE, 128);
      analogWrite(GREEN, 0);
      analogWrite(RED, 128);
    }
    // Blue
    if (mode == 5) {
      analogWrite(BLUE, 255);
      analogWrite(GREEN, 0);
      analogWrite(RED, 0);
    }
    // Reset
    if (mode == 6) {
      mode = 0;
      
    }
  }

Merci par avance pour votre aide ! Je galère !

Bonjour jo0o34

Tu peux faire ça en déclarant 2 variables:

const int relayUpColor = 1;     // Green Couleur qui fait tirer le relais
const int relayDownColor = 4;     // Purple Couleur qui fait tomber le relais

et en testant ainsi:

	if (mode == relayUpColor)     // Si c'est la couleur qui doit faire tirer le relais
	{
		digitalWrite(relayPin, relayEtatOn);     // Le relais tire
	} 

	if (mode == relayDownColor)     // Si c'est la couleur qui doit faire tomber le relais
	{
		digitalWrite(relayPin, !relayEtatOn);     // Le relais tombe
	}

Et ça donne:

#define BLUE 24
#define GREEN 23
#define RED 22
#define button 44

int relayPin=11;
int mode = 0;

const int relayUpColor = 1;     // Green Couleur qui fait tirer le relais
const int relayDownColor = 4;     // Purple Couleur qui fait tomber le relais
const int relayEtatOn = LOW;     // Etat pour faire tirer le relais

void setup() {
	Serial.begin(115200);

	pinMode(RED, OUTPUT);
	pinMode(GREEN, OUTPUT);
	pinMode(BLUE, OUTPUT);

	
	pinMode(button, INPUT_PULLUP);
	pinMode(relayPin, OUTPUT);
	digitalWrite(relayPin,HIGH);
	
}

void loop() {

	if (digitalRead(button) == LOW) {
		mode = mode + 1;
		delay(400);
	}
	// RED
	if (mode == 0) {
		analogWrite(BLUE, 0);
		analogWrite(GREEN, 0);
		analogWrite(RED, 255);
	}
	// Green
	if (mode == 1) {
		analogWrite(BLUE, 0);
		analogWrite(GREEN, 255);
		analogWrite(RED, 0);
	}
	// CYAN
	if (mode == 2) {
		analogWrite(BLUE, 255);
		analogWrite(GREEN, 255);
		analogWrite(RED, 0);
	}
	// Yellow
	if (mode == 3) {
		analogWrite(BLUE, 0);
		analogWrite(GREEN, 255);
		analogWrite(RED, 230);
	}
	// Purple
	if (mode == 4) {
		analogWrite(BLUE, 128);
		analogWrite(GREEN, 0);
		analogWrite(RED, 128);
	}
	// Blue
	if (mode == 5) {
		analogWrite(BLUE, 255);
		analogWrite(GREEN, 0);
		analogWrite(RED, 0);
	}
	// Reset
	if (mode == 6) {
		mode = 0;
		
	}

	if (mode == relayUpColor)     // Si c'est la couleur qui doit faire tirer le relais
	{
		digitalWrite(relayPin, relayEtatOn);     // Le relais tire
	} 

	if (mode == relayDownColor)     // Si c'est la couleur qui doit faire tomber le relais
	{
		digitalWrite(relayPin, !relayEtatOn);     // Le relais tombe
	}
}

A+
Cordialement
jpbbricole

Okay super merci beaucoup !
Je vais maintenant essayé pour 4 boutons

Merci encore c'est super !

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.