bonjour et merci d'avance pour l'aide apportée.
je cherche à faire communiquer deux arduinos par bluetooth, dans le but d'avoir une télécommande qui pourra commander toute mes projets de robotique avec une télécommande unique.
coté émetteur :
carte arduino uno, module bluethhoth HC 05 configuré en maitre !
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
int Switch1, Switch2;
void setup()
{
Serial.begin(9600);
BTSerial.begin(9600);
pinMode(2, INPUT);
pinMode(3, INPUT);
}
void loop()
{
Switch1= digitalRead(2);
Switch2= digitalRead(3);
BTSerial.print("+");
BTSerial.print(Switch1);
BTSerial.print("A");
BTSerial.print(Switch2);
BTSerial.print("B0000C0000D0000");
delay(1);
}
sachant que les valeurs B, C, D seront plus tard pour des potentiomètres
coté récepeteur
ardionu méga avec HC06 (slave uniquement)
char c;
char chaine_recue[]="aaaaaaaaaaaaaaaaaa"; //20 chars +0A0B0000C0000D0000$
int i;
int k;
int l;
char Val0[5]; //nombre entre crochet = nombre max de char de la donnée recue + 1
char ValA[5];
char ValB[5];
char ValC[5];
char ValD[5];
int VALRed, VALGreen;
void setup()
{
Serial.begin(9600);
Serial2.begin(9600);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
Serial.println("je démarre");
}
void loop()
{
// reception
if (Serial2.available() >0)
{
c = Serial2.read();
if (c == '+')
{
i = 0;
while(chaine_recue[i] != '\0')
{
chaine_recue[i] = Serial2.read();
delay(50);
i++;
}
Serial.print("Chaine recue: ");
Serial.println(chaine_recue);
StringToString();
Serial.print("Val0(char) = ");
Serial.print (Val0);
Serial.print(" ValA(char) = ");
Serial.print(ValA);
Serial.print(" ValB(char) = ");
Serial.print(ValB);
Serial.print(" ValC(char) = ");
Serial.print(ValC);
Serial.print(" ValD(char) = ");
Serial.println (ValD);
}
}
VALRed=atoi (Val0);
VALGreen=atoi (ValA);
digitalWrite(10,VALRed);
digitalWrite(9,VALGreen);
}
void StringToString ()
{
k=1;
l=0;
while (chaine_recue[k]!='A'){
Val0[l] = chaine_recue[k];
k++;
l++;
}
k++;
l=0;
while (chaine_recue[k]!='B'){
ValA[l] = chaine_recue[k];
k++;
l++;
}
k++;
l=0;
while (chaine_recue[k]!='C'){
ValB[l] = chaine_recue[k];
k++;
l++;
}
k++;
l=0;
while (chaine_recue[k]!='D'){
ValC[l] = chaine_recue[k];
k++;
l++;
}
k++;
l=0;
while (chaine_recue[k] != '\0'){
ValD[l] = chaine_recue[k];
k++;
l++;
}
}
mon prolème est que mon méga redémarre sans cesse. après des recherches sur le net j'ai essayé sans succès les différentes solutions proposées, mais aucune ne marche (avec une résistance entre 3.3v et RESET, une autre entre +5v et reste, un condesateur de 10µF entre GND et RESET, et égalment en coupant le petit truc entre reste et EN, à même la carte. aucune des solutions ne fonctionne
ou est l'erreur? et comment réduire la latence?
d'avance merci