Dans le cadre d'un projet pour mon examen de SI, je dois réaliser l'ouverture d'un servomoteur (en simulation sur proteus) grâce à un bouton poussoir, les deux connectés en bluetooth. Etant donné que c'est la première fois que je touche à ça j'ai eu pas mal de mal et il est donc fortement possible que j'ai fait des erreurs qui mériteraient une une exécution sur la place publique et je le conçois :
Pour en revenir à mon problème, je n'arrive pas à faire communiquer les modules bluetooth (c'est plutôt embêtant pour la suite) ! J'ai cherché dans les premiers pas ou avec d'autres conseils externes mais rien pour résoudre ce satané blocage ! Concernant le servo j'ai compris comment ça marchait de manière à ce que je puisse faire avancer mon projet donc normalement pas de préoccupations là dessus.
Avant de mettre les images et les lignes de code concernant la simulation, je tiens à indiquer que je n'ai vraiment pas envie qu'on me donne une correction déjà faite (de ce que j'ai compris ce n'est pas le but de ce forum et ça tombe bien) ! J'ai vraiment envie de comprendre ce que j'ai fait de mal et ce que je pourrais améliorer par le biais de conseils pour que ma simulation fonctionne enfin !
D'ailleurs petite question à part, c'est normal que les modules bluetooth disparaissent quand je lance la simulation les modules Bluetooth deviennent invisibles ? Ils semblent toujours présents et fonctionnels mais j'ai du faire quelque chose de mal j'imagine :o
Concernant les programmes, voici celui rattaché avec l'arduino du haut :
#include <Servo.h>
Servo myservo; // crée l'objet "servo" pour le contrôler
int incomingByte = 0;
int pos = 0; // varible pour stocker la position sur servo
void setup() {
Serial.begin(9600);
myservo.attach(9); // attibue notre objet servo à la pin9
}
void loop() {
if (Serial.available() > 0){
incomingByte = Serial.read();
if (incomingByte == '1') {
myservo.write(180);// ordonne au cerveau d'aller à 180°
delay(2000); // attendre 2000ms pour que le servo atteigne sa postion
}
}
}
Et enfin voici le programme rattaché avec l'arduino du bas
Non, J-M-L t'explique que 1 et '1' c'est pas pareil. Le premier est une valeur numérique qui vaut 1 (le résultat de 5 - 4 par exemple) alors que le second est un caractère qui est codé par l'ordinateur comme la valeur 49, selon la norme ASCII
Donc si tu compares le premier au second et tu veux agir en cas d'égalité, tu peux attendre longtemps...
lesept:
Non, J-M-L t'explique que 1 et '1' c'est pas pareil. Le premier est une valeur numérique qui vaut 1 (le résultat de 5 - 4 par exemple) alors que le second est un caractère qui est codé par l'ordinateur comme la valeur 49, selon la norme ASCII
Donc si tu compares le premier au second et tu veux agir en cas d'égalité, tu peux attendre longtemps...
Ok je vois ! J'ai remplacé du coup le '1' par un 1 mais aucun changement en simulation
Si vous faites un print ça envoie la version ASCII - donc il faut comparer ce qui est comparable
Soit vous faites un write de la valeur numérique 1 et vous comparez avec le chiffre 1,, soit vous fait un print de la valeur numérique 1 ou la chaîne «1» ou le caractère ‘1’ et dans ce cas il faut comparer à La valeur ASCII
Attention si vous faites un println() alors vous allez aussi envoyer d’autres caractères \r et \n
D'ailleurs petite question à part, c'est normal que les modules bluetooth disparaissent quand je lance la simulation les modules Bluetooth deviennent invisibles ? Ils semblent toujours présents et fonctionnels mais j'ai du faire quelque chose de mal j'imagine
Pour cette question il faudrait voir sur un forum d'utilisateurs de Proteus/VSM (peu nombreux içi parmi les aidants.....vu le coût du logiciel et sa limitation à Windows)
J-M-L:
Si vous faites un print ça envoie la version ASCII - donc il faut comparer ce qui est comparable
Soit vous faites un write de la valeur numérique 1 et vous comparez avec le chiffre 1,, soit vous fait un print de la valeur numérique 1 ou la chaîne «1» ou le caractère ‘1’ et dans ce cas il faut comparer à La valeur ASCII
Attention si vous faites un println() alors vous allez aussi envoyer d’autres caractères \r et \n
Ok j'ai remplacé dans les codes :
Serial.print('1');
if (incomingByte == '1') {
Pour le coup ça ne change à nouveau rien dans la simulation, ça doit donc venir de mon montage si il n'y a pas d'autres erreurs dans les programmes
al1fch:
BonjourPour cette question il faudrait voir sur un forum d'utilisateurs de Proteus/VSM (peux nombreux içi parmi les aidants.....vu le coût du logiciel et sa limitation à Windows)