IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

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.
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 26/02/2023 à 18:17
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 ?
Avatar de Jay M
Expert confirmé https://www.developpez.com
Le 26/02/2023 à 19:41
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 )
Avatar de jpbbricole
Membre émérite https://www.developpez.com
Le 27/02/2023 à 13:26
Bonjour f-leb
Citation Envoyé par f-leb Voir le message
- une fonction serialEvent() qui récupère le message saisi dans le Terminal série (Entrée pour fin du message) ;
Attention, serialEvent() utilisé ainsi, en "automatique", donc sans appel à la fonction, ne fonctionne pas sur tout les Arduino.
Citation Envoyé par f-leb Voir le message

Qu'en pensez-vous ?
Je trouve ça terrrrrriblement compliqué!

Cordialement
jpbbricole
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 27/02/2023 à 20:50
Hello,

Citation Envoyé par jpbbricole Voir le message
Attention, serialEvent() utilisé ainsi, en "automatique", donc sans appel à la fonction, ne fonctionne pas sur tout les Arduino.
Ah oui, cela m'avait échappé, merci

Citation Envoyé par jpbbricole Voir le message
Je trouve ça terrrrrriblement compliqué!
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.