Activité pratique 1 : 1 LED + 1 BP

Matériel

Breadboard: Cette carte d'expérimentation permet de relier les composants entre eux grâce à des trous qui sont interconnectés ou pas. Les trous connectés correspondent aux lignes noires (cuivre) de la représentation ci dessus à droite.

Une carte Arduino UNO permetra de contrôler l'état de la LED en fonction de l'état du bouton poussoir.

Schéma structurel 1 LED + 1 BP

Avant de câbler l'ensemble on se concentrer ici sur une petite part. Une LED et un bouton poussoir reliés à la carte Arduino.

Analyser

Question

A quelles broches sont connectées la LED et le Bouton Poussoir.  Entrées ou sorties ?(remplir le tableau suivant).

Composants

Numéro de broches Arduino

Entrée ou sortie ?

LED

BP

Flécher sur le schéma la tension VIO2 et VIO3 correspondant aux tensions aux bornes des broche IO2 et IO3 de la carte Arduino.

Lorsque le BP est activé, que vaut VIO2 ?

Lorsque le BP est inactif, que vaut VIO2 ?

Quel est l'état de la LED lorsque VIO3 = 5V et quel est la valeur de l'intensité du courant dans la LED (Vd= 1,7 V?

Câbler

Question

Proposer un câblage ci-dessous :

Programme 1 : compter le nombre d'appuis

Dans un premier temps et pour comprendre le phénomène de rebonds, nous allons essayer de programmer un premier programme qui initialise un variable entière à 0 et ajoute 1 (incrémentation) lorsque le bouton poussoir est appuyé.

Lors de l'exécution du programme il est possible d'envoyer et de recevoir des informations au PC grâce à la liaison série.

Dans le programme, un objet nommé Serial doit être initialisé Serial.begin(9600) à une vitesse comprise entre 9600 et 115200 bauds (Nombre de symboles transmis par secondes). Puis une méthode println("Bonjour") permet d'envoyer les informations.

Tester le programme suivant :

1
/*
2
 * Dans cet exemple, une variable compteur est initialisee a 0
3
 */
4
5
int compteur = 0;
6
7
void setup() {
8
    Serial.begin(9600); // Initialise la transmission a 9600 Bauds
9
}
10
11
void loop() {
12
    Serial.println("Compteur =");  // Afficher la chaine de caracteres
13
    Serial.println(compteur);      // Afficher la variable compteur
14
    compteur = compteur + 1;       // Incrementer
15
    delay(1000);                   // Attendre 1s
16
}
17

Programme 1

Question

On souhaite créer un programme permettant d'afficher le nombre de fois que l'on a appuyé sur le bouton poussoir.

Réaliser l'organigramme (voir cours) du programme Arduino correspondant (SETUP et LOOP) :

Dans l'environnement Arduino, à partir de l'exemple, écrire un programme correspondant à l'organigramme ci-dessus et le tester.

Que constate-t-on ?

Rappel : Boucle while

La boucle while permet d'exécuter des instructions jusqu'à ce qu'une certaine expression (à l'intérieur de la parenthèse) devienne fausse. Autrement dit, tant que le test est vérifié, on répète les instructions entre accolade :

1
while(Var < 50)//
2
{
3
  // Traitement
4
}

Boucle tant que BP appuyé

La solution proposée ici consiste dans la fonction loop à :

- Tester si il y un appui

- S'il y a un appui on incrémente compteur et on attend le relâchement du BP.

Attendre le relâchement du BP peut se faire en utilisant une boucle TANT QUE dans laquelle on lit l'état du BP. On reste dans cette boucle tant que le BP est activé.

Programme 2

Question

Réaliser l'organigramme du nouveau programme Arduino avec boucle de gestion du relâchement du bouton :

Programmer et tester cette solution sur votre carte.

Que constate-t-on ?

Délais anti-rebonds

Pour se prémunir des rebonds une solution consiste à insérer un délais après chaque lecture du bouton poussoir :

Réaliser l'organigramme du nouveau programme Arduino avec les délais anti-rebonds adéquats :

Programmer et tester cette solution sur votre carte.

Question