Téléchargé 21 fois
Vote des utilisateurs
0
0
Détails
Licence : Non renseignée
Mise en ligne le 27 février 2023
Plate-formes :
Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation
Traiter des commandes envoyées depuis le Moniteur série
Traiter des commandes envoyées depuis le Moniteur série
Ce petit projet consiste, à titre de démonstration, à montrer comment traiter des commandes avec des paramètres envoyées depuis un Moniteur série (ou tout autre terminal série).
Ici, on prend comme prétexte une Led RVB (à cathodes communes) qui va clignoter selon la couleur et la luminosité saisies dans le moniteur Série.
Exemples de commandes (délimiteur = [espace]):
rgb 1 0 0 --> allume la Led en rouge
rgb 0 1 0 --> allume la Led en vert
rgb 0 0 1 --> allume la Led en bleu
rgb 1 0 1 --> allume la Led en rouge + bleu = magenta
rgb 1 1 0 --> allume la Led en rouge + vert = jaune
rgb 1 1 1 --> allume la Led en rouge + vert + bleu = blanc
rgb 1 1 0 50 --> allume la Led en rouge + vert = jaune, mise à jour luminosité = 50%
une commande help supplémentaire donne le mode d'emploi de la commande.
Dans le sketch, on trouve :
- une classe LedRGB de gestion de la Led ;
- une fonction serialEvent() qui récupère le message saisi dans le Terminal série (Entrée pour fin du message) ;
- une fonction parseMessage() qui traite le message, sépare la commande et les paramètres, et modifie l'état de la Led en conséquence.
Ici, on prend comme prétexte une Led RVB (à cathodes communes) qui va clignoter selon la couleur et la luminosité saisies dans le moniteur Série.
Exemples de commandes (délimiteur = [espace]):
rgb 1 0 0 --> allume la Led en rouge
rgb 0 1 0 --> allume la Led en vert
rgb 0 0 1 --> allume la Led en bleu
rgb 1 0 1 --> allume la Led en rouge + bleu = magenta
rgb 1 1 0 --> allume la Led en rouge + vert = jaune
rgb 1 1 1 --> allume la Led en rouge + vert + bleu = blanc
rgb 1 1 0 50 --> allume la Led en rouge + vert = jaune, mise à jour luminosité = 50%
une commande help supplémentaire donne le mode d'emploi de la commande.
Dans le sketch, on trouve :
- une classe LedRGB de gestion de la Led ;
- une fonction serialEvent() qui récupère le message saisi dans le Terminal série (Entrée pour fin du message) ;
- une fonction parseMessage() qui traite le message, sépare la commande et les paramètres, et modifie l'état de la Led en conséquence.
Bonjour,
Je vous propose un nouvel élément à utiliser : Traiter des commandes envoyées depuis le Moniteur série
Ce petit projet consiste, à titre de démonstration, à montrer comment traiter des commandes avec des paramètres envoyées depuis un Moniteur série (ou tout autre terminal série).
Ici, on prend comme prétexte une Led RVB (à cathodes communes) qui va clignoter selon la couleur et la luminosité saisies dans le moniteur Série.
Exemples de commandes (délimiteur = [espace]):
rgb 1 0 0 --> allume la Led en rouge
rgb 0 1 0 --> allume la Led en vert
rgb 0 0 1 --> allume la Led en bleu
rgb 1 0 1 --> allume la Led en rouge + bleu = magenta
rgb 1 1 0 --> allume la Led en rouge + vert = jaune
rgb 1 1 1 --> allume la Led en rouge + vert + bleu = blanc
rgb 1 1 0 50 --> allume la Led en rouge + vert = jaune, mise à jour luminosité = 50%
une commande help supplémentaire donne le mode d'emploi de la commande.
Dans le sketch, on trouve :
- une classe LedRGB de gestion de la Led ;
- une fonction serialEvent() qui récupère le message saisi dans le Terminal série (Entrée pour fin du message) ;
- une fonction parseMessage() qui traite le message, sépare la commande et les paramètres, et modifie l'état de la Led en conséquence.
Qu'en pensez-vous ?
Je vous propose un nouvel élément à utiliser : Traiter des commandes envoyées depuis le Moniteur série
Ce petit projet consiste, à titre de démonstration, à montrer comment traiter des commandes avec des paramètres envoyées depuis un Moniteur série (ou tout autre terminal série).
Ici, on prend comme prétexte une Led RVB (à cathodes communes) qui va clignoter selon la couleur et la luminosité saisies dans le moniteur Série.
Exemples de commandes (délimiteur = [espace]):
rgb 1 0 0 --> allume la Led en rouge
rgb 0 1 0 --> allume la Led en vert
rgb 0 0 1 --> allume la Led en bleu
rgb 1 0 1 --> allume la Led en rouge + bleu = magenta
rgb 1 1 0 --> allume la Led en rouge + vert = jaune
rgb 1 1 1 --> allume la Led en rouge + vert + bleu = blanc
rgb 1 1 0 50 --> allume la Led en rouge + vert = jaune, mise à jour luminosité = 50%
une commande help supplémentaire donne le mode d'emploi de la commande.
Dans le sketch, on trouve :
- une classe LedRGB de gestion de la Led ;
- une fonction serialEvent() qui récupère le message saisi dans le Terminal série (Entrée pour fin du message) ;
- une fonction parseMessage() qui traite le message, sépare la commande et les paramètres, et modifie l'état de la Led en conséquence.
Qu'en pensez-vous ?
sympa !
(vous avez complexifié un peu l'objet premier du tuto en rajoutant une classe et des petits hacks sur les couleurs ce qui peut dérouter )
(vous avez complexifié un peu l'objet premier du tuto en rajoutant une classe et des petits hacks sur les couleurs ce qui peut dérouter )
Bonjour f-leb
Attention, serialEvent() utilisé ainsi, en "automatique", donc sans appel à la fonction, ne fonctionne pas sur tout les Arduino.
Je trouve ça terrrrrriblement compliqué!
Cordialement
jpbbricole
Attention, serialEvent() utilisé ainsi, en "automatique", donc sans appel à la fonction, ne fonctionne pas sur tout les Arduino.
Je trouve ça terrrrrriblement compliqué!
Cordialement
jpbbricole
Hello,
Ah oui, cela m'avait échappé, merci
La complexité vient déjà du fait que je ne suis pas passé par la fameuse classe String pour les traitements sur les chaînes de caractères. Et c'est tout à fait volontaire, tu sais déjà que cette classe abuse des allocations dynamiques qui fragmentent le tas. Il reste à se documenter sur strtok() et strtol(), c'est moins convivial mais ça ne peut pas être si terrrrriblement compliqué si j'ai moi-même réussi à les exploiter
Après, si tu as une version "plus simple", tu peux la poster ici pour comparaison. Si je trouve un moment, j'essaierai aussi d'écrire une version exploitant la classe String.
Ah oui, cela m'avait échappé, merci
La complexité vient déjà du fait que je ne suis pas passé par la fameuse classe String pour les traitements sur les chaînes de caractères. Et c'est tout à fait volontaire, tu sais déjà que cette classe abuse des allocations dynamiques qui fragmentent le tas. Il reste à se documenter sur strtok() et strtol(), c'est moins convivial mais ça ne peut pas être si terrrrriblement compliqué si j'ai moi-même réussi à les exploiter
Après, si tu as une version "plus simple", tu peux la poster ici pour comparaison. Si je trouve un moment, j'essaierai aussi d'écrire une version exploitant la classe String.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.