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;
}