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