Problème programmation Arduino Uno ( Bluetooth )

Bonjour à toutes et à tous,

Je suis nouveau sur ce forum, après beaucoup de recherches je n'arrive pas a trouver ce que je veux, c'est pourquoi je viens solliciter votre aide.

Mon code est composé de :

1 Carte Arduino uno,
4 Boutons poussoir,
4 Leds ( que je remplacerais par des relais ),
1 Module Bluetooth HC-05.

Je peux controller les Leds par les Boutons poussoir ou par le Module Bluetooth,
jusqu'ici tout fonctionne,
le problème c'est quand j'allume une Led avec un Bouton poussoir je n'ai pas son retour d'état par Bluetooth.
Si l'un de vous pouvez m'éclairer,

Voici le code ( je suis débutant ) il n'est pas parfait mais il fonctionne.

const int bp1 = 2;
const int led1 = 12;
const int bp2 = 3;
const int led2 = 11;
const int bp3 = 4;
const int led3 = 10;
const int bp4 = 5;
const int led4 = 9;

int ledState1 = HIGH;
int bpState1;
int lastBpState1 = LOW;
int ledState2 = HIGH;
int bpState2;
int lastBpState2 = LOW;
int ledState3 = HIGH;
int bpState3;
int lastBpState3 = LOW;
int ledState4 = HIGH;
int bpState4;
int lastBpState4 = LOW;

unsigned long lastDebounceTime1 = 0;
unsigned long debounceDelay1 = 50;
unsigned long lastDebounceTime2 = 0;
unsigned long debounceDelay2 = 50;
unsigned long lastDebounceTime3 = 0;
unsigned long debounceDelay3 = 50;
unsigned long lastDebounceTime4 = 0;
unsigned long debounceDelay4 = 50;

char message = 0;
unsigned long temps;

void setup() {

Serial.begin(9600);

{pinMode(led1, OUTPUT);
pinMode(bp1,INPUT);
digitalWrite(led1, ledState1);}
{pinMode(led2, OUTPUT);
pinMode(bp2,INPUT);
digitalWrite(led2, ledState2);}
{pinMode(led3, OUTPUT);
pinMode(bp3,INPUT);
digitalWrite(led3, ledState3);}
{pinMode(led4, OUTPUT);
pinMode(bp4,INPUT);
digitalWrite(led4, ledState4);}

}
void loop() {

{

int reading = digitalRead(bp1);

if (reading != lastBpState1) {

lastDebounceTime1 = millis();

}

if ((millis() - lastDebounceTime1) > debounceDelay1) {

if (reading != bpState1) {
  bpState1 = reading;

  if (bpState1 == HIGH) {Serial.write('1');
    ledState1 = !ledState1;
  }
}

}
digitalWrite(led1, ledState1);

lastBpState1 = reading; }

{
int reading = digitalRead(bp2);

if (reading != lastBpState2) {

lastDebounceTime2 = millis();

}

else if ((millis() - lastDebounceTime2) > debounceDelay2) {

if (reading != bpState2) {
  bpState2 = reading;

  if (bpState2 == HIGH) {Serial.write('2');
    ledState2 = !ledState2;
  }
}

}
digitalWrite(led2, ledState2);

lastBpState2 = reading; }

{

int reading = digitalRead(bp3);

if (reading != lastBpState3) {

lastDebounceTime3 = millis();

}

if ((millis() - lastDebounceTime3) > debounceDelay3) {

if (reading != bpState3) {
  bpState3 = reading;

  if (bpState3 == HIGH) {
    ledState3 = !ledState3;
  }
}

}
digitalWrite(led3, ledState3);

lastBpState3 = reading; }

{

int reading = digitalRead(bp4);

if (reading != lastBpState4) {

lastDebounceTime4 = millis();

}

if ((millis() - lastDebounceTime4) > debounceDelay4) {

if (reading != bpState4) {
  bpState4 = reading;

  if (bpState4 == HIGH) {
    ledState4 = !ledState4;
  }
}

}
digitalWrite(led4, ledState4);

lastBpState4 = reading; }

if (Serial.available()>0) {
message = Serial.read();

}

switch (message) {
case '1':
ledState1 = !ledState1;
digitalWrite(led1, ledState1);
break;
case '2':
ledState2 = !ledState2;
digitalWrite(led2, ledState2);
break;
case '3':
ledState3 = !ledState3;
digitalWrite(led3, ledState3);
break;
case '4':
ledState4 = !ledState4;
digitalWrite(led4, ledState4);
break;

}

message = 0;

}

