Mise à jour le 15/01/2021 : Article traitant de la communication entre la carte Arduino et Processing via votre pc en liaison série ( par les ports Usb )
Sommaire :
- Objectif de ce tutoriel
- Présentation de Processing
- Tutoriel sur la communication PC vers Arduino
- Programme coté Arduino
- Programme coté Processing via votre PC
- Pour tout problème
- A suivre cet article est mis à jour régulièrement
- Retour au menu construction d’une tourelle .
.
Objectif de ce tutoriel |
Il nous semblait trop compliqué de créer un seul tutoriel expliquant la communication entre la carte Arduino et le laser, le fonctionnement de Processing afin d’afficher les différents données du laser, de travailler sur la cartographie ou bien d’autres sujets. Pour cela, nous avons décomposé l’étude du laser dans plusieurs modules. Ce module traite de la communication entre une carte Arduino Uno et le logiciel Processing via votre PC. Le but est de programmer votre carte Arduino pour présenter les données sur le port série et de créer un morceau de programme sur Processing pour afficher les données récupérées sur le port série. Nous reverrons comment installer la bibliothèque pour la communication série et comment la paramétrer, de choisir une police sur Processing et enfin récupérer les informations venant du bus série et de les afficher sur l’écran. Vous retrouverez dans cet article les programmes de Processing et Arduino qui sont tout 2 largement commentés.
.
Retour au sommaire
Présentation de Processing |
.
Le principe majeur de Processing est de simplifier au maximum la mise en œuvre des programmes. Le langage Processing, bien que très proche de langages tels que Java ou C++, se veut lui aussi assez simple. Adapté à la création graphique, Processing réclame moins d’efforts que Java pour effectuer des tâches simples telles que la modification d’une animation à intervalle régulier (qui permet des créations animées). Ses fonctionnalités sont limitées aux besoins des créateurs d’images 2D et 3D générées par programmation mais peuvent être étendues, par le biais de modules externes, à la capture d’un flux vidéo, à la génération et à la manipulation de son, à l’interfaçage des ports d’entrées-sorties, etc.
Les gestionnaires setup() et draw() sont deux fonctions pré-définies très importantes dans processing. La première, setup(), est exécutée une seule fois au lancement du programme. La seconde, draw() est lancée à intervalle régulier, par défaut 60 fois par seconde.
Processing emploie un typage rigoureux et est sensible à la casse. La structure de ses fonctions de base (comparaisons, conditions, boucles, etc.) est familière pour les utilisateurs du C++ ou de Java.
.
Description complémentaires des fonctions ou librairie
|
.
processing.serial
La bibliothèque Serial lit et écrit des données vers et depuis des périphériques externes, un octet à la fois. Il permet à deux ordinateurs d’envoyer et de recevoir des données. Cette bibliothèque offre la possibilité de communiquer avec des périphériques de microcontrôleur personnalisés et de les utiliser comme entrée ou sortie des programmes de traitement. Le port série est un port d’E / S à neuf broches qui existe sur de nombreux PC et peut être émulé via USB.
.
En cours de réalisation
Retour au sommaire.
Tutoriel |
.
.
Retour au sommaire
Programme coté Arduino |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
// // // // ***************************************************** // * RedOhm * // * * // * Lecture d'une valeur sur la carte Arduino * // * via le port serie * // * Etape 1 laser lidar V3 * // * * // * code programme : Comptage_interne * // * * // * 01/11/2019 * // * H.Mazelin * // ***************************************************** // Déclare une variable ( valeur ) de type int non-signée. ce type de variables // unsigned int stocke uniquement des valeurs positives, dans une fourchette // allant de 0 à 65535 unsigned int valeur ; // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while(!Serial); } //Le programme principal s’exécute par une boucle infinie appelée Loop () void loop() { // incrémente la variable valeur de un, sans modifier la variable valeur valeur = valeur +1 ; // Affiche les données sur le port série suivi d'un caractère de "retour de chariot" //(ASCII 13, or '\r') et un caractère de "nouvelle ligne" (ASCII 10, or '\n'). Serial.println(valeur); // Réalise une pause dans l'exécution du programme pour la durée (en millisecondes) // soit 1000 ms = 1 secondes delay(1000); } |
.
Retour au sommaire
Programme coté Processing via votre PC |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
// // // // ************************************************************************* // * RedOhm * // * * // * Lecture d'une valeurs sur la carte Arduino * // * via le port serie et affichage de la valeur a l'ecran * // * Etape 1 laser lidar V3 * // * * // * code programme : Communication_entre_Arduino_vers_Processing_2 * // * * // * 01/11/2019 * // * H.Mazelin * // ************************************************************************* //importer la librairie pour la communication serie import processing.serial.*; // variable pour stocker mon port de communication (le numero du port) Serial monPort; // le nom du port pour pouvoir lire les informations du port String leNomDuPort; // Variable pour stocker les informations venant du port de communication // à savoir // les valeurs venant du port de communication sont au format String String valeur; // La fonction setup () est exécutée une fois, lorsque le programme démarre. // Il sert à définir les propriétés d'environnement initiales telles que la // taille de l'écran et à charger des supports tels que des images et des polices // au démarrage du programme. void setup () { // definition de la taille de la fenetre // syntaxe : size (Hauteur fenetre,largeur fenetre ) size(800,300); // choix de la couleur du fond de la fenetre // syntaxe : background (rouge,vert,bleu ) // valeur du rouge de 0 à 255 iden pour les autre couleurs // affichage du fond en blanc background (255); // cette fonction nous permet de visualiser les ports disponibles printArray(Serial.list()); //Permet d'aller rechercher le nom du port dans ma liste leNomDuPort =Serial.list()[1]; // Activation complete pour lancer le port de communication // avec fixation de sa vitesse de communication soit 9600 monPort= new Serial(this ,leNomDuPort,9600 ); } //Le programme principal s’exécute par une boucle infinie appelée draw () void draw () { // cette fonction demande si mon port est disponible // si le port est disponible il renvoie une information du type 1 ou 2 ou .... // si tel est le cas, on execute le code entre crochets if (monPort.available ()>0 ) { // cette fonction lit la chaine de caracteres jusqu'à trouver un retour à la ligne // le retour à la ligne = \n valeur = monPort.readStringUntil('\n'); } if (valeur !=null) { println(valeur); } // Creation d'une gommette pour effacer l'ancienne valeur // Définit la couleur utilisée pour remplir les formes. fill(255); // Désactive le tracé du contour noStroke(); // Dessine un rectangle à l'écran. // Par défaut, les deux premiers paramètres définissent // l'emplacement du coin supérieur gauche, le troisième définit // la largeur et le quatrième définit la hauteur. rect (462,54,132,24); // Creation de la police PFont police; // Déclarer la variable PFont police = loadFont("VinetaBT-Regular-22.vlw"); textFont(police,22); // Affichage d'un texte à l'écran // text (texte,x,y); // x => coordonnée x du texte // y => coordonnée y du texte fill(0);//Spécifier la couleur de la police //affiche le texte et de la valeur du compteur Arduino text("Valeur du compteur = "+valeur,70, 75); } |
.
Retour au sommaire
Pour tout problème |
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
.
Retour au sommaire