Bonjour, merci pour ta réponse. Voici mon code en entier.
// SERIAL INIT COMM. PYTHON : FORMAT XCCVVVE
char inputCharSerial[7];
bool stringComplete = false;
String command_code = "";
int command_value = 0;
// PIN INIT
int LeftEnA = 10;
int LeftIn1 = 9;
int LeftIn2 = 8;
int RightEnB = 6;
int RightIn3 = 5;
int RightIn4 = 4;
void setup() {
Serial.begin(9600);
pinMode(LeftEnA,OUTPUT);
pinMode(LeftIn1,OUTPUT);
pinMode(LeftIn2,OUTPUT);
pinMode(RightEnB,OUTPUT);
pinMode(RightIn3,OUTPUT);
pinMode(RightIn4,OUTPUT);
}
void DcForward(int speed){
digitalWrite(LeftIn1, 1);
digitalWrite(LeftIn2, 0);
digitalWrite(RightIn3, 0);
digitalWrite(RightIn4, 0);
analogWrite(LeftEnA, speed);
analogWrite(RightEnB, 0);
}
void DcBackward(int speed){
digitalWrite(LeftIn1, 0);
digitalWrite(LeftIn2, 1);
digitalWrite(RightIn3, 0);
digitalWrite(RightIn4, 0);
analogWrite(LeftEnA, speed);
analogWrite(RightEnB, 0);
}
void DcRotRight(int speed){
digitalWrite(LeftIn1, 0);
digitalWrite(LeftIn2, 0);
digitalWrite(RightIn3, 1);
digitalWrite(RightIn4, 0);
analogWrite(LeftEnA, 0);
analogWrite(RightEnB, speed);
}
void DcRotLeft(int speed){
digitalWrite(LeftIn1, 0);
digitalWrite(LeftIn2, 0);
digitalWrite(RightIn3, 0);
digitalWrite(RightIn4, 1);
analogWrite(LeftEnA, 0);
analogWrite(RightEnB, speed);
}
void DcStop(){
digitalWrite(LeftIn1, 0);
digitalWrite(LeftIn2, 0);
digitalWrite(RightIn3, 0);
digitalWrite(RightIn4, 0);
analogWrite(LeftEnA, 0);
analogWrite(RightEnB, 0);
}
void processControl(String input, int value){
if (input == "mb"){
DcForward(value);
}
if (input == "ma"){
DcBackward(value);
}
if (input == "dl"){
DcRotLeft(value);
}
if (input == "dr"){
DcRotRight(value);
}
else if (input == "sp"){
DcStop();
}
}
int digitToInt(char* d){
char charToInt[4];
for (int j = 0; j <= 2; j++){
charToInt[j] = d[j];
}
charToInt[3] = '\0';
return (int) strtol(charToInt, NULL, 10);
}
void loop(){
if(stringComplete){
if (inputCharSerial[0] == 'A'){
char bufferValue[3];
for (int j = 0; j<= 1; j++){
command_code += inputCharSerial[j+1];
}
for (int j = 0 ; j <= 2; j++){
bufferValue[j] = inputCharSerial[j+3];
}
command_value = digitToInt(bufferValue);
}
else if (inputCharSerial[0] == 'B'){
for (int j = 0; j <= 1; j++){
command_code += inputCharSerial[j+1];
command_value = 0;
}
}
//Serial.print("INPUT : ");
//Serial.print(command_code);
//Serial.print(" VALUE : ");
//Serial.println(command_value);
processControl(command_code, command_value);
memset(inputCharSerial, 0, 7);
stringComplete = false;
command_code = "";
command_value = 0;
}
}
void serialEvent() {
while (Serial.available()){
Serial.readBytes(inputCharSerial, 7);
if(inputCharSerial[6]== '\x00'){
stringComplete = true;
}else if (inputCharSerial[6]!= '\x00'){
memset(inputCharSerial, 0, 7);
}
}