Cours:ArduinoBoutons : Différence entre versions
(→{{Bleu|Ex 1: Entrée, sortie ???}}) |
|||
Ligne 31 : | Ligne 31 : | ||
void setup() | void setup() | ||
{ | { | ||
− | ..... | + | ..... // configuration des e/s |
} | } | ||
Ligne 41 : | Ligne 41 : | ||
=={{Vert|Détection de changement d'état}}== | =={{Vert|Détection de changement d'état}}== | ||
+ | |||
+ | Modifions légèrement le comportement. Nous souhaitons désormais que l'état de la led change à chaque appui sur le bouton. On détecte non plus un état du bouton, mais un changement d'état de celui-ci. | ||
+ | |||
+ | Pour ce faire, il convient de remarquer que juste avant l'appui, la valeur lue sur l'entrée correspond au bouton est à l'état 0, et que dès l'appui la valeur passe à l'état 1. | ||
+ | |||
+ | Vous utiliserez 2 variables de type [http://arduino.cc/en/Reference/Char char] (par exemple etatPresent et etatPasse), qui permettront de détecter cette transition. | ||
+ | |||
+ | Le programme ressemblera donc à : | ||
+ | |||
+ | <source lang=c> | ||
+ | char etatPresent=0,etatPasse=0; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | ..... // configuration des e/s | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | etatPasse=...; | ||
+ | etatPresent=...; | ||
+ | |||
+ | // si appui alors .... | ||
+ | |||
+ | } | ||
+ | </source> | ||
+ | |||
+ | {{Question|Écrire le programme répondant au cahier des charges.}} | ||
+ | |||
+ | |||
=={{Vert|2 bps, 1 led}}== | =={{Vert|2 bps, 1 led}}== | ||
Version du 24 septembre 2013 à 15:35
Ce Tp va permettre d'introduire quelques éléments indispensables à la programmation d'une carte arduino, et surtout d'apprendre à se servir d'une documentation, en l'occurrence celle disponible sur le site arduino.
Il convient de bien comprendre qu'une carte arduino (et plus exactement toute carte utilisant un microcontrôleur) peut servir à faire de multiples tâches. On utilise nécessairement des extensions (shields) et nous devrons spécifier dans le programme la façon de "communiquer"/gérer cette carte. Physiquement, cette communication s'opère à travers de connexions dont le nombre dépend de la carte utilisée. Nous utiliserons une carte arduino UNO qui possède 3 connecteurs pour l'échange de données, numérotés de 0 à 13 et de A0 à A5, soit un total de 20 connexions.
Si nous nous considérons à la place de la carte arduino, chaque connexion peut être :
- une entrée/INPUT (mesure, observation). Par ex,
- capteur de température
- interrupteur
- mesure de tension
- microphone
- une sortie/OUTPUT (action). Par ex,
- résistance chauffante
- lampe, voyant lumineux
- haut parleur
Sommaire
Ex 1: Entrée, sortie ???
1 bp, 1 led
Commençons tout simplement par commander une sortie tout ou rien (2 états possibles) à l'aide d'un bouton poussoir.
On prendra la led R repérée p0, et le bouton poussoir repéré bp0.
On se servira des fonctions suivantes :
- pinMode() permettant de configurer les entrées et sorties(e/s).
- digitalWrite() permettant de modifier l'état d'une sortie.
- digitalRead() permettant de lire l'état d'une entrée.
Compléter le programme suivant pour que la led ne s'allume que si le bouton est appuyé.
void setup()
{
..... // configuration des e/s
}
void loop()
{
.....
}
Détection de changement d'état
Modifions légèrement le comportement. Nous souhaitons désormais que l'état de la led change à chaque appui sur le bouton. On détecte non plus un état du bouton, mais un changement d'état de celui-ci.
Pour ce faire, il convient de remarquer que juste avant l'appui, la valeur lue sur l'entrée correspond au bouton est à l'état 0, et que dès l'appui la valeur passe à l'état 1.
Vous utiliserez 2 variables de type char (par exemple etatPresent et etatPasse), qui permettront de détecter cette transition.
Le programme ressemblera donc à :
char etatPresent=0,etatPasse=0;
void setup()
{
..... // configuration des e/s
}
void loop()
{
etatPasse=...;
etatPresent=...;
// si appui alors ....
}
Écrire le programme répondant au cahier des charges.