1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
#include <SoftwareSerial.h>
SoftwareSerial hc06(0, 1);
//DEFINITION CAPTEUR BLUETOOTH
unsigned char Bluetooth_val; //définition de la valeur val
#define Lpwm_pin 5 //Pin ajustement vitesse Gauche
#define Rpwm_pin 10 //Pin ajustement vitesse Droit
//DEFINITION CONNEXION MOTEUR
int pinARG = 2; // définition de la broche 2 arrière gauche
int pinAVG = 4; // définition du broche 4 avant gauche
int pinARD = 7; // définition de la broche 7 arrière droite
int pinAVD = 8; // définition de la broche 8 avant droit
int val;
int ledpin = 1;
String voice = "";
//DEFINITION VITESSE MOTEUR AU DEPART
unsigned char Lpwm_val = 255; // définition la vitesse à 255 moteur avant gauche
unsigned char Rpwm_val = 255; // définition la vitesse à 255 moteur avant droit
//DEFINITION ETAT VOITURE
int Car_state = 0;
void M_Control_IO_config(void)
{
pinMode(pinARG, OUTPUT); // définition de la broche 2 arrière gauche en sortie
pinMode(pinAVG, OUTPUT); // définition de la broche 4 avant gauche en sortie
pinMode(pinARD, OUTPUT); // définition de la broche 7 arrière droite en sortie
pinMode(pinAVD, OUTPUT); // définition de la broche 8 avant droit en sortie
pinMode(Lpwm_pin, OUTPUT); // pin 5 (PWM)
pinMode(Rpwm_pin, OUTPUT); // pin 10 (PWM)
}
void Set_Speed(unsigned char Left, unsigned char Right)
{
analogWrite(Lpwm_pin, Left);
analogWrite(Rpwm_pin, Right);
}
void advance() // Avancer
{
digitalWrite(pinARD, LOW);
digitalWrite(pinAVD, HIGH); // faire avancer le moteur AV droit
digitalWrite(pinARG, LOW);
digitalWrite(pinAVG, HIGH); // faire avancer le moteur AV gauche
analogWrite(Lpwm_pin, 255);
analogWrite(Rpwm_pin, 255);
Car_state = "Avance";
}
void turnR() // Turner à Droite
{
digitalWrite(pinARD, LOW); // faire reculer le moteur AR droit
digitalWrite(pinAVD, HIGH); // faire avancer le moteur AV droit
digitalWrite(pinARG, HIGH); // faire avancer le moteur AR gauche
digitalWrite(pinAVG, LOW); // faire reculer le moteur AV gauche
analogWrite(Lpwm_pin, 255);
analogWrite(Rpwm_pin, 150);
Car_state = "A Droite";
}
void turnL() //turning left(dual wheel)
{
digitalWrite(pinARD, HIGH); // faire avancer le moteur AV droit
digitalWrite(pinAVD, LOW ); // faire avancer le moteur de l'avant droit
digitalWrite(pinARG, LOW); // faire avancer le moteur de l'arrière gauche
digitalWrite(pinAVG, HIGH); // faire avancer le moteur AV gauche
analogWrite(Lpwm_pin, 150);
analogWrite(Rpwm_pin, 255);
Car_state = "A Gauche";
}
void stopp() //stop
{
digitalWrite(pinARD, HIGH);
digitalWrite(pinAVD, HIGH);
digitalWrite(pinARG, HIGH);
digitalWrite(pinAVG, HIGH);
Car_state = "Stop";
}
void back() //back up
{
digitalWrite(pinARD, HIGH); // faire avancer le moteur de l'arrière droit
digitalWrite(pinAVD, LOW); // faire avancer le moteur de l'avant droit
digitalWrite(pinARG, HIGH); // faire avancer le moteur de l'arrière gauche
digitalWrite(pinAVG, LOW); // faire avancer le moteur de l'avant gauche
analogWrite(Lpwm_pin, 200);
analogWrite(Rpwm_pin, 200);
Car_state = "Recule";
}
void setup()
{
M_Control_IO_config();
Set_Speed(Lpwm_val, Rpwm_val);
Serial.begin(9600); // initialise le port serie à 9600 bd
pinMode(ledpin, OUTPUT);
stopp();
delay(1000);
}
void loop()
{
if (Serial.available()) //pour voir si le port série reçoit les données.
{
Bluetooth_val = Serial.read(); //lecture (Bluetooth) des données du port série, donnant la valeur de val;
delay(10);
switch (Bluetooth_val) {
case 'A': advance(); delay(100);//Avance
break;
case 'B': back(); delay(100); //Recule
break;
case 'L': turnL(); delay(100); //Gauche
break;
case 'R': turnR(); delay(100); //Droite
break;
case 'S': stopp(); delay(100); //stop
break;
}
Serial.println(Car_state);
Serial.println(Bluetooth_val);
}
} |
Partager