bonjour,
Je débute avec arduino et pour mon 1er projet je voudrai piloter un robot (pour l'instant une planche de bois et 2 roues^^) avec 2 Sliders via Bluetooth
mes Sliders m'envoient un string A0RA1R....A255R et B.... pour le Slider 2
Et la je Suis un peut perdu je voudrait recupérer la valeur entre A et R pour la traiter et varier la vitesse de mes moteurs. en char ?? en string ?? avec quel fonction ?? voici mon code
#include <SoftwareSerial.h> // librairie pour creer une nouvelle connexion serie max 9600 baud
int pin1Moteur1=12; //pin de commande moteur 1
int pin2Moteur1=8; // pin de commande moteur 1
int pinPMoteur1=6;// pin PWM moteur 1
int pin1Moteur2=2; // pin de commande moteur 2
int pin2Moteur2=4; // pin de commande moteur 2
int pinPMoteur2=5; // pin PWM moteur 2
int Moteur;
SoftwareSerial BTSerial(10, 11); // RX | TX = > BT-TX=10 BT-RX=11
void setup()
{
Serial.begin(9600);
BTSerial.begin(9600); // HC-05 9600 baud
pinMode(pin1Moteur1,OUTPUT);
pinMode(pin2Moteur1,OUTPUT);
pinMode(pinPMoteur1,OUTPUT);
pinMode(pin1Moteur2,OUTPUT);
pinMode(pin2Moteur2,OUTPUT);
pinMode(pinPMoteur2,OUTPUT);
}
void loop()
{
String message;
// Boucle de lecture sur le BT
while (BTSerial.available()){
// Lecture du message envoyé par le BT
message = BTSerial.readString();
// Ecriture du message dans le serial usb
// Serial.println(message);
}
// Boucle de lecture sur le serial usb
while (Serial.available()){
// Lecture du message envoyé par le serial usb
message = Serial.readString();
// Ecriture du message dans le BT
// BTSerial.println(message);
}
char messageChar[message.length()+1]; // tableau de char de la taille du String message+1 (caractère de fin de ligne)
message.toCharArray(messageChar,message.length()+1); // récupère le message dans le tableau de char
//Serial.println(messageChar); // affiche le tableau de charString message="blablabla";
// affiche successivement les différentes chaînes de caractères
for (int i = 0; i < message.length()+1; i++){
if (messageChar[i] == 'A'){
Serial.println ("Moteur1");
Serial.println (messageChar[i]);
Serial.println (i);
}
else if (messageChar[i] == 'R'){
Serial.println (messageChar[i]);
Serial.println (i);
}
else if (messageChar[i] == 'B'){
// Serial.println ("Moteur2");
}
}
// actionMoteur(1,1,100);
}
void actionMoteur(int moteur,int sens,int pourcentage){
int pin1,etat1,pin2,etat2,pinP,puissance; //variable de la fonction
//test numéro du moteur
if (moteur==1){
pin1=pin1Moteur1;
pin2=pin2Moteur1;
pinP=pinPMoteur1;
}
else {
pin1=pin1Moteur2;
pin2=pin2Moteur2;
pinP=pinPMoteur2;
}
//test sens du moteur 1,-1 (sens contrainre) ou tout autre valeur (stoppe le moteur)
if (sens==1){
etat1=1;
etat2=0;
}
else if (sens==-1){
etat1=0;
etat2=1;
}
else {
etat1=0;
etat2=0;
}
puissance=map(pourcentage,0,100,0,255);
analogWrite(pinP,puissance);
digitalWrite(pin1,etat1);
digitalWrite(pin2,etat2);
//affichage sur le moniteur série (facultatif)
Serial.print("Moteur : ");
Serial.print(moteur);
if (sens==-1 || sens==1){
Serial.print(" sens : ");
Serial.print(sens);
}
else {
Serial.print(" ! stop ! ");
}
Serial.print(" puissance : ");
Serial.println(pourcentage);
}