J'ai jeté mon dévolu sur ce tuto:
la musique me donne la nausée mais ça marche
Enfin, elle marche avec l'application dans les commentaires.
Si j'utilise une autre application et que j'envoie une position (120), le servo fait n'importe quoi.
Voici ce que m'affiche le moniteur:
49
50
48
13
10
Dans le code ci-dessous, on lit la valeur envoyée par android et on la stocke dans un INT qui s'appelle servopos. Belle affaire, mais ce n'est pas possible!!! On reçoit des char à la queue leuleu, ça ne fait pas un INT
#include <SoftwareSerial.h> // TX RX software library for bluetooth
#include <Servo.h> // servo library
Servo myservo; // servo name
int bluetoothTx = 2; // bluetooth tx to 10 pin
int bluetoothRx = 3; // bluetooth rx to 11 pin
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup()
{
myservo.attach(9); // servo sur pin 9
Serial.begin(9600);
bluetooth.begin(9600);
}
void loop()
{
if(bluetooth.available()> 0 ) // recevoir une valeur>0
{
int servopos = bluetooth.read(); // stocke la valeur reçue dans servopos
Serial.println(servopos); // imprimer servopos sur le moniteur
myservo.write(servopos); // oriente l'axe du servo
}
}
DONC j'ai DEUX QUESTIONS:
1-Si ça ne marche pas avec n'importe quelle appli qui envoie du ASCII, comment se fait-il que ça marche avec son appli??
Voici les positions que je reçois avec son appli sur moniteur:
0
45
90
135
180
Ca marche super bien
2-Vu que les char nous donnent beaucoup de soucis, comment les stocker et en faire un INT??
Faire int truc = char bidule - '0';
ca ne marche pas. Déjà parce que les char et les int n'ont rien à voir, et surtout parce qu'android m'envoie une succession de char, il faut donc que le code envoyé se trouve entre balises, stocker les char dans un tableau etc etc etc.... Alors retour à la question1: comment se fait-il que ça fonctionne avec son appli?