@gabriel33650
Your post was MOVED to its current location as it is more suitable.

Could you also take a few moments to Learn How To Use The Forum.

Other general help and troubleshooting advice can be found here.
It will help you get the best out of the forum in the future.

@gabriel33650
Votre message a été DÉPLACÉ vers son emplacement actuel car il est plus approprié.

Pourriez-vous également prendre quelques instants pour Apprenez à utiliser le forum.

D'autres aide générale et conseils de dépannage peuvent être trouvés ici.
Cela vous aidera à tirer le meilleur parti du forum à l'avenir.

Bonjour et Bienvenue @gabriel33650

En arrivant sur le Forum Francophone il est indispensable se renseignerr ici sur son fonctionnement :

Voir en particulier la partie concenant la manière pour publier du code, sans cela le code tel quel , peu lisible et peu maniable sera peu consulté.

Présentation faite,

Je me permet de reposer ma question,
comment faire pour avoir un retour d'état sur mon Android par Bluetooth quand j'appuie sur un bouton poussoir et qu'une led est allumée,
Si une personne pourrait me guider dans le code, je lui en serai très reconnaissant


#include <Bounce2.h>

const int bp = 6;
const int led = 12;
int ledValeur = LOW;
Bounce bouncer = Bounce();

const int bp2 = 7;
const int led2 = 11;
int ledValeur2 = LOW;
Bounce bouncer2 = Bounce();

/*const int bp3 = 8;
  const int led3 = 10;
  int ledValeur3 = LOW;
  Bounce bouncer3 = Bounce();*/

/*const int bp4 = 5;
  const int led4 = 9;
  int ledValeur4 = LOW;
  Bounce bouncer4 = Bounce();*/

int cmd = 0;


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode ( led, OUTPUT );
  pinMode ( bp, INPUT);
  bouncer.attach(bp);

  pinMode ( led2, OUTPUT );
  pinMode ( bp2, INPUT);
  bouncer2.attach(bp2);


  /*pinMode ( led3, OUTPUT );
    pinMode ( bp3, INPUT);
    bouncer3.attach(bp3);

    pinMode ( led4, OUTPUT );
    pinMode ( bp4, INPUT);
    bouncer4.attach(bp4);*/

}

void loop() {

  /*int reading = digitalRead (bp);
    int inter = reading;
    Serial.print(" ON ");
    Serial.print(reading);
    Serial.println(inter);
    delay(500);*/




  if ( bouncer.update() && bouncer.read() == LOW)
  {
    ledValeur = ! ledValeur;
    digitalWrite ( led, ledValeur);
  }

  if ( bouncer2.update() && bouncer2.read() == LOW)
  {
    ledValeur2 = ! ledValeur2;
    digitalWrite ( led2, ledValeur2);
  }

  /*if ( bouncer3.update() && bouncer3.read() == LOW)
    {
    ledValeur3 = ! ledValeur3;
    digitalWrite ( led3, ledValeur3);
    }

    if ( bouncer4.update() && bouncer4.read() == LOW)
    {
    ledValeur4 = ! ledValeur4;
    digitalWrite ( led4, ledValeur4);
    } */



  cmd = 0;



  if (Serial.available() > 0)
  {
    cmd = Serial.read();
  }

  switch (cmd)
  {

    case 'a':
      {
        ledValeur = ! ledValeur;
        digitalWrite ( led, ledValeur);
        break;
      }

    case 'b':
      {
        ledValeur2 = ! ledValeur2;
        digitalWrite ( led2, ledValeur2);
        break;
      }

      /*     case 'c':
        {
             ledValeur3 = ! ledValeur3;
             digitalWrite ( led3, ledValeur3);
            break;
        }

             case 'd':
        {
             ledValeur4 = ! ledValeur4;
             digitalWrite ( led4, ledValeur4);
            break;
        }
      */
  }
}

Bonsoir gabriel33650

Quel programme utilises-tu sur ton Android?

Cordialement
jpbbricole

Bonjour jpbbricole,
J'utilise l'application android "Arduino Home Automation "

Bonjour gabriel33650

Cette application ne va que dans un sens, c'est indiqué sur la page du programme, la question de Anonymous.
Si tu veux un dialogue dans les 2 sens, je te conseille Bluetooth Electronics, il est simple d'emploi, ne nécessite aucune bibliothèque et, surtout, offre de générer le code pour exploiter ta création.
Le site de Bluetooth Electronics.

Cordialement
jpbbricole

Merci jpbbricole, pour ta réponse rapide et tes conseils.

Cordialement