Bonjour,
Voila mon code arduino pour de la réception bluetooth mais pas moyen de réceptionner et de traduire un mot avec if (val == 'Mot' )
Merci de votre aide
int lampe1=13;
int val;
void setup() {
Serial.begin(9600);;
pinMode(lampe1, OUTPUT);
}
void loop()
{
if( Serial.available() ) {
val = Serial.read();
}
if (val == 'a' ) //mont
{
digitalWrite(lampe1, HIGH);
}
if (val == 'b' ) // desc
{
digitalWrite(lampe1, LOW);
}
}
'Mot' c'est ne pas un char.
...
char input[MAX_INPUT_DIMENSION];
...
if(!strcmp(input, "Mot"))
{
digitalWrite(lampe1, HIGH);
}
...
Val est de type int et tu le compare à un char.
Forcément ça ne va pas fonctionner.
Il te faut comprendre les différents types de variables avant de les manipuler: int, char, byte etc...
sa pourrait marcher avec char myString[] =....
Mais comment l'ajouter au programme?
B_tto
July 2, 2014, 9:13am
5
bwat te l'a montré deux post avant
oui mais dan le programme ça ne marche pas.
La ligne de code n'est pas accepté.
Genre MAX_INPUT_DIMENSION n'est pas accepté.
donc au final comment le faire
vois la réponse de bwat : utiliser strcmp()
system
July 11, 2014, 8:20pm
9
bon donc au final quelqu'un pourrait m'explique comment recevoir une chaine de caractère via bluetooth dans mon code...
B_tto
July 12, 2014, 8:19am
10
pegazx:
oui mais dan le programme ça ne marche pas.
La ligne de code n'est pas accepté.
Genre MAX_INPUT_DIMENSION n'est pas accepté.
Il faut la définir ...
int MAX_INPUT_DIMENSION = 20;
system
July 12, 2014, 3:12pm
11
si j'ai bien compris, sa pourrait me donner ça si ça marchait....
mais il y à toujour des érreurs...
int lampe1=13;
int MAX_INPUT_DIMENSION = 20;
char input[MAX_INPUT_DIMENSION];
void setup() {
Serial.begin(9600);;
pinMode(lampe1, OUTPUT);
}
void loop()
{
if( Serial.available() ) {
val = Serial.read();
}
if(!strcmp(input, "Mot"))
{
digitalWrite(lampe1, HIGH);
}
if(!strcmp(input, "Mom"))
{
digitalWrite(lampe1, LOW);
}
}
sketch_jul12b.ino:5:31: error: array bound is not an integer constant before ‘]’ token
sketch_jul12b.ino: In function ‘void loop()’:
sketch_jul12b.ino:15:1: error: ‘val’ was not declared in this scope
sketch_jul12b.ino:18:12: error: ‘input’ was not declared in this scope
sketch_jul12b.ino:22:12: error: ‘input’ was not declared in this scope
remplace ton int MAX_INPUT_DIMENSION par un const int ou un #define
system
July 13, 2014, 1:12pm
13
vous n'avez pas un code déja fait ou un tuto pour le faire, j'ai rien trouvé et sa doit être facile à faire quand même
icare
July 13, 2014, 1:36pm
14
Bonjour,
pegazx:
sa doit être facile à faire quand même
Qu'attends-tu pour le faire ? !!!
system
July 13, 2014, 1:54pm
15
non mais le problème c'est que je ne sait pas le faire et qu'une seule lettre c'est facile mais pas plusieurs ou même plusieurs chiffres...
icare
July 13, 2014, 2:37pm
16
Re,
pegazx:
non mais le problème c'est que je ne sait pas le faire et qu'une seule lettre c'est facile mais pas plusieurs ou même plusieurs chiffres...
Met ton code pour une lettre et si possible entre balise #
system
July 14, 2014, 2:02pm
17
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int i;
char command[5];
for (i = 0; i < 4; i++) {
command = Serial.read();
}*
command[4] = '\0';*
Serial.println(command);*
if (strcmp(command, "high") == 0) {*
digitalWrite(LED, HIGH);*
} else if (strcmp(command, "1452") == 0) {*
digitalWrite(LED, LOW);*
}*
}
c'est bon j'ai un programme, merci pour votre aide (je n'avais pas compris le strcmp()...)
le problème, c'est qu'il affiche sans arrêt YYYY dans le moniteur, comment changer ce problème ?
Comment modifier le programme pour pouvoir mettre n'importe quel nombre de caractères?
Merci*
icare
July 14, 2014, 6:46pm
18
Bonjour,
Tu pourrais présenter ton programme de la manière suivante pour que cela soit plus lisible pour tous :
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int i;
char command[5];
for (i = 0; i < 4; i++) {
command = Serial.read(); //????????
}
command[4] = '\0';
Serial.println(command);
if (strcmp(command, "high") == 0) {
digitalWrite(LED, HIGH);
} else if (strcmp(command, "1452") == 0) {
digitalWrite(LED, LOW);
}
}
Déjà avant de continuer, il faudrait que le programme se compile et ce n'est pas le cas.
Cherche l'erreur !
@+
system
July 16, 2014, 1:49pm
19
le programme qui se compile au final
le problème c'est q'il dépent de ''Serial.println(command);'' ce qui je pense ralentit le transfert...
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int i;
char command[5];
for (i = 0; i < 4; i++) {
command = Serial.read(); //????????
}*
command[4] = '\0';*
Serial.println(command);*
if (strcmp(command, "hig)") == 0) {
digitalWrite(LED, HIGH);*
_ } else if (strcmp(command, "14*2") == 0) {_
digitalWrite(LED, LOW);*
}*
}
icare
July 16, 2014, 3:16pm
20
Bonjour,
Je peux te garantir que ton code ne se compile pas.
Essaye de faire un effort de présentation et de mettre ton code entre balise #