Bonsoir,
Moi aussi je suis surpris à la fois par ces "possibles" parasites et par le fait, qu'avant, sur la même alim 9V, je n'avais pas ce problème.
Le module est un hc05. Dans tout ce que j'ai fait jusqu'ici je n'ai pas constaté de problème avec.
Le fichier APP:
Pilotage_Voiture_clic_long.zip (57.8 KB)
et le code:
#include <SoftwareSerial.h>
SoftwareSerial hc06(2,3);
#define ENA 10
#define IN1 9
#define IN2 8
#define IN3 7
#define IN4 6
#define ENB 5
int ordre = 0;
int SP1 = 0;
int SP2 = 0;
int DIR = 0;
int max = 100;
int sens;
int oldsens;
void setup(){
Serial.begin(9600);
hc06.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENB, OUTPUT);
}
void loop(){
while(hc06.available()>0){
ordre = hc06.read();
}
if(ordre!=""){
Serial.println(ordre);
delay(100);
}
switch(ordre){
case 9: //STOP
SP1 = 0;
SP2 = 0;
motor(SP1,SP2,DIR);
break;
case 1: //MARCHE AVANT
SP1 = max;
SP2 = max;
DIR = 1;
motor(SP1,SP2, DIR);
break;
case 2: //MARCHE ARRIERE
SP1 = -max;
SP2 = -max;
DIR = 0;
motor(SP1,SP2, DIR);
break;
case 3: //TOURNE DROITE
SP2 = SP2-10;
if(DIR == 1){
SP1 = max;}
else{
SP1 = -max;}
motor (SP1, SP2, DIR);
break;
case 4: //TOURNE A GAUCHE
SP1 = SP1-10;
if(DIR == 1){
SP2 = max;}
else{
SP2 = -max;}
motor (SP1, SP2, DIR);
break;
case 5: //TOUT DROIT
if(DIR == 1){
SP1 = max;
SP2 = max;}
else{
SP1 = -max;
SP2 = -max;}
motor (SP1, SP2, DIR);
break;
}
ordre = "";
}
void motor(int speed1, int speed2, int sens){
//Serial.print("sens = ");
//Serial.println(sens);
if(sens != oldsens){ //ARRET AVANT CHANGEMENT DE SENS
analogWrite (ENA, 0);
analogWrite (ENB, 0);
delay(500); }
if (sens == 1){ //MARCHE AVANT
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite (ENA, speed1);
analogWrite (ENB, speed2);
}
else { //MARCHE ARRIERE
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, abs(speed1));
analogWrite(ENB, abs(speed2));
}
//Serial.print("Vitesse =");
//Serial.print(speed1);
//Serial.print(" ");
//Serial.println(speed2);
oldsens = sens;
}
Cdlt
Jean-Michel