Salut
Ci-joint une petite lib qui fait ce genre de chose.
L’utilisation ressemble à ça :
#include <SerialComm.h>
SerialComm s;
void setup() {
s.begin(9600); //Initialisation de la liaison serie
s.attach('A', actionLed1); //Affecte le caractere A à la fonction actionLed1
s.attach('B', actionLed2); //Affecte le caractere B à la fonction actionLed2
}
void serialEvent() {
s.read();
}
void actionLed1(void) {
digitalWrite(led1, 1 - digitalRead(led1));
}
void actionLed2(void) {
digitalWrite(led2, 1 - digitalRead(led2));
J’ai simplifié…
Il y a un exemple de fourni.
Je suis en train de la réécrire, un peu plus élaborée…
Oulala merci a tous, je n'avais pas vu les reponses!
-tahitibob35: c'est un peu le principe , sauf que je voudrais rajouter un argument (consigne a l'action).
-guix: merci beaucoup , malheureusement, ce code n'est pas renseigné...et je n'y comprend rien je vais faire mon possible et ecrire a coter lol .
j'aprehende juste les tableaux....et le %&!== sont des inconnus .....aller au boulot!!
-fdufnews:effectivement je suis tombé pas mal de fois sur la fonction strtok mais sans arrivé a mes fins..malgré tous les exemples..... il va falloir que je maitrise ça aussi ça semble un bon outil....
Je vais deja m'atteler a la fonction de guix qui me parrait decouper les taches d'une manière que j'aime bien!
Bon , je reviens vers GUIX , ta solution me plais vraiment, si j’ai bien compris, je gere mes commandes et mes consigne sous forme d’un tableau 2D de tableau 1d(les commandes) et de valeur(les consignes)?
tahitibob35:
Salut
Ci-joint une petite lib qui fait ce genre de chose.
L’utilisation ressemble à ça :
#include <SerialComm.h>
SerialComm s;
void setup() {
s.begin(9600); //Initialisation de la liaison serie
s.attach(‘A’, actionLed1); //Affecte le caractere A à la fonction actionLed1
s.attach(‘B’, actionLed2); //Affecte le caractere B à la fonction actionLed2
}
edez66:
malheureusement, ce code n’est pas renseigné
Oui c’est fait exprès … Si tu as un code sans commentaires et que tu ne comprends pas, ça t’oblige à faire quelques recherches, ce qui permet d’apprendre. C’est ma méthode ^^. Bon d’accord j’explique un peu mon code:
Le site ideone ne peut pas compiler un sketch pour arduino, mais arduino utilise le langage C/C++ donc il y a très peu de modifications à faire pour que mon code fonctionne sur l’arduino. En gros, il suffit de changer “main” en “loop”, d’ajouter un “setup”, changer les “printf” en “Serial.print”… et voilà.
struct défini un nouveau type de variable (comme int, bool, etc…). J’ai appelé ce nouveau type de variable Consigne, et une Consigne est définie par un nom de maximum 7 caractères (+1 pour le caractère NULL à la fin, ce qui permet d’en faire un string valide) et une valeur de type long.
On scanne l’entrée pour, si possible, y trouver un nom et une valeur, et les stocker dans une Consigne
“%7[^ =]%*[ =]%ld” se décompose en trois parties:
“%7[^ =]” : trouver des caractères (maximum 7), qui ne soient pas un espace ou un signe égal,
“%*[ =]” : puis ignorer les espaces et les signes égal,
“%ld” : puis trouver un nombre de type long.
Si sscanf retourne 2, ça veut dire que l’entrée a été correctement séparée en un nom et une valeur, et stockée dans la variable consigne.
for ( int i = 0; i < sizeof(consignes) / sizeof(Consigne); i++ )
sizeof(consignes) / sizeof(Consigne) permet de calculer le nombre d’éléments dans le tableau “consignes”.
sizeof(Consigne) retourne la taille d’une consigne, soit 8 caractères pour le nom (8 bytes), et 1 long (4 bytes), soit 12 bytes
sizeof(consignes) retourne la taille du tableau “consignes” (soit 36 bytes puisqu’il y a 3 consignes de 12 bytes)
Si on divise la taille du tableau par la taille d’une Consigne, on obtient le nombre d’éléments dans le tableau. Tu pourrais bêtement écrire 3, mais calculer ce nombre est plus pratique car ça évite de devoir modifier ce 3 quand tu ajoutera d’autres consignes dans le tableau. car si tu oublie de modifier le 3, alors ton code sera buggé. Voilà pourquoi il est préférable de laisser ton arduino calculer ce nombre lui-même