Cours:ArduinoBoutons : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
({{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

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.

Le programme ressemblera donc à :

char etatPresent=0,etatPasse=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 !