Leçon 4

Le bouton poussoir

Le bouton poussoir

Principe

Le principe du bouton poussoir est que lorsque l'on appuie, le courant passe et lorsque on relâche le courant ne passe plus. Reproduisez le montage ci-dessous et testez le bouton sachant que la courbure des pattes du bouton poussoir pointe vers le centre de la plaque .

Montage en série

Reproduire le montage ci-dessous.

Ici il est nécessaire d'appuyer sur les deux boutons pour que le courant arrive à la LED.

Montage en parallèle

Reproduire le montage ci-dessous.

Ici le courant à la possibilités de passer par deux chemins parallèles. Si on appuie sur un des deux boutons la LED s'allume.

Les entrées numériques

Deux instructions

Dans le cours précédent, pour allumer une LED nous avons utilisé les sorties numériques: OUTPUT.
Soit le pin de la carte Arduino envoie du +5V, position 1, soit il est à 0V, donc au ground, position (0).
Les entrées numériques fonctionnent sur le même principe : soit elle reçoivent du +5V ou du 0V.
Pour les sorties nous avons déclaré qu'un pin était en mode sortie en écrivant pinMode(pin,OUTPUT).
Puis nous avons fait sortir du courant (ou pas) grâce à l'instruction digitalWrite(pin, état), qui est une commande d'écriture.
Pour les entrées, nous utiliserons deux commandes semblables pinMode(pin,INPUT) pour déclarer que le pin est en mode entrée et digitalRead(pin) pour lire ce que reçoit le pin.

Un premier script

Recopiez le script input ci-dessous, branchez votre carte Arduino et téléversez le script.

Cliquez sur la loupe pour ouvrir la le moniteur série.
Vous obtenez une série de 0 ce qui correspond à la réalité, ou bien des séries de 1 et de 0 qui changent sans raison valable.
C'est ce qu'on appelle un comportement erratique. C'est-à-dire que la valeur obtenue n'est pas fiable . Il faudra pour la suite prévenir ce comportement erratique.

Utilisation du bouton poussoir par programmation

Ici on va déclarer un pin en mode lecture et le relier au bouton poussoir. Ainsi en appuyant sur le bouton, la carte Arduino va recevoir l'information 1 (5v) ou 0 (0v) et pourra agir en conséquence.
Reproduire le montage ci-dessous qui connecte le bouton poussoir sur le pin 10. Puis recopiez et téléversez le script bouton1

Ouvrez le moniteur série puis appuyez et relachez le bouton poussoir. Lorsque le bouton est appuyé on devrait avoir que des 1 et lorsqu'il est reclaché que des 0. On l'affichage n'est pas exactement cela. On parle de comportement erratique.
Pour remédier à cela on se sert d'une résisitance 10 kΩ (marron (1) noir (0) orange ($10^3$).
Modifiez votre précédent montage comme indiqué ci-dessous.

Ici lorsque le bouton est enfoncé, la résistance de 10 kΩ oblige le courant à aller sur le pin 10.

Allumer une LED avec un bouton poussoir

Reproduire le montage ci-dessous et recopier le script boutonLed

Exercices

Exercice 1

Proposez un montage et un script exercice1 tel que :

Exercice 2

Proposez un montage et un script exercice2 tel que :

Exercice 3

Dans cet exercice nous allons réaliser un sablier numérique.La LED1 s'allume puis la LED2 etc..... toute les 2 secondes. Le sablier s'est vidé lorsque toutes les LEDS sont allumées. On retourne alors le sablier, ici on éteint toutes les LEDS. En appuyant sur le bouton poussoir, le signal envoyé au pin 8 change, autrement dit on change d'état. Il passe de 0 à 11.
Pour cela nous allons utiliser la fonction millis() qui compte le temps en millisecondes depuis la mise en route de l'Arduino.
Lorqu'on déclare une variable qui est un entier avec l'instruction int arduino utilise 16 bits soit $2^{16}=65536$ valeurs où encore un entier entre -32768 et 32767.
Avec l'instruction millis(), Arduino compte 1000 fois par seconde et donc pour une minute on comptera 60 000 millisecondes ce qui dépassera la capacité de la variable déclarée entière.
Pour remédier à ce souci on peut stcoker un entier sur 32 bits en le déclarant long et ainsi avoir la possibilité d'utiliser $2^{32}$=4 294 967 296 valeurs où encore un entier entre -2 147 486 648 et 2 147 486 647.
Et si on ne souhaite pas exprimer de négatif on déclarera la variable unsigned long soit non signée. Cette variable pourra ainsi prendre les entiers compris entre 0 et 4 294 967 295 sachant qu'en millisecondes on obtient presque 50 jours.