Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
logiciels:serial:accueil [2014/05/18 11:31] resonance [Serial] |
logiciels:serial:accueil [2018/01/22 11:19] (Version actuelle) resonance ancienne révision (2017/12/04 12:07) restaurée |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
Cependant il peut arriver que nous ayons besoin de plus de fonctionnalités comme l' | Cependant il peut arriver que nous ayons besoin de plus de fonctionnalités comme l' | ||
+ | |||
+ | **Téléchargement** de tous les codes de cette page : {{.: | ||
+ | ** | ||
+ | Un autre tutoriel (en anglais) détaillant la plupart des cas :** {{: | ||
+ | |||
===== Prérequis ===== | ===== Prérequis ===== | ||
- | Si vous n' | + | Si vous n' |
+ | |||
+ | Une autre notion technique très utilisée ici est celle de **String**, littéralement " | ||
+ | |||
- | Une autre notion technique très utilisée est celle de **String**, littéralement " | + | <WRAP center round important 60%> |
+ | Avec les Arduino Leonardo, il y a une petite différence, c'est pourquoi les exemples doivent être un peu modifiés. Il faudra peut-être ajouter ajouter un <code cpp> | ||
+ | </ | ||
===== Une valeur ===== | ===== Une valeur ===== | ||
- | Pour l' | + | L' |
- | Quand il s' | + | Quand il s' |
Ligne 78: | Ligne 89: | ||
La fonction **Serial.available()** est toujours utilisée pour connaître combien d' | La fonction **Serial.available()** est toujours utilisée pour connaître combien d' | ||
- | Dans le code Pure Data, il y a un petit algorithme très pratique pour afficher dans Pure Data les données venant de la Arduino. Il consiste à stocker dans un objet **[list]** toutes les données les unes à la suite des autres ([list prepend]), puis de l' | + | Dans le code Pure Data, il y a un petit algorithme très pratique pour afficher dans Pure Data les données venant de la Arduino. Il consiste à stocker dans un objet **[list]** toutes les données les unes à la suite des autres ([list prepend]), puis de l' |
{{.: | {{.: | ||
Ligne 107: | Ligne 118: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Méthodes pour recevoir les caractères ASCII | ||
+ | {{: | ||
===== serialEvent() ===== | ===== serialEvent() ===== | ||
Ligne 192: | Ligne 206: | ||
{{.: | {{.: | ||
- | Pour le code Arduino, | + | Pour le code Arduino, on découpe une nouvelle fois pour récupérer le second argument. On ajoute aussi nos fonctions. |
<code cpp> | <code cpp> | ||
Ligne 299: | Ligne 313: | ||
* [[http:// | * [[http:// | ||
* http:// | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | <code cpp> | ||
+ | // Exemple avec strtok | ||
+ | // http:// | ||
+ | #include < | ||
+ | |||
+ | char sz[] = "Here; is some; sample; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | char *p = sz; | ||
+ | char *str; | ||
+ | Serial.begin(9600); | ||
+ | while ((str = strtok_r(p, ";", | ||
+ | Serial.println(str); | ||
+ | } | ||
+ | |||
+ | void loop(){} | ||
+ | </ | ||
===== SerialCommand ===== | ===== SerialCommand ===== | ||
- | Télécharger la bibliothèque [[https:// | + | Télécharger la bibliothèque |
+ | |||
+ | {{.: | ||
<code cpp> | <code cpp> | ||
Ligne 307: | Ligne 344: | ||
#include < | #include < | ||
- | #define arduinoLED 13 | + | #define arduinoLED 13 // Arduino LED on board |
- | SerialCommand sCmd; | + | SerialCommand sCmd; |
void setup() { | void setup() { | ||
Ligne 318: | Ligne 355: | ||
// Setup callbacks for SerialCommand commands | // Setup callbacks for SerialCommand commands | ||
- | sCmd.addCommand(" | + | sCmd.addCommand(" |
- | sCmd.addCommand(" | + | sCmd.addCommand(" |
- | sCmd.addCommand(" | + | sCmd.addCommand(" |
- | sCmd.addCommand(" | + | sCmd.addCommand(" |
- | sCmd.setDefaultHandler(unrecognized); | + | sCmd.setDefaultHandler(unrecognized);// |
Serial.println(" | Serial.println(" | ||
} | } | ||
void loop() { | void loop() { | ||
- | sCmd.readSerial(); | + | sCmd.readSerial(); |
} | } | ||
Ligne 342: | Ligne 379: | ||
void sayHello() { | void sayHello() { | ||
char *arg; | char *arg; | ||
- | arg = sCmd.next(); | + | arg = sCmd.next(); |
- | if (arg != NULL) { // As long as it existed, take it | + | if (arg != NULL) { // As long as it existed, take it |
Serial.print(" | Serial.print(" | ||
Serial.println(arg); | Serial.println(arg); | ||
Ligne 384: | Ligne 421: | ||
===== CmdMessenger ===== | ===== CmdMessenger ===== | ||
- | http:// | + | Plus compliqué mais à noter : http:// |
+ | |||
+ | |||
+ | |||
+ | ===== Réception de valeurs ===== | ||
+ | Même technique, l' | ||
+ | |||
+ | {{.: | ||
+ | |||
+ | <code cpp> | ||
+ | /* | ||
+ | * Serial messages (8) | ||
+ | * Envoie de données de trois capteurs | ||
+ | */ | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | Serial.print(analogRead(0)); | ||
+ | Serial.print(" | ||
+ | Serial.print(analogRead(1)); | ||
+ | Serial.print(" | ||
+ | Serial.println(analogRead(2)); | ||
+ | delay(20); | ||
+ | } | ||
+ | </ |