Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


logiciels:serial:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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/19 19:36]
resonance [Réception de valeurs]
logiciels:serial:accueil [2018/01/22 11:19] (Version actuelle)
resonance ancienne révision (2017/12/04 12:07) restaurée
Ligne 5: Ligne 5:
 Cependant il peut arriver que nous ayons besoin de plus de fonctionnalités comme l'utilisation des capteurs de distance avec la bibliothèque UltraSonic, des capteurs capacitifs, d'utiliser la bibliothèque Tone pour changer la fréquence PWM, etc. Donc, il faut soit reprendre et donc comprendre les exemples de Firmata, soit comprendre la base de la communication série. Vous l'aurez compris, on va plutôt choisir la deuxième solution. Cependant il peut arriver que nous ayons besoin de plus de fonctionnalités comme l'utilisation des capteurs de distance avec la bibliothèque UltraSonic, des capteurs capacitifs, d'utiliser la bibliothèque Tone pour changer la fréquence PWM, etc. Donc, il faut soit reprendre et donc comprendre les exemples de Firmata, soit comprendre la base de la communication série. Vous l'aurez compris, on va plutôt choisir la deuxième solution.
  
-**Téléchargement** de tous les codes de cette page : {{.:arduino-pd-serial.zip|}}+**Téléchargement** de tous les codes de cette page : {{.:arduino-pd-serial.zip|}} \\ 
 +** 
 +Un autre tutoriel (en anglais) détaillant la plupart des cas :** {{:logiciels:serial:arduino_for_pders.tar.gz|}} 
  
 ===== Prérequis ===== ===== Prérequis =====
-Si vous n'êtes pas à l'aise avec les notions de liaison série, je vous invite à lire le tutoriel d'[[http://fr.openclassrooms.com/sciences/cours/arduino-pour-bien-commencer-en-electronique-et-en-programmation/generalites-4#r-690110|openclassrooms]].+Si vous n'êtes pas à l'aise avec les notions de **liaison série**, je vous invite à lire le tutoriel d'[[http://fr.openclassrooms.com/sciences/cours/arduino-pour-bien-commencer-en-electronique-et-en-programmation/generalites-4#r-690110|openclassrooms]]. 
 + 
 +Une autre notion technique très utilisée ici est celle de **String**, littéralement "chaîne" en français. Il s'agit d'un type de données comme les nombres entiers (int), nombres à virgule flottante (float) ou caractère (char) que l'on retrouve en programmation. On l'appelle chaîne de caractères, c'est une suite de caractères, l'équivalent d'un tableau de caractères. Par exemple, le mot "BONJOUR" est une String composée de sept caractères 'B', 'O', 'N', 'J', 'O', 'U', 'R' auquel il est parfois ajouté au niveau informatique un caractère de fin, en langage C par exemple. 
 + 
  
-Une autre notion technique très utilisée est celle de **String**littéralement "chaîne" en français. Rapidementil s'agit d'un type de données comme les nombres entiers (int), nombres à virgule flottante (float) ou caractère (char). On l'appelle chaîne de caractèresC'est une suite de caractères, l'équivalent d'un tableau de caractèresPar exemple, le mot "BONJOUR" est une String composée de sept caractères 'B', 'O', 'N', 'J', 'O', 'U', 'R'.+<WRAP center round important 60%> 
 +Avec les Arduino Leonardoil y a une petite différencec'est pourquoi les exemples doivent être un peu modifiés. Il faudra peut-être ajouter ajouter un <code cpp>while (!Serial;</code> dans le setupVoir cette page : [[https://www.arduino.cc/en/Guide/ArduinoLeonardoMicro?from=Guide.ArduinoLeonardo#toc11|Différences avec Arduino UNO]] 
 +</WRAP>
  
 ===== Une valeur ===== ===== Une valeur =====
-Pour l'exemple le plus simple, on envoie une valeur avec Pure Data et on la reçoit après être passée par la Arduino.+L'exemple le plus simple est d'envoyer une valeur avec Pure Data et de la recevoir après être passée par la carte Arduino. Une boucle en somme.
  
-Quand il s'agit du nombre pas de problème, mais on peut aussi envoyer des caractères. Pour ce faire le caractère est converti en nombre entre 0 et 255 soit 8 bits. La conversion suit le standard [[http://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange|ASCII]]. Une [[http://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/ASCII-Table.svg/1000px-ASCII-Table.svg.png|table]] permet de visualiser ces correspondances.+Quand il s'agit d'un nombre pas de problème, mais on peut aussi vouloir envoyer des caractères. Pour ce faire le caractère est converti en nombre entre 0 et 255 soit 8 bits. La conversion suit le standard [[http://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange|ASCII]] que nous utiliserons souvent. Une [[http://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/ASCII-Table.svg/1000px-ASCII-Table.svg.png|table]] permet de visualiser ces correspondances.
  
  
Ligne 80: Ligne 89:
 La fonction **Serial.available()** est toujours utilisée pour connaître combien d'octets restent dans le buffer. Celui-ci est limité à 63 octets et si il n'y pas de Serial.read() ou de Serial.parseInt() pour enlever petit à petit les octets, alors il atteindra son maximum. La fonction **Serial.available()** est toujours utilisée pour connaître combien d'octets restent dans le buffer. Celui-ci est limité à 63 octets et si il n'y pas de Serial.read() ou de Serial.parseInt() pour enlever petit à petit les octets, alors il atteindra son maximum.
  
-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'envoyer sous forme de liste quand arrive le chiffre 10 équivalent au retour à la ligne dans Arduin, le **ln** dans **Serial.println()**. L'objet **[bytes2any]** convertit cette liste en caractères courant.+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'envoyer sous forme de liste quand arrive le chiffre 10 équivalent au retour à la ligne dans Arduino, le **ln** dans **Serial.println()**. L'objet **[bytes2any]** convertit cette liste en caractères courant.
  
 {{.:serial-3.png|}} {{.:serial-3.png|}}
Ligne 109: Ligne 118:
 } }
 </code> </code>
 +
 +Méthodes pour recevoir les caractères ASCII
 +{{:logiciels:serial:arduino-to-pd-serial.png|}}
  
 ===== serialEvent() ===== ===== serialEvent() =====
Ligne 194: Ligne 206:
 {{.:serial-5.png:|}} {{.:serial-5.png:|}}
  
-Pour le code Arduino, on ajoute on découpe une nouvelle fois pour récupérer le second argument. On ajoute aussi nos fonctions.+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 302: Ligne 314:
   * http://mchobby.be/wiki/index.php?title=SerialCommand   * http://mchobby.be/wiki/index.php?title=SerialCommand
   * http://forum.arduino.cc/index.php/topic,41215.0.html   * http://forum.arduino.cc/index.php/topic,41215.0.html
 +  * http://robotic-controls.com/book/export/html/10
  
 <code cpp> <code cpp>
Ligne 422: Ligne 435:
  * Envoie de données de trois capteurs  * Envoie de données de trois capteurs
  */  */
-int val; 
  
 void setup() { void setup() {
/home/resonancg/www/wiki/data/attic/logiciels/serial/accueil.1400520992.txt.gz · Dernière modification: 2014/05/19 19:36 de resonance