Arduino > Exemple d'un potentiomètre et de la communication ASCII
Contents (hide)
L'Arduino effecture une lecture de la broche analogique 0 et envoie la valeur sous forme de message ASCII.
/* Description ============= L'Arduino effectue a chaque 20 ms une lecture de la broche analogique 0 et envoie la valeur sous forme de message ASCII. Le message ASCII est compose des elements suivants: * en-tete (A0) suivi d'un espace * la valeur * indicateur de fin de ligne Circuit ============= Broche analogique 0: potentiometre. Thomas Ouellet Frederics, 4 novembre 2012 */ unsigned long previousMillis; unsigned long interval = 20; void setup() { // Demarrer la communication serie a 57600 baud. Serial.begin(57600); } void loop() { // Verfier si au moins 20 millisecondes se sont ecoulees // depuis le dernier envoi. if ( millis() - previousMillis >= 20 ) { previousMillis = millis(); // Lire la valeur du potentiometre. int valeur = analogRead(0); // Envoyer la valeur du potentiometre. Serial.print("A0 "); // en-tete (A0) suivi d'un espace Serial.print(valeur); // la valeur Serial.println(); // indicateur de fin de ligne /* //Le bloc precedent peut aussi etre ecrit ainsi: Serial.print("A0 "); // en-tete (A0) suivi d'un espace Serial.println(valeur); // la valeur suivi de l'indicateur de fin de ligne */ } }
<pre><code> ----------begin_max5_patcher---------- 1678.3oc6Z0saaaCE95jmBBeia.xHD+QRT6p00ALTfNrK5kqEExRzNrUlzkR JKoE8co2skcwdI7K1NjxxVtwVwN0IcFnv.9GJJxy46722gxe7zSFLxbkrb.5 GQ+A5jS93ombheH2.mr32mLXZ5UYEok9oMHyLcpTWM37lqUIupxO9KRQYWjN +e0RjTilJKKSmHQ+V5U31oN1NYjapA3fEiLKsJ6BkdxarxrpFgHQfCh4rD94 HNifEBNMN9bDUDB2EhB2K50KtaUteiMid6ODtbOL5Jc5To+JO0pRKZuhtdpR WHq7ZAY0fl5p1QC5rHkpO3WDBEG3F8Smdp6sy+JQomYzWJsUJKpPVhzloirv m.f0hcO8kO64O+9CYAw3fj.gfbmPF8XAx9Uqodl7V.VgprRhdxGJPSbS3Ljr xOEo9Ry0toarkuuVBiAXqZ7XqDQXHYILqZzSJkE.9gHAvfmsDtKTZYloV62X 58zFv3Q33n.FIboMfw1rMfkbrXDdg79GRGywwgzfHv8LNBGvXAzyQjvf97NY +uKhdg5eKjgRPAC1txSIdMNTzn8hvDdBjOqQ6Ihsn8j8T6oaT6IaQ6WLbyLq tdlrQTGL.856Avnk+IHy2BWFaMSKud5HSQOnC..ggrXJc8r8wrdybcXhZ9lh NpJSZe3RLNlBu9hT5Plk9vEwdhKrCBtnboKOfPS2Ty6.DQWOiab+E8hOHPDa OgnQo5ICNe0mGT7psB3NhUBFNILfGj.Ig5OLK5fjDhtugY2a7omZWyrxoJfT PpcRsaNnbfX.PX0cuRzvRoSoFhxmeSkzBpjm1vLisBUN+FqRhl+Yjo9RKvaK s1MsooVKTM.idkFV9bY8Up4+8T+7f0HcTgigWJ5RUkzsCOYTZc9YtcMyn0xq TFs6V+o7JKhfRypTW52R2uyjn2Wq7LUzyuIyU1QYcRSs6Z1pTP7JQYoVXoQO 0lWqzlMyfIZepRSBEXJgKb4bnbvyfGx4dZj9jNh3s3kbzP8920dtgfwrViF5 BEG1.piM1Lo2bUBVbkybVhxA6z7afuXky+qZ3yYo1kNJG.BiBJNhEwbU9Rhw g.XGBDjXQA8wWjxNB4KNzEGAPMDXI8AdYWXTk9Nf5FhsebJITJVjDEIXtDXB bbBiEAo+Ygz9xoQRNVnU5Ql9nH.IucNPgN.fP742ibzEH8QrjHNhHVtMeqeo I8qukPzTHcq0reNOfORRBIl6nKPWF6cGcjPhNVh8HmgdVgB580hJgzaCmYAJ ZKx0spBmG8FYzqEC9JM8LzKmeiiAFTiR5qF4mfrI640oPwSOtudzMT2qXH.S PD9xjjPAN1YnUVKotrFpG5t6gPp.qYK4QY6isjywt1qhg9qRvg.yFVhijCEC wFQ7XWWWawdxOJyktvVtHY5vzwiUYWzXL0lo9RWNKRYKwk7Tcoqz1Xod9+TA 7HFB8ueHJfQH9i7f2zLeBf2wwQwNx3r9JgQBNZx.6f5A6TVDRTHVrT+6KAr3 3uw9lvaTJJD54J.0vgc2Z9fxS7oac7JIzd6T6vjskdO5k8P2e168455GhhVB QcHCBDx6Af3eS7j7cvduPmJyjIExcCD5TUl1+wD1qu.PYGvEnd2ajZnkLY2D GaFFNbGtgy7OptpxnaEwKTMYYGzCFvhVdZg6LFP5oCLzOaJxau7HiMWZ+BP3 1nlEJGjK8qeT2J.aGKc5ZlovXaTh.Lim3JKb6uP5nBKCP5ZD2vgrLZRm01yt M.GKDTVn6a7X.sDquxiRyd2DuZrUWbFtqvatTZWSA7xb6acWZ0DsALWEpr20 csaf10VBub19V2kXym3w4O59ZcdjEc6f5Nb1XG4Nazu6r8M1YqKYo9c1RN1c 1He2YayNa9aw27wW7eOv653FecOvRn20r1UcQgezpMF55oRoScsr1YN70lyE p7botqwMWU5r2dnbyMNrqRCeGjlnGMoIZGjF2CB4QRbbm4zWM5LUkOy.tQKb WhXXR6gewCvBhfvcDkhwzksZzN7pc9foRODZDEya6lTHfNKSRDgqoQqF9APi 79Cj6xoYO0ovvkBOKliSngQzj0zoUC+PoSzCrNIXqI7blHfbacpY3GBcZmBt EOZA2zcITv8.6erjmjcPdb+8J53rem1bJPdo8eo.Pbv0fVDjsIhfCa+qcrb3 6zl2T5Kc1Lnxb4B4xqN.Mq21Tj0+b6.gP27Seo3AV4kp146IPLH0Brrp.JV0 1FhQWIhFbpae9zo+GU1cbYC -----------end_max5_patcher----------- </code></pre>
import processing.serial.*; // Lorsque vous demarrez ce code, tout les ports // series sont affiche dans la fenaªtre de deboguage. // Changer la chaine suivante pour qu'elle // corresponde au nom de votre port serie. String portName = "/dev/tty.usbmodemfd131"; // Declarer une instance de la classe Serial: Serial serial; int A0; void setup() { size(256, 256); smooth(); println(Serial.list()); // Affiche les noms des ports. // Creer une instance de la classe Serial avec // une vitesse de 57600 baud: serial = new Serial(this, portName, 57600); // Indiquer a l'instance serial de lancer la fonction serialEvent // lorsque l'octet 10 est recu. L'octet 10 est envoye par // Serial.println() pour terminer le message: serial.bufferUntil(10); textAlign(LEFT,TOP); } // Definir une fonction pour recevoir les donnees du port serie: void serialEvent(Serial p) { // Lire le message. String chaine = p.readString(); // Separer les elements du message // selon les espaces: String[] elements = splitTokens(chaine); // S'assurer qu'il y a bien deux mots // dans le message et ensuite attribuer // la valeur a la bonne variable selon // l'identifiant: if ( elements.length == 2 ) { if ( elements[0].equals("A0") ) { A0 = int(elements[1]); } } } void draw() { background(0); text("A0: "+ A0, 20, 10); rect(0,30,A0/1024.*width,20); }
L'extrait de code embarqué suivant envoie la valeur de trois entrées analogiques sur des lignes différents:
Serial.print("A0 "); // en-tete (A0) suivi d'un espace Serial.print(analogRead(0)); // la valeur Serial.println(); // indicateur de fin de ligne Serial.print("A1 "); // en-tete (A1) suivi d'un espace Serial.print(analogRead(1)); // la valeur Serial.println(); // indicateur de fin de ligne Serial.print("A2 "); // en-tete (A2) suivi d'un espace Serial.print(analogRead(2)); // la valeur Serial.println(); // indicateur de fin de ligne