Source de l’article : http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertSerieDepuisPCReceptionString
Je vous invite à aller le visiter car pour l’instant il est plus complet. Au cas où le site est down vous pouvez vous rabattre sur le PDF suivant : Sauvegarde site original
Ce tutoriel a pour but de permettre de récupérer une chaine de caractère envoyer via le port série sur l’Arduino.
Cette fonction est utilisée dans les cas où l’on veux par exemple envoyer par bluetooth la commande de position d’un servomoteur comme dans le projet RCVoid
// --- Programme Arduino --- // Trame de code générée par le générateur de code Arduino // du site www.mon-club-elec.fr // Auteur du Programme : X. HINAULT - Tous droits réservés // Programme écrit le : 29/1/2011. // ------- Licence du code de ce programme ----- // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // //////////////////// PRESENTATION DU PROGRAMME //////////////////// // -------- Que fait ce programme ? --------- /* Le programme reçoit une chaîne de caractère se terminant par un saut de ligne (depuis le Terminal série ou une interface Processing) sur le port série USB. Cette chaîne reçue est affichée dans le Terminal. Ce programme utilise la nouvelle classe String du langage Arduino. */ // --- Fonctionnalités utilisées --- // Utilise la connexion série vers le PC // -------- Circuit à réaliser --------- // La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB) // /////////////////////////////// 1. Entête déclarative /////////////////////// // A ce niveau sont déclarées les librairies incluses, les constantes, les variables, les objets utiles... // --- Déclaration des constantes --- // --- Inclusion des librairies --- // --- Déclaration des constantes utiles --- // --- Déclaration des constantes des broches E/S numériques --- // --- Déclaration des constantes des broches analogiques --- // --- Déclaration des variables globales --- int octetReception=0; // variable de stockage des valeurs reçues sur le port Série (ASCII) char caractereRecu=0; // variable pour stockage caractère recu int compt=0; // variable comptage caractères reçus String chaineReception=""; // déclare un objet String vide pour reception chaine // --- Déclaration des objets utiles pour les fonctionnalités utilisées --- // ////////////////////////// 2. FONCTION SETUP = Code d'initialisation ////////////////////////// // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() // --- ici instructions à exécuter 1 seule fois au démarrage du programme --- // ------- Initialisation fonctionnalités utilisées ------- Serial.begin(115200); // initialise connexion série à 115200 bauds // IMPORTANT : régler le terminal côté PC avec la même valeur de transmission // ------- Broches en sorties numériques ------- // ------- Broches en entrées numériques ------- // ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ------- // ------- Initialisation des variables utilisées ------- } // fin de la fonction setup() // ******************************************************************************** ////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme ////////////////// // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop(){ // debut de la fonction loop() // --- ici instructions à exécuter par le programme principal --- //---- code type réception valeur sur le port série --- while (Serial.available()>0) { // tant qu'un octet en réception octetReception=Serial.read(); // Lit le 1er octet reçu et le met dans la variable compt=compt+1; Serial.println("Ascii Caractere "+ String(compt) +" = "+ String(octetReception)); // affiche code ASCII Octet reçu if (octetReception==10) { // si Octet reçu est le saut de ligne Serial.println("Saut de ligne recu"); Serial.println ("Chaine recue="+chaineReception); // affiche la chaine recue chaineReception=""; //RAZ le String de réception compt=0; // RAZ compteur delay(100); // pause break; // sort de la boucle while } else { // si le caractère reçu n'est pas un saut de ligne caractereRecu=char(octetReception); // convertit l'octet reçu en caractère chaineReception=chaineReception+caractereRecu; // ajoute le caratère au String } } // fin tant que octet réception //----- une fois que le saut de ligne est reçu, on sort du While et on se positionne ici } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** // ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS //////////////////// // ////////////////////////// AUTRES FONCTIONS DU PROGRAMME //////////////////// // ////////////////////////// Fin du programme ////////////////////
Recent Comments