Voila j'ai une question sur la syntaxe a employé !
je commande une led en envoyant une lettre avec le terminal
si la lettre c'est H la led s'allume et si c'est L la led s'étteint !
Je voulais savoir comment faire pour la commandé pas avec une lettre mais plusieur ?
quand j'écrit
if (incomingByte == 'allume')
le programme il compile bien mais sa marche !!
WY?
voila le programme
int ledPin = 13; // the pin that the LED is attached to
int incomingByte; // a variable to read incoming serial data into
void setup() {
// initialize serial communication:
Serial.begin(9600);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// see if there's incoming serial data:
if (Serial.available() > 0) {
// read the oldest byte in the serial buffer:
incomingByte = Serial.read();
// if it's a capital H (ASCII 72), turn on the LED:
if (incomingByte == 'H') {
digitalWrite(ledPin, HIGH);
Serial.print("Led allumee ");
}
// if it's an L (ASCII 76) turn off the LED:
if (incomingByte == 'L') {
digitalWrite(ledPin, LOW);
Serial.print("Led eteinte ");
}
}
}
En parlant de syntaxe... il eût fallu que tu revisses la tienne pour que l'on ait pu comprendre ta question. Ainsi que l'orthographe et la conjugaison Désolé c'était tentant.
Tout d'abord, il faut comprendre la différence entre octet (byte) et une chaîne de caractère. L'octet qu'on envoie ou qu'on reçoit sur la liaison série est un caractère (type "char") en prenant les valeurs du code ASCII (ex: 65 = 'A').
Les caractères utilisés directement, i.e. sans passer par une variable, sont par convention notés entre guillemet simple (quote en anglais), soit 'H' ou 'L'. Les chaines de caractères sont par convention notées entre double guillemets (double quote), soit "allume".
Arduino respecte cette convention (voir la doc de référence sur "print") même s'il laisse compiler avec des simples guillemets.
Tu peux essayer : Serial.print('Ready'); tu ne vas pas recevoir "Ready" mais 25721 qui ne signifie rien.
Ton problème se posera surtout lors de la réception. Il faudra à la fois organiser la réception de toute la chaîne de caractères mais en plus faire la comparaison des deux chaînes ce qui va prendre beaucoup de temps pour rien. A mon sens, il est inutile (bon disons-le, stupide) de vouloir implémenter ce genre de communication. Il est plus intelligent de faire une interface (avec Processing par exemple) qui prend une saisie de l'utilisateur et le convertit en une séquence à envoyer sur la liaison série.
Par contre on peut envoyer des choses ayant plus de sens comme ("A200E50" pour "allume pendant 200 ms et éteint pendant 50 ms" par exemple). Quelqu'un a fait ça pour vous ici Interface en ligne de commande - PoBot