Cours:ArduinoBoutons : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
({{Bleu|Ex 1: Entrée, sortie ???}})
m ({{Vert|Détection de changement d'état}})
Ligne 47 : Ligne 47 :
  
 
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.
 
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.
 +
 +
On utilisera également une variable etatSortie de type [http://arduino.cc/en/Reference/UnsignedChar unsigned char] pour mémoriser l'état de la sortie.
  
 
Le programme ressemblera donc à :
 
Le programme ressemblera donc à :
Ligne 52 : Ligne 54 :
 
<source lang=c>
 
<source lang=c>
 
char etatPresent=0,etatPasse=0;
 
char etatPresent=0,etatPasse=0;
 +
unsigned char etatSortie=0;
  
 
void setup()
 
void setup()
Ligne 69 : Ligne 72 :
  
 
{{Question|Écrire le programme répondant au cahier des charges.}}
 
{{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:42

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

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.

Question.jpg 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.

On utilisera également une variable etatSortie de type unsigned char pour mémoriser l'état de la sortie.

Le programme ressemblera donc à :

char etatPresent=0,etatPasse=0;
unsigned char etatSortie=0;

void setup()
{
     .....            // configuration des e/s
}

void loop()
{
   etatPasse=...;
   etatPresent=...;

   // si appui alors ....

}

Question.jpg Écrire le programme répondant au cahier des charges.

2 bps, 1 led

Ex 2: Système "industriel"

Ex 3: Game over !