Vous êtes sur la page 1sur 5

Bac pro SN Initiation Arduino

4 heures
Objectif du TP :
- Prendre en main la carte de développement Arduino UNO.
- Apprendre les bases de la programmation.
Matériel :
- 1 PC
- Carte Arduino UNO
- Shield « 'interface "FEZ" » avec 2 boutons et 1 LED

TRAVAIL DEMANDÉ
1. Premiers pas
Pour commencer, si ce n’est pas déjà fait, lire et faire les tâches proposées dans l’article « Premiers pas
avec Arduino UNO ».

2. Lecture d’une entrée numérique et moniteur série


Ouvrir le programme d’exemple « DigitalReadSerial »

Les commentaires en Anglais dans le programme d’origine ont été traduits en Français dans la capture
d’écran ci-dessous :
Installer le shield « 'interface "FEZ" » et connecter dessus
un bouton poussoir à la patte 2 de l’Arduino comme le
montre la photo ci-contre.

Connecter la carte Arduino à l’ordinateur et téléverser le


programme.

Dans le menu Outils, cliquer sur Moniteur série

Le moniteur série permet un dialogue entre l’Arduino et


l’ordinateur. Les informations sont transmises par
l’intermédiaire du câble USB.

C’est un outil très pratique pour la mise au point des


programmes

Toujours vérifier le réglage : la


vitesse de transmission dans la
console doit être identique à celle
qui a été initialisé dans la fonction
« Setup » du programme

Appuyer sur le bouton, le


relâcher.

Vous devez obtenir l’affichage ci-


contre.
2.1 Questions sur le programme
- Quelle instruction permet de définir la patte sur laquelle est connecté le bouton poussoir comme une
entrée ?
- Quelle instruction permet de lire l’état du bouton ? Quelle est la valeur renvoyée par cette fonction
si le bouton est appuyé ? Même question si il est relâché ?
- Quelle instruction permet d’initialiser le moniteur série ? A quoi sert le paramètre dont elle a
besoin ?
- Quelle instruction permet à l’Arduino de transmettre des informations sur le moniteur série ?

Juste avant la ligne Serial.println(buttonState); ajouter la ligne ci-dessous :


Serial.print("L’etat du bouton est : ");

Téléverser le programme modifié et tester.

- Quelle est la différence entre les instructions println et print (pensez éventuellement à utiliser la
référence du langage) ?

3. Utilisation d’un bouton


Sur le shield « 'interface "FEZ" », connecter une LED et un
bouton poussoir comme le montre la photo ci-contre.
 La LED est alors connectée à la patte 0 de notre
Arduino
 Le bouton poussoir à la patte 1 de notre Arduino
Modifier le programme précédent pour prendre en compte le
changement de numéro de patte du bouton.
Modifier le programme de manière à configurer la patte 0 en
sortie afin de pouvoir commander la LED (voir programme
blink de l’activité « Premiers pas avec Arduino UNO »).

Juste après la ligne int buttonState = digitalRead(pushButton); ajouter la ligne ci-dessous :


digitalWrite(LED, buttonState);
Téléverser le programme ainsi modifié et tester.
Insérer une copie d’écran de votre programme dans votre rapport.
Faire constater au professeur
3.1 Minuterie
Dans cette partie vous devez créer un programme qui va allumer la LED
pendant 10s quand on appuie sur le bouton.
Pour vous aider, l’algorigramme de la fonction loop() est donné ci-contre. Le
nom des fonctions ou instructions à utiliser est indiqué dans les différents
blocs de l’algorigramme.
Pour « traduire » la structure de test « Bouton appuyé » en langage Arduino
(langage C), voir l’article : Les structures algorithmiques de base
Vous pouvez également consulter la référence du langage pour la structure de
contrôle « if ».
Insérer une copie d’écran de votre programme dans votre rapport.
Faire constater au professeur
3.2 Télérupteur
Dans cette partie, vous devez créer un programme qui change l’état de la LED à chaque fois que l’on appui
sur le bouton :
 Si on appui sur le bouton et que la LED est éteinte, alors elle s’allume
 Si on appui sur le bouton et que la LED est allumée, alors elle s’éteint
Algorigramme de fonctionnement :

Il faut déclarer et initialiser une variable « Etat » qui vaudra FALSE si la LED est éteinte et TRUE si elle
est allumée.
L’attente de 500ms permet d’éliminer les rebonds de l’interrupteur.
Le phénomène de rebond des contacts :
Les boutons ne sont pas des systèmes mécaniques parfaits. Du coup, lorsqu’un appui est fait dessus, le signal ne
passe pas immédiatement et proprement de 5V à 0V. En l’espace de quelques millisecondes, le signal va “sauter”
entre 5V et 0V plusieurs fois avant de se stabiliser. Il se passe le même phénomène lorsque l’utilisateur relâche le
bouton. Ce genre d’effet n’est pas désirable, car il peut engendrer des parasites au sein de votre programme (si vous
voulez détecter un appui, les rebonds vont vous en générer une dizaine en quelques millisecondes, ce qui peut-être
très gênant dans le cas d’un compteur par exemple). Voilà un exemple de chronogramme relevé lors du relâchement
d’un bouton poussoir :
Faire le programme, le téléverser et le tester.
Insérer une copie d’écran de votre programme dans votre rapport.
Faire constater au professeur
Ajouter un deuxième bouton. Modifier le programme pour que l’allumage et l’extinction soit possible avec
les deux boutons.
Pour faire un test avec 2 conditions il faut utiliser l’opérateur « || » (touche Alt Gr + 6). Consulter la
référence du langage pour plus de précisions.
Faire le programme, le téléverser et le tester.
Insérer une copie d’écran de votre programme dans votre rapport.
Faire constater au professeur

4. Pour aller plus loin


Reprendre le programme « Minuterie » et prendre en compte le fait que si on appuie sur le bouton poussoir
pendant que la LED est allumée alors le temps d’allumage revient à 10s. Voir chronogramme ci-dessous :
Etat du bouton

La LED s’éteint 10s


après le dernier
t
Etat de la LED appui sur le bouton
10s 10s

Faire le programme, le téléverser et le tester.


Insérer une copie d’écran de votre programme dans votre rapport.
Faire constater au professeur

Ranger le matériel
Faire constater au professeur

Vous aimerez peut-être aussi