Bonjour a tous!
J'ai un petit soucis que je n'arrive pas a résoudre et que je ne comprends pas.
J'ai développé un code a la base sur un Arduino uno branché sur un module bleutooth HC06 pour contrôler un bateau radio commandé en bleutooth et qui marche très bien à quelques finalisation en développement.
#include <Servo.h> //bibliotheque servo
Servo gouv;
//declaration des pins
#define pinmotav 16 // D0 pwm Pin moteur vitesse moteur avant
#define pinmotar 5 // D1 PWM Pin moteur vitesse moteur arriere
#define marcmot 4 // D2 marche moteur
#define ledpos 0 // D3 pin pour feux
#define ledphare 2// D4 pin pour phare
#define mesure A0// A0 lecture ana batterie
//Varibles
unsigned char serval=90;
unsigned char motval=0;
unsigned char motint=65;
char Ledphare = 0;
char Ledpos=0;
char BluetoothData;
bool Stop=0;
bool startstop=0;
bool startstop_1=0;
int lecture;
float tension;
int Gtension;
unsigned long milli;
unsigned long past_milli;
unsigned long tens_milli;
char test;
void setup() {
// Initialise pins as outputs
pinMode(pinmotar, OUTPUT);
pinMode(pinmotav, OUTPUT);
pinMode(ledpos, OUTPUT);
pinMode(ledphare, OUTPUT);
pinMode(marcmot,OUTPUT);
pinMode(mesure,INPUT);
gouv.attach(14); // D5 on déclare le servo sur la broche 4
//initialsie communication
Serial.begin(115200);
}
void loop(){
//on recupère millis
milli=millis();
//test batterie
lecture= analogRead(mesure);
tension=7.7/77*lecture;
if (milli - tens_milli >= 500 ){
Serial.print("*D");
Serial.print(tension);
Serial.println("*");
Gtension=tension*100;
Serial.print("*E");
Serial.print(Gtension);
Serial.println("*");
tens_milli=milli;
}
//si batterie faible on fait clignoté les feux
if (tension<=6.9){
if (milli - past_milli >= 300 ){
bool pos =digitalRead(ledpos);
pos=1-pos;
digitalWrite(ledpos,pos);
digitalWrite(ledphare,pos);
past_milli=milli;
}
}
//le bluetooth
if (Serial.available())
{
BluetoothData=Serial.read();
if(BluetoothData=='a') motint=Serial.parseInt();
if(BluetoothData=='b') serval=Serial.parseInt();
if(tension>6.9){
if(BluetoothData=='c') Ledpos=1;
if(BluetoothData=='d') Ledpos=0;
if(BluetoothData=='e') Ledphare=1;
if(BluetoothData=='f') Ledphare=0;
}
if(BluetoothData=='g') startstop=1;
if(BluetoothData=='h') startstop=0;
}
//controle de var
Serial.println(BluetoothData);
//controle coommande arret
if (startstop-startstop_1==1){
gouv.write(90);
analogWrite(pinmotar,255);
analogWrite(pinmotav,255);
Stop=1;
delay(1500);
startstop_1=startstop;
}
else{
Stop=startstop;
}
if (startstop==0){
Stop=0;
startstop_1=0;
}
// arret du bateau
if(Stop==1)
{
gouv.write(90);
analogWrite(pinmotar,0);
analogWrite(pinmotav,0);
digitalWrite(marcmot,LOW);
}
else
{
//start du moteur
digitalWrite(marcmot,HIGH);
//commande du moteur
if (motint<=60)
{
motval= 60-motint;
motval= map(motval,0,60,85,151);
analogWrite(pinmotav,0);
analogWrite(pinmotar,motval);
}
else
{
if(motint>=70)
{
motval= motint-70;
motval= map(motval,0,185,85,151);
analogWrite(pinmotar,0);
analogWrite(pinmotav,motval);
}
else
{
analogWrite(pinmotar,255);
analogWrite(pinmotav,255);
}
}
// commande du servo
gouv.write(serval);
}
//commandes LED manuel
if (tension>6.9){
digitalWrite(ledpos,Ledpos);
digitalWrite(ledphare,Ledphare);
}
}
Suite à cela, je décide d'essayer de charger le programme sur une carte AZ-delivry NodeMCU Lua Lolin V3 Module ESP8266 ESP-12F WIFI Wifi
Je change les définitions de pins pour fonctionner et là c'est le drame les commande bluetooth fonctionne a moitié...
déjà ce qui fonctionne:
-l'envoie de mes tensions pas de problème ca remonte jusqu'à mon afficheur dans un format qui va bien
le reste ne fonctionne qu'a moitié... Je m'explique:
-Si je regarde ce qui passe dans mon série j'ai une écriture continu de "-1", mes écritures de tension je les vois passé en claire dans sérial.
-si j'envoie un commande en Bluetooth. j'ai des valeurs incohérente et qui ne corresponds pas a ce que je devrait recevoir. Mes variable récupère 1 fois sur 10 une valeur et qui correspond a rien de cohérant la plus part du temps.
J'ai 2 hypothèse:
-le module wifi de la carte pollue le serial en le serial de la carte en "-1" qui me coupe ce que je reçois du Bluetooth faut-il coupé ou renvoyer le module wifi sur un autre serial? ou possibilité de la désactivé?
-pour une raison que j'ignore le format de ce que je reçois change... mais cela explique pas pourquoi une partie des commande arrive a passer....
je suis un peu perdu sur la cause de ce problèmes, auriez vous une idée?