ARDX-Montages-CIRC07

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ce que nous faisons

.: Presser le bouton :.

.: Les boutons poussoirs :.

Jusqu'à maintenant, nous nous sommes entièrement concentrés sur la commande des sorties. Il est désormais temps qu'Arduino entende, regarde et sente.

Nous allons commencer avec un simple bouton poussoir. Il est facile de raccorder un bouton poussoir.

Il n'y a qu'un seul composant pouvant sembler hors de propos, c'est la résistance de rappel (dite aussi « résistance pull-up »).

Cette résistance est là parce qu'Arduino ne sent pas le monde de la même façon que nous (pour nous, le bouton est pressé ou n'est pas pressé). Arduino est sensible à la tension sur une broche et décide si elle est HIGH ou LOW.

Le bouton est raccordé pour mettre la broche d'Arduino à LOW lorsqu'il est pressé. Cependant, lorsqu'il est relâché, la tension sur la broche devient « flottante » , ce qui occasionne des erreurs de lectures.

Nous ajoutons une résistance de rappel (pull-up) pour qu'Arduino lise la tension HIGH sur la broche de façon fiable lorsque le bouton est relâché. (note: le premier programme d'exemple utilise seulement l'un des deux boutons).

Le montage

Le matériel nécessaire

ARDX-circ-sheet.png

Fiche de montage CIRC-07
x1

ARDX-pin-header.png

2 Pin header
x4

ARDX-push-button.png

Bouton poussoir
x2

ARDX-R560.png

Résistance de 560 Ohms (vert-bleu-brun)
x2

ARDX-R10K.png

Résistance de 10 K Ohms (brun-noir-orange)
x2

ARDX-LED-red.png

LED (ou DEL)
x1

 

Tous ces éléments sont disponibles dans le Kit Ardx proposé sur shop.mchobby.be.

Schéma

Circ07-schema.png

Montage

Cir07-montage.png

Le code

Pas besoin de taper tout le code, vous pouvez charger le programme d'exemple depuis:

  Fichier > Exemples > 2.Digital > Button

Un fantastique exemple du site Arduino.cc

/*
 * Button
 * by DojoDave <http://www.0j0.org>
 *
 * Allume et éteind une LED connectée sur la pin 13
 * lorsque l'on presse un bouton poussoir attaché à la pin 7.
 * http://www.arduino.cc/en/Tutorial/Button
 */
int ledPin = 13; // La broche choisie pour la LED
int inputPin = 2; // La broche d'entrée choisie pour le bouton poussoir
int val = 0; // variable pour lire le statut de la broche

void setup() {
  pinMode(ledPin, OUTPUT); // déclarer la LED comme sortie
  pinMode(inputPin, INPUT);// déclarer le bouton poussoir comme entrée
}

void loop(){
   val = digitalRead(inputPin); // Lire la valeur d'entrée
   if (val == HIGH) {
      // vérifier si l'entrée est HIGH (haut)
      digitalWrite(ledPin, LOW); // Eteindre la LED
   } 
   else {
      digitalWrite(ledPin, HIGH); // Allumer la LED
   }
}

Cela ne fonctionne pas?

Voici 3 choses à essayer.

La LED ne s'allume pas!

Le bouton poussoir est carré. Il est donc très facile de mal le placer.

Tournez le de 90 degrés et voyez si cela fonctionne mieux.

Le contrôle de luminosité ne fonctionne pas

C'est une simple erreur que nous faisons souvent.

Quand nous passons d'un mode allumé/éteint en mode « dimmer », il faut utiliser la pin 9.

PAs impressionné?

Ne vous inquiétez pas, tous ces circuits sont simplifiés au maximum pour faciliter la prise en main des composants.

Mais une fois combinés, la seule limite sera celle de votre imagination.

Faire encore mieux

Un bouton "allumer" et un autre "éteindre"

L'exemple initial est peut-être un peu décevant (Ai-je vraiment besoin d'un Arduino pour faire cela ?), alors rendons le un peu plus compliqué.

Soit utiliser un bouton pour allumer la LED et un autre pour l'éteindre.

Changez le code comme suit :

int ledPin = 13; // La broche/pin pour la LED
int inputPin1 = 3; // bouton 1
int inputPin2 = 2; // bouton 2

void setup(){
   pinMode(ledPin, OUTPUT);   // LED = sortie
   pinMode(inputPin1, INPUT); // Bouton 1 = entrée
   pinMode(inputPin2, INPUT); // Bouton 2 = entrée
}

void loop(){
   if (digitalRead(inputPin1) == LOW) {
      digitalWrite(ledPin, LOW); // Eteindre LED
   }
   else {
      digitalWrite(ledPin, HIGH); // Allumer LED
   }
}

Chargez le programme sur la carte et allumez/éteignez la LED avec les boutons.

= Contrôler la luminosité

Maintenant, utilisons les boutons pour contrôler un signal analogique. Pour y arriver, vous devez connecter la LED de la broche 13 à la broche 9 (PWM) mais aussi changer le code comme suit :

 int ledPin = 13;

vers...

 int ledPin = 9;

Et ensuite modifier la fonction loop() pour y lire.

int value = 0;

void loop(){
   if (digitalRead(inputPin1) == LOW){ 
      value--; 
   }
   else
      if (digitalRead(inputPin2) == LOW){ 
         value++; 
      }

   value = constrain(value, 0, 255);
   analogWrite(ledPin, value);
   delay(10);
}

Changer le vitesse d'extinction

Il y a seulement une ligne de code à changer si vous voulez que la LED s'éteigne plus ou moins rapidement :

 delay(10);

vers...

 delay(nouvelle_valeur);

Utiliser un nombre plus petit pour nouvelle_valeur afin d'éteindre plus rapidement ou un nombre plus grand pour une extinction plus lente.

Plus, plus et encore plus

Plus d'information, où poser vos autres questions:

ardx.org/CIRC07 (anglais)

Internet

.:téléchargement:.

LA fiche de montage est disponible sur ardx.org/BBLS07

.: Vidéo :.

La vidéo du montage est disponible sur ardx.org/VIDE07 (anglais)


Tutoriel/Manuel traduit par Meurisse D. pour MCHobby.be licence Creative Commons BY-SA.

Crédit de traduction
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (shop.MCHobby.be) - Vente de kit et composants » et ce quelque soit le média utilisé.

Utilisation commerciale
L'utilisation commercial de cette traduction (y compris sur site produisant des revenus par l'intermédiaire de publicité), même partielle, est soumise à redevance (license fee).


Le présent manuel a été traduit et autorisé à la vente avec l'aimable autorisation conjointe de Oomlout (www.oomlout.com) et d'AdaFruit (www.adafruit.com).

Produit sous licence Creative Commons BY-SA License and available for download: ardx.org/src/