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 |

Test simple du Shield Arduino Joystick + BPx2

Par X. HINAULT - Page créée le : 18/2/2011.

(cliquer sur l'image pour agrandir)

1.  Présentation

Ce programme test le Shield Arduino Joystick + BPx2 et affiche l'état des BP et du Joystick dans la fenetre Terminal série.

Ce programme utilise les fonctionnalités suivantes :

Ressources utiles associées à ce programme :

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  Le matériel suivant pour réaliser le montage associé

3.  Instructions de montage

4.  Le schéma théorique du montage

Le schéma théorique du montage (cliquer pour agrandir)

5.  Le circuit du montage

Le schéma du montage à réaliser (cliquer pour agrandir)

6.  Fonctionnement 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.  Explication du programme

7.1  Au niveau de la partie déclarative :

  • On renomme les broches utilisées par le shield Joystick.

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

  • On met en entrée les broches utilisées avec les BP
  • A noter que les BP sont actifs sur niveau BAS.
  • A noter également que le "rappel au plus" est déjà présent sur la carte et n'a pas besoin d'être activé ici.

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

  • On réalise une mesure sur les broches analogiques des axes du Joystick et on affiche le résultat dansle Terminal
  • On teste l'état des BP et on affiche le résultat également dans le Terminal.

8.  Mise en oeuvre du programme

8.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

8.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 :

8.3  Fonctionnement

  • Un message indiquant l'état du Joystick et des BP s'affiche à intervalle régulier dans la fenêtre Terminal :

(cliquer sur l'image pour agrandir)

9.  Le programme complet en langage Arduino

A copier/coller directement dans l'éditeur Arduino


// --- 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 : 18/2/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 ? ---------
 /* Ce programme test le Shield Arduino Joystick + BPx2
 et affiche l'état des BP et du Joystick dans la fenetre Terminal série.  */


// --- Fonctionnalités utilisées ---

// Utilise la connexion série vers le PC
// Utilise la conversion analogique numérique 10 bits
// Utilise la carte d'extension Arduino (shield) Joystick + BP x 2

// -------- Circuit à réaliser ---------

// La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)
// Enficher la carte d'extension Joystick + BPx2 broche à broche sur la carte Arduino


// /////////////////////////////// 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 ---
const int APPUI=LOW; // constante pour tester état BP

// --- Déclaration des constantes des broches E/S numériques ---

const int bpRouge=3; // Constante pour la broche 3
const int bpBleu=4; // Constante pour la broche 4
const int bpJoystick=5; // Constante pour la broche 5

// --- Déclaration des constantes des broches analogiques ---

const int axe1Joystick=0; // Constante pour la broche analogique 0
const int axe2Joystick=1; // Constante pour la broche analogique 1

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

int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

int positionAxe1=0; // Variable pour acquisition résultat brut de conversion analogique numérique axe 1 Joystick
int positionAxe2=0; // Variable pour acquisition résultat brut de conversion analogique numérique axe 2 Joystick

// --- 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 -------  
 pinMode (bpRouge,INPUT); // Broche bpRouge configurée en entrée
 pinMode (bpBleu,INPUT); // Broche bpBleu configurée en entrée
 pinMode (bpJoystick,INPUT); // Broche bpJoystick configurée en entrée

// ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques -------  
 //digitalWrite (bpRouge,HIGH); // Rappel au + activé sur la broche bpRouge configurée en entrée
 //digitalWrite (bpBleu,HIGH); // Rappel au + activé sur la broche bpBleu configurée en entrée
 //digitalWrite (bpJoystick,HIGH); // Rappel au + activé sur la broche bpJoystick configurée en entrée
// cette activation n'est pas indispensable pour le shield Joystick + BPx2

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

//mesure_brute= analogRead(broche_analogique) ; // acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée

//----- lecture position Joytstick
positionAxe1=analogRead(axe1Joystick); // acquisition conversion analogique numérique sur broche analogique axe 1
positionAxe2=analogRead(axe2Joystick); // acquisition conversion analogique numérique sur broche analogique axe 2

Serial.print("Position axe 1 = "), Serial.println(positionAxe1); // affiche état Axe 1
Serial.print("Position axe 2 =  "), Serial.println(positionAxe2); // affiche état Axe 2

//---- lecture état des BP du shield Joystick
if (digitalRead(bpRouge)==APPUI) Serial.print("Appui BP rouge / ");
if (digitalRead(bpBleu)==APPUI) Serial.print("Appui BP bleu / ");
if (digitalRead(bpJoystick)==APPUI) Serial.print("Appui BP Joystick / ");

Serial.println(); // saut de ligne
Serial.println(); // saut de ligne

delay(1000); // entre 2 lectures


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