View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Manipulation de bit et d'octet avec affichage dans la fenêtre Terminal du PC.

ARDUINO - INITIATION - SERIE
Par X. HINAULT - Créé le 19/08/2010

1.  Présentation

Ce programme montre comment manipuler simplement les bit d'un octet en affichant le résultat dans la fenêtre Terminal du PC au format binaire. Ce petit programme est à visée purement didactique et montre comment il est possible de visualiser l'état des bits unitaires d'une variables. Ceci peut être très pratique dans certaines situations de déboguage.

Ce programme utilise les fonctionnalités suivantes :

  • la connexion série vers le PC

Ce programme utilisera notamment les instructions du langage Arduino :

  • de manipulation de bits, bitSet et bitClear
  • et l'opérateur de décalage à gauche <<

Voir également :

2.  Matériel Nécessaire

2.1  L'espace de développement Arduino

  • ... pour éditer, compiler le programme et programmer la carte Arduino.

2.2  Aucun montage associé

3.  Instructions de montage

  • Connexion série entre la carte Arduino et le PC (utilise les broches 0 et 1)

4.  Le schéma théorique du montage


Le schéma théorique du montage

5.  Le circuit du montage


Le schéma du montage à réaliser

6.  Explication du programme

6.1  Structure globale du programme

Ce programme simple comprend :

  • une entête déclarative
  • une partie « configuration » qui ne sera exécutée qu'une fois (fonction setup( ) )
  • une partie constituée d'une boucle sans fin que le programme répètera à l'infini ( fonction loop( ) ) : c'est le coeur du programme.

6.2  Déroulement du programme

Le programme se déroule de la façon suivante :

  • Après avoir pris en compte les instructions de la partie déclarative,
  • puis après avoir exécuté la partie configuration ( fonction setup( ) ),
  • le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme

7.  Au niveau de la partie déclarative :

On déclare plusieurs variables de type float pour les calculs mathématiques :

float xf=0.0, yf=0.0, zf=0.0; // variables float pour calculs

8.  Au niveau de la fonction d'initialisation setup( ) :

Initialisation des fonctionnalités utilisées :

  • On initialise les différentes fonctionnalités utilisées :
    • Initialisation de la communication série avec le PC
Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission 

9.  Au niveau de la boucle principale, la fonction loop ( ) :

  • On réalise l'affichage des différentes valeurs grâce à l'instruction print de la librairie dédiée à la communication série.
  • Ce programme utilise les instructions du langage Arduino :
  • de manipulation de bits, bitSet et bitClear
  • et l'opérateur de décalage à gauche <<
  • On commence ici par réaliser un déclalage vers la gauche à l'aide de l'opérateur << :

Serial.println("*** Decalage vers la gauche ***");

Serial.println(octet, BIN); // au format binaire

for (int i=0; i<6; i++) {
  octet=octet<<1; // décalage 1 bit vers la gauche
  Serial.println(octet, BIN); // au format binaire
}

  • Ensuite, on met à 0 ou 1 les bits voulus de l'octet :


Serial.println("*** Mise a 0/1 du bit voulu ***");

octet=B11110000;
Serial.print("Octet= ");
Serial.println(octet, BIN); // au format binaire

octet=bitSet (octet,2); // mise à 1 du 3ème bit
Serial.print("3eme bit mis a 1 :");
Serial.println(octet, BIN); // au format binaire

octet=bitClear (octet,5); // mise à 0 du 6ème bit 
Serial.print("6eme bit mis a 0 :");
Serial.println(octet, BIN); // au format binaire


10.  Mise en oeuvre du programme

10.1  Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d'expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

10.2  Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l'IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
  • La fenêtre « Terminal » s'ouvre alors :
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :

10.3  Fonctionnement

  • Une fois le programme programmé dans la carte Arduino, le texte doit s'afficher dans la fenêtre Terminal :

11.  Le programme complet en langage Arduino :

A copier/coller directement dans l'éditeur Arduino


// --- Programme Arduino ---
// Copyright X. HINAULT - Créé le 20/08/2010
// www.mon-club-elec.fr 

//  Code sous licence GNU GPL : 
//  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/>.
//  

// --- Que fait ce programme ? ---
/* */

// --- Fonctionnalités utilisées ---
// Utilise la connexion série vers le PC 

// --- Circuit à réaliser ---
// Connexion série entre la carte Arduino et le PC (utilise les broches 0 et 1)  

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies incluses, les constantes, les variables...

// --- Inclusion des librairies utilisées ---

// --- Déclaration des constantes ---
byte octet=B00000001;

// --- constantes des broches ---


// --- Déclaration des variables globales ---

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---

//**************** 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 au démarrage --- 

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 sortie -------  


// ------- Broches en entrée -------  


// ------- Activation du rappel au + interne des broches en entrée si nécessaire -------  


} // fin de la fonction setup()
// ********************************************************************************

//*************** 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 --- 

Serial.println("*** Decalage vers la gauche ***");

Serial.println(octet, BIN); // au format binaire

for (int i=0; i<6; i++) {
  octet=octet<<1; // décalage 1 bit vers la gauche
  Serial.println(octet, BIN); // au format binaire
}

Serial.println("*** Mise a 0/1 du bit voulu ***");

octet=B11110000;
Serial.print("Octet= ");
Serial.println(octet, BIN); // au format binaire

octet=bitSet (octet,2); // mise à 1 du 3ème bit
Serial.print("3eme bit mis a 1 :");
Serial.println(octet, BIN); // au format binaire

octet=bitClear (octet,5); // mise à 0 du 6ème bit 
Serial.print("6eme bit mis a 0 :");
Serial.println(octet, BIN); // au format binaire

// NB : bitSet et bitClear numérote à 0 le 1er bit et à 7 le 8ème bit.. 

while(1); // stoppe boucle loop

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** Autres Fonctions du programme *************

// --- Fin programme ---