Ignorer la navigation

Le système Arduino



I. Rappels sur la carte Arduino du point de vue matériel

La carte Arduino Uno que nous allons utiliser est une sorte de petit ordinateur. Il possède un microcontrôleur (microprocesseur + mémoire+ interface de gestion des entrées/sorties).

La carte Arduino UNO :




Il possède donc des entrées / sorties logiques (appelée aussi "numériques" ou TOR (Tout ou Rien) et « digital » en anglais), des entrées analogiques (0 à 5V), des moyens de communication série et bien sûr un résonateur à quartz d'une fréquence de 16MHz.
 

Questions:

  1. Combien y-a-il d'entrées analogiques sur une carte Arduino Uno?
  2. Comment sont-elles nommées sur la carte?
  3. Combien y-a-il d'entrées numériques (TOR) sur une carte Arduino Uno?
  4. Comment sont-elles nommées sur la carte?
  5. Combien y-a-il de sorties analogiques sur une carte Arduino Uno?
  6. Comment sont-elles nommées sur la carte?
  7. Combien y-a-il de sorties numériques (TOR) sur une carte Arduino Uno?
  8. Comment sont-elles nommées sur la carte?

 

Remarque:

Pour connaître le rôle de chaque broche (pin en anglais) de la carte Arduino UNO il y a le schéma suivant:

Je sais, ce n'est pas facile à lire car les broches peuvent avoir plusieurs fonctions (pas en même temps bien sûr!). Par exemple, pour la broche 1, on apprend:

  • qu'elle est sur le port D du micro-controleur PIC (PD1 -> jaune = Port Pin))
  • qu'elle est de type digital (numérique, c'est à dire Tout Ou Rien)
  • qu'elle peut aussi être utilisée pour une liaison série (bleu= Sérial Pin. Elle correspondra à TxD, Transmit Data)
  • ...

 

Il existe de nombreuses autres cartes du type "arduino" (nano, micro, ....). Voici la carte MEGA:

Questions:

  1. Combien y-a-il d'entrées analogiques sur une carte Arduino Mega?
  2. Comment sont-elle nommées sur la carte?
  3. Combien y-a-il d'entrées numériques (TOR) sur une carte Arduino Mega?
  4. Comment sont-elle nommées sur la carte?
  5. Combien y-a-il de sorties analogiques sur une carte Arduino Mega?
  6. Comment sont-elle nommées sur la carte?
  7. Combien y-a-il de sorties numériques (TOR) sur une carte Arduino Mega?
  8. Comment sont-elle nommées sur la carte?
  9. Combien-a-t-il de possibilité en terme de liaison série?

 

II. Premiers programmes


Ressources disponibles :
Vous disposez de différentes ressources concernant Arduino:  classeurs, documents numériques (language Arduino.pdf) et le site internet officiel http://arduino.cc/ sur l'onglet « reference" notamment (attention à ne pas faire de traduction automatique de la page car les logiciels de traduction ne fonctionnent pas bien avec des explications technologiques).


L'algorithmie :
L'algorithme est une suite d’instructions, qui une fois exécutée correctement, conduit à un résultat donné. Pour comprendre, expliquer, analyser un programme nous allons utiliser l'algorithmie sous forme graphique (organigramme) plus facilement compréhensible quand la problématique est simple.

Norme :

Symboles normalisés Commentaires:
Les tests ou branchements conditionnels :
la pointe vers le haut est l'entrée du test,
la pointe avec le rond est le résultat du test lorsqu'il est faux,
la pointe vers le bas est le résultat du test lorsqu'il est vrai.
Mise à disposition d'une information à traiter ou enregistrement d'une information traitée.
Appel de sous programme (appelé aussi « fonction » sous arduino)

 

Quelques structures algorithmiques:

Séquence linéaire

Séquence alternative


"si…alors…sinon"

Séquence répétitive


"tant que…faire…"

Séquence répétitive


"répéter…jusqu'à…"

Début
 "Traitement1"
 "Traitement2"
Fin
Si "condition"
   alors "Traitement 1"
   sinon "Traitement 2"
Fin si
Tant que "condition"
    faire "traitement"
Fin tant que
Répéter "traitement"
jusqu'à "condition"

 

 

1. Rappel sur la structure d'un programme Arduino:

La structure de base d'un programme Arduino (sketch) :

 

variables         (déclaration des variables)

void setup()
         {
                 Commandes d'initialisation (entrées, sorties, ...)
          }

void loop()
          {
                Instructions ;
          }

A savoir :
  • La structure void setup() n'est éxécutée qu'une seule fois.
  • La structure void loop() est exécuté indéfiniment (Loop = boucle)
  • La ligne de commentaires : // ... tout texte après les deux slashs est un commentaire.
  • Le bloc de commentaires : /*        */ tout texte entre les deux étoiles est un commentaire, le texte peut s'étendre sur plusieurs lignes.

 

2. Les premiers programmes simples (révisions de 1ère)


2.1 Programme N°1 : clignotement d'une led

Après avoir lancé le logiciel Arduino :
Écrivez (ou copiez) le programme (sketch) suivant en respectant très exactement la mise en page :

/* début du programme
Nom : Cligno_LED13
Fonctionnement : Commande sans arrêt le clignotement d'une LED.
Les temps ON (active ou allumée) et OFF (inactive ou éteinte) sont identiques : 0.1s. La LED celle connectée sur la broche 13.
*/

