Si pas de hc06 alors le potentiomètre prend le relais

Bonjour,
J’ai actuellement un programme fonctionnel qui me permet, si j’ai mon module bluetooth d’appairé d’envoyé des informations pour commander une led. Le soucis c’est que j’aimerai pouvoir faire varier cette led sans bluetooth, c’est a dire si je n’ai pas mon portable je voudrais pouvoir la faire varier avec le potentiometre.
En gros “tant que je suis appairé alors j’exécute seulement les infos transmise par BT sinon je lis le potentiométre”
Voici le programme

#include <SoftwareSerial.h>

SoftwareSerial HC06(11,10);//Tx11,Rx10
int moteurenable = 5;//enable sortie PWM
int sensG=9;//in1
int sensD=8;//in2
//String consigne="";
int val;
String messageRecu;
int potar=A0;
int valeurpotar;
int pwmpotar;


void setup() {
   
Serial.begin(9600);
HC06.begin(9600);  
pinMode(moteurenable, OUTPUT);
analogWrite(moteurenable, LOW);
pinMode(sensG,OUTPUT);
pinMode(sensD, OUTPUT); 
//attachInterrupt(0, fdcG, FALLING);
//attachInterrupt(1, fdcD, FALLING);
//modifier fréquence de découpage
}

 void loop()
 
  {
     while(HC06.available()>0)//tant que je suis en bluetooth
  {
       delay(3);
       char c = HC06.read();
       messageRecu += c;
  }

     if (messageRecu.length())//>0)/////////////////////
     
  {
Serial.println(messageRecu);
    
if (messageRecu==1)
{analogWrite(moteurenable,26);
messageRecu="";
   delay(5);  }
//... 
if (messageRecu==10)
{analogWrite(moteurenable,255);
messageRecu="";
   delay(5);  } 
  {
valeurpotar=analogRead(potar);//si j'ai pas de bluetooth
pwmpotar=map(valeurpotar, 0, 1023, 0, 255);
Serial.print("potar");
Serial.println(pwmpotar);
analogWrite(moteurenable,pwmpotar); 
delay(1000); 
  }   
  }
  }

Merci d’avance

Vincent62: Bonjour, J'ai actuellement un programme fonctionnel qui me permet, si j'ai mon module bluetooth d’appairé d'envoyé des informations pour commander une led. Le soucis c'est que j'aimerai pouvoir faire varier cette led sans bluetooth, c'est a dire si je n'ai pas mon portable je voudrais pouvoir la faire varier avec le potentiometre. En gros "tant que je suis appairé alors j’exécute seulement les infos transmise par BT sinon je lis le potentiométre"

bonjour là tu ne sais pas si tu à un lien bluetooth actif sur ton HC06 simplement si tu reçois qq chose sur l'uart.

sur les modules HC06 , en general le pin etat n'est pas cablé si tu veux savoir si la liaison BT est active il faut que tu la cable et que gere ce pin dans ton programme |255x500 attention : ce pin est le reflet de la led de connection, il faut donc tenir compte des clignotements.

led fixe = module appairé led clignotante = module non appairé

Vincent62: En gros "tant que je suis appairé alors j’exécute seulement les infos transmise par BT sinon je lis le potentiométre"

Bonjour,

Le problème dans cette méthode est que dès que la connexion va être coupée pour une raison quelconque par exemple sortie de l'appli, la led va prendre l'intensité du potentiomètre même si on souhaite garder la valeur courante.

Personnellement j'utiliserai quelque chose de plus simple: Si la valeur du potentiomètre varie de plus de n pas on applique la valeur du potentiomètre à la led. C'est très simple à faire et à mon avis ça répond mieux au problème. -> le potentiomètre prend le relais dès que tu le touches (en fait dès que tu modifies légèrement sa valeur).

perso je remplacerais le potar par un codeur rotatif qui ferait du + ou - sur la led à partir de la valeur actuelle

kamill:
C’est très simple à faire et à mon avis ça répond mieux au problème.
→ le potentiomètre prend le relais dès que tu le touches (en fait dès que tu modifies légèrement sa valeur).

Bonjour,
Le soucis je pense, est que la valeur lu du potentiomètre est très instable et donc il risquerait de prendre le relais assez souvent mais je mets cette soluce de coté.

Pour le moment je penche plus pour la solution de “Artouste” j’ai donc refait mon programme et aucun résultat, en contrôlant le pin “State” au multimètre je n’ai pas de tension je l’ai donc simulé avec un bouton poussoir mais cela ne coupe pas mon potentiomètre

#include <SoftwareSerial.h>

SoftwareSerial HC06(11,10);//Tx11,Rx10
int moteurenable = 5;//enable sortie PWM
int sensG=9;//in1
int sensD=8;//in2
//String consigne="";
int val;
String messageRecu;
int potar=A0;
int valeurpotar;
int pwmpotar;
const int buttonPin = 6;///////////////
 int buttonState = 0;/////////////////////////

void setup() {
   
Serial.begin(9600);
HC06.begin(9600);  
pinMode(moteurenable, OUTPUT);
analogWrite(moteurenable, LOW);
pinMode(sensG,OUTPUT);
pinMode(sensD, OUTPUT); 
//attachInterrupt(0, fdcG, FALLING);
//attachInterrupt(1, fdcD, FALLING);
//modifier fréquence de découpage
  pinMode(buttonPin, INPUT);//////////////////
}

 void loop()  {

buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH)
  {
    
  Serial.println("connecte");
     while(HC06.available()>0)//tant que je suis en bluetooth
     
      {delay(3);
       char c = HC06.read();
       messageRecu += c;  }

     if (messageRecu.length())//>0)/////////////////////
     
  {
Serial.println(messageRecu);
   
if (messageRecu=="1")
{analogWrite(moteurenable,26);
messageRecu="";
   delay(5);  }
    
//... 
if (messageRecu=="10")
{analogWrite(moteurenable,255);
messageRecu="";
  delay(5);  }
   }  
  }
    else(buttonState==LOW);
{valeurpotar=analogRead(potar);//si j'ai pas de bluetooth
pwmpotar=map(valeurpotar, 0, 1023, 0, 255);
Serial.println("potar");
Serial.println(pwmpotar);
analogWrite(moteurenable,pwmpotar); 
delay(100);  } 
  }

Merci :smiley_cat:

Vincent62: ...

Pour le moment je penche plus pour la solution de "Artouste" j'ai donc refait mon programme et aucun résultat, en contrôlant le pin "State" au multimètre je n'ai pas de tension

Bonjour par acquis de conscience je viens de (re)verifier : chez moi (sur les 2 HC06 que j'ai sous la main) la connexion "state" reflete bien l'etat

Vincent62: Pour le moment je penche plus pour la solution de "Artouste" j'ai donc refait mon programme et aucun résultat, en contrôlant le pin "State" au multimètre je n'ai pas de tension je l'ai donc simulé avec un bouton poussoir mais cela ne coupe pas mon potentiomètre

Comment se comportais la LED d'état pendant ta mesure?

Vincent62: Le soucis je pense, est que la valeur lu du potentiomètre est très instable et donc il risquerait de prendre le relais assez souvent mais je mets cette soluce de coté.

La valeur du potentiomètre n'est pas très instable ou alors il y a un problème. Par contre effectivement elle peut varier d'un voire deux pas. Il suffit de mettre un petit hystérésis.