void setup()
{
    pinMode(13, OUTPUT);     // la broche 13 est définie en sortie.
}

void loop()
{
    digitalWrite(13, HIGH);     // allume la LED
    delay(100);     // attend, en ms, le temps indiqué entre parenthèse
   digitalWrite(13, LOW);     // éteint la LED
   delay(100);     // attend, en ms, le temps indiqué entre parenthèse
}
    //fin du programme//

Ce programme fait clignoter la LED du module Arduino toutes les 0.2 secondes (ON-OFF). L'expression ON-OFF représente la période. Ici la durée ON est égale à la durée OFF (0,1 s).

  • l'instruction pinMode
    
     

Voici ce que dit la documentation Arduino:

pinMode()


Description
Configures the specified pin to behave either as an input or an output. See the description of digital pins for details on the functionality of the pins.

As of Arduino 1.0.1, it is possible to enable the internal pullup resistors with the mode INPUT_PULLUP. Additionally, the INPUT mode explicitly disables the internal pullups.


Syntax
pinMode(pin, mode)


Parameters
pin: the number of the pin whose mode you wish to set

mode: INPUT, OUTPUT, or INPUT_PULLUP. (see the digital pins page for a more complete description of the functionality.)

....

en résumé: pinMode ( n° de broche, [OUTPUT ou INPUT] ) ; déclare la broche « n° de broche » en entrée ou en sortie. Cela ne concerne que les entrées numériques (appelées aussi Tout Ou Rien. En anglais: digital)

  • l'instruction digitalWrite:
    
     

Voici ce que dit la documentation Arduino:

digitalWrite()

Description
Write a HIGH or a LOW value to a digital pin.

If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW.

If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin. It is recommended to set the pinMode() to INPUT_PULLUP to enable the internal pull-up resistor. See the digital pins tutorial for more information.

NOTE: If you do not set the pinMode() to OUTPUT, and connect an LED to a pin, when calling digitalWrite(HIGH), the LED may appear dim. Without explicitly setting pinMode(), digitalWrite() will have enabled the internal pull-up resistor, which acts like a large current-limiting resistor.

Syntax
digitalWrite(pin, value)

Parameters
pin: the pin number

value: HIGH or LOW

....

en résumé: digitalWrite ( n° de broche, [HIGH ou LOW] ) met un niveau haut (1) ou bas (0) sur la broche désignée. Il s'agit bien d'une sortie logique appelée aussi TOR (Tout Ou Rien) ou digital (en anglais).

  • l'instruction delay ():
    
     

Voici ce que dit la documentation Arduino:

delay()

Description
Pauses the program for the amount of time (in miliseconds) specified as parameter. (There are 1000 milliseconds in a second.)


Syntax
delay(ms)

Parameters
ms: the number of milliseconds to pause (unsigned long)

....

en résumé: delay (100) : le microcontrôleur de la carte Arduino attend 100 millisecondes.

On remarque:

  • que les broches numériques ("Digital Pin" en anglais) peuvent être soit des entrées soit des sorties.
  • quand on veut savoir ce que fait une instruction on se reporte au site internet Arduino qui est la seule source fiable (site en anglais)



Sauvegardez ce programme sous le nom : Clign_LED13_NomsDuBinome à l'aide de l'icône représenté en blanc ci-dessous (exemple sur les versions anglaise et française):


Allez dans le menu « croquis » et choisir «vérifier/compiler » (ou CTRL R)

Cette fonction permet de vérifier qu'il n'y a pas d'erreurs de programmation (erreurs de syntaxe)
S'il n'y a pas d’erreurs, chargez (Upload ou téléverser) le programme dans la carte Arduino à l'aide de l'icône représentée en blanc ci-dessous :


Le programme s'exécute dès que le chargement est effectué. Un problème de connexion ? Vérifier le bon choix du port de communication (menu « outil » puis « port série »).
Le driver USB qui était demandé lors de la connexion de la carte Arduino au PC est-il installé ?
Si oui, allez dans le menu Tools- Serial Port, choisissez autre COM3 et relancez le chargement.

La LED clignote ? Oui, c'est gagné. Autrement appelez le professeur et expliquez lui clairement le problème auquel vous êtes confronté.

2.2 Si vous deviez traduire en français la fonction « digitalWrite » comment l’appelleriez-vous ?
2.3 Si vous deviez traduire en français la fonction « delay » comment l'appelleriez-vous ?
2.4 Modifiez maintenant le programme pour que la LED reste allumée pendant 1s et éteinte pendant 2s.

  • Pour constater le changement, n'oubliez pas de recharger le programme dans la carte Arduino après l'avoir modifié. Chronométrez !
  • Faire valider par le professeur

Remarque : à chaque modification du programme recopiez celui-ci dans votre compte-rendu.





2.5 Modifiez maintenant le programme pour que la LED reste allumée pendant 1s, éteinte pendant 2s puis se rallume 4 secondes, s'éteigne 2s, se rallume 2 secondes et s'éteigne 5 secondes.

  • Pour constater le changement, n'oubliez pas de recharger le programme dans la carte Arduino après l'avoir modifié. Chronométrez !

Créé avec eXeLearning (Nouvelle fenêtre)