Montage

button

Pour le réaliser, vous aurez besoin de :

  • Un Arduino
  • Un câble USB
  • Deux résitances de 1KΩ
  • Des fils de prototypage
  • Une platine de prototypage
  • Un bouton poussoir
  • Une LED de votre couleur préférée

 

Code

Cette suite d'instructions va allumer une LED branchée sur la broche 13 lorsque le bouton branché sur la broche 2 est appuyé. Lorsque vous utilisez le logiciel Arduino, le code peut être trouvé en cliquant sur Fichier→Exemples→02.Digital→Button.

/*
  Bouton
 
 Allume une LED branchée sur la broche 13 lorsque le bouton
 branché sur la broche 2 est appuyé.
 */

// Initialisation des constantes :
const int buttonPin = 2;     // Numéro de la broche à laquelle est connecté le bouton poussoir
const int ledPin =  13;      // Numéro de la broche à laquelle est connectée la LED

// Déclaration des variables :
int buttonState = 0;         // variable qui sera utilisée pour stocker l'état du bouton

// le code dans cette fonction est exécuté une fois au début
void setup() {
  // indique que la broche ledPin est une sortie :
  pinMode(ledPin, OUTPUT);      
  // indique que la broche ledPin est une entrée :
  pinMode(buttonPin, INPUT);     
}

// le code dans cette fonction est exécuté en boucle
void loop(){
  // lit l'état du bouton et stocke le résultat
  // dans buttonState :   buttonState = digitalRead(buttonPin);   // Si buttonState est à 5V (HIGH→bouton appuyé)   if (buttonState == HIGH) {     // on allume la LED     digitalWrite(ledPin, HIGH);   }    else {     // sinon on éteint     digitalWrite(ledPin, LOW);   } }

Remarques : Copiez-collez ce code dans le simulateur pour ne pas avoir à tout retaper. Saviez vous que vous pouvez accéder à la documentation d'une fonction en cliquant avec le bouton droit sur celle-ci puis en cliquant sur Trouvez dans la référence.

 

Instructions

Voici une description des nouvelles fonctions utilisées (n'hésitez pas à cliquer sur les liens ci-dessous afin d'arriver sur la référence Arduino).

  • Déclaration d'une constante : comme pour une variable, on vient avec cette ligne stocker la valeur à droite du signe égal dans led.
const int led = 13;

Le mot clé const indique que l'on ne souhiate pas que la valeur de led puisse être modifiée dans le programme.

  • Les nouvelles instructions :
  • digitalRead lit l'état d'une broche et renvoie la valeur HIGH si la broche est à la tension de l'alimentation ou LOW si la broche est à 0V.
digitalRead(buttonPin);
La valeur de retour de digitalRead peut être stockée dans une variable comme ceci :
buttonState = digitalRead(buttonPin);
  • if permet de tester si une expression située entre parenthèse est vraie. Dans Button, nous cherchons à savoir si le bouton est appuyé, nous allons donc comparer buttonState à HIGH comme ceci :
if(buttonState == HIGH)
  • else : le bloc situé après cet mot clé viendra être executé si le test précédent échoue. Dans Button, si le bouton n'est pas appuyé alors on viendra éteindre la LED.

Références

 

Le programme blink est composée d'une suite d'instructions qui va faire clignoter toutes les secondes une LED branchée sur la broche 13 de l'Arduino. Lorsque vous utilisez le logiciel Arduino, il peut être trouvé en cliquant sur Fichier→Exemples→01.Basics→Blink.

/*
  Clignotement
  Allume la LED pendant 1 seconde,
  puis l'éteint pendant 1 seconde.
*/
 
// Numéro de la broche à laquelle est
// connectée la LED
int led = 13;
 
// le code dans cette fonction est exécuté une fois au début
void setup() {
  // indique que la broche de la LED une sortie :
  // on va modifier sa tension
  pinMode(led, OUTPUT);
}
 
// le code dans cette fonction est exécuté en boucle
void loop() {
  digitalWrite(led, HIGH);   // allumer la LED (tension 5V sur la broche)
  delay(1000);               // attendre 1000ms = 1s
  digitalWrite(led, LOW);    // éteindre la LED (tension 0V sur la broche)
  delay(1000);               // attendre à nouveau 1seconde
}

Instructions

Dans ce programme, nous avons :

  • Des commentaires : qui sont des lignes de texte incluses dans le programme et qui ont pour but de vous aider à comprendre (ou à vous rappeler) comment votre programme fonctionne ou d'en informer les autres. Ces lignes ne sont pas envoyés à Arduino. Il y a deux façons de créer des lignes de commentaires :
/*
  Voici des  
  commentaires sur
  plusieurs ligne
*/
// Ceci est également un commentaire
  • Des instructions :

  • Déclaration d'une variable : on vient avec cette ligne stocker la valeur à droite du signe égal dans la variable à gauche du signe égal.
int led = 13;

Dans notre cas, cela signifie que la variable appelée led qui sera un nombre (puisque elle est précédée du mot clé int) viendra prendre la valeur 13.

  • Les blocs d'instructions : setup regroupe toutes les instructions qui seront exécutées au démarrage du programme. La fonction setup n'est exécutée qu'une seule fois, après chaque mise sous tension ou reset (réinitialisation) de la carte Arduino. loop (boucle en anglais) contient les instructions que l'on souhaite voir exécutées encore et encore tant que l'Arduino est branché.
void setup() { }
void loop() { }
  • Les fonctions : sont des instructions qui permettent d'exécuter une ou plusieurs actions. Les fonctions sont définies avec :
    • Un nom : ce qu'on devra taper pour appeler la fonction.
    • Une ou des entrées : ce sont des variables passées à la fonction appelées paramètresou arguments. Ces arguments sont placés entre parenthèses.
    • Une sortie : le résultat de la fonction qui peut être stocké dans une variable.

Prenons l'exemple de la fonction suivante :

digitalWrite(led, HIGH);
Dans ce cas, le nom de la fonction est digitalWrite. Nous passons deux paramètres à la fonction : led et HIGH. La fonction digitalWrite n'a pas de sortie. Avec cette fonction, nous allumons la broche située sur la broche passée avec le premier paramètre (qui peut être un nombre ou une variable). Lorsque le second arguement est placé à HIGH, on vient allumer la LED. Tandis qu'on éteindra la LED si le second argument passé est LOW.

Les autres fonctions présentes dans le programme Blink sont :

  • pinMode configure la broche spécifiée dans le premier paramètre pour qu'elle se comporte soit en entrée (INPUT), soit en sortie (OUTPUT) passée avec le second paramètre :
pinMode(led, OUTPUT);
  • delay fait une pause dans l'exécution du programme pour la durée (en millisecondes) passée en paramètre :
    delay(1000);

classe : PotentLineaire

package
{
import com.richard_gauthier.potentiometre.PotentLineaire;
import flash.display.Sprite;
/**
* ...
* @author Richard GAUTHIER
*/
   public class Main extends Sprite
   {
      //Créer l'objet potentiomètre
      private var potentiometre : PotentLineaire = new PotentLineaire(0, 200, 40);

      public function Main()
      {
         //positionner l'objet sur la scène
         potentiometre.x = 40;
         potentiometre.y = 20;

         //mettre l'objet sur la scène
         addChild(potentiometre);

         //créer un écouteur qui appellera la fonction chgValeur
         potentiometre.dispatcher.add(chgValeur);

      }

      //la fonction chgValeur du potentiomètre
      private function chgValeur(valeur : Number):void
      {
         //affiche la valeur dans la fenêtre output
         trace(valeur);
      }

   }

}

 Sysml de classe

classe : NiveauBatterie

package
{
import com.richard_gauthier.NiveauBatterie.NiveauBatterie;
import com.richard_gauthier.potentiometre.PotentLineaire;
import flash.display.Sprite;
/**
* ...
* @author Richard GAUTHIER
*/
public class vision extends Sprite
{
//Créer l'objet potentiometre
private var potentiometre : PotentLineaire = new PotentLineaire(0, 100, 40);

//Créer l'objet NiveauBatterie
private var niveauBatterie : NiveauBatterie = new NiveauBatterie(100 , 40);

public function vision()
{
//positionner l'objet sur la scène
potentiometre.x = 40;
potentiometre.y = 80;

//mettre l'objet sur la scène
addChild(potentiometre);

//créer un écouteur qui appellera la fonction chgValeur
potentiometre.dispatcher.add(chgValeur);

//positionner l'objet sur la scène
niveauBatterie.x = 40;
niveauBatterie.y = 20;

//modifie la valeur de la batterie
//s'exprime eb pourcentage
niveauBatterie.setValue(potentiometre.valeurPotentiometre());

//mettre l'objet sur la scène
addChild(niveauBatterie);

}

//la fonction chgValeur du potentiometre
private function chgValeur(valeur : Number):void
{
//affiche la valeur dans la fenêtre output
trace(valeur);

//modifie la valeur de la batterie
niveauBatterie.setValue(valeur);

}

}

}

 
 Sysml
 

classe : CompteurAiguille

package
{
   import com.richard_gauthier.CompteurAiguille.CompteurAiguille;
   import com.richard_gauthier.CompteurAiguille.CompteurAiguilleVide;
   import com.richard_gauthier.NiveauBatterie.NiveauBatterie;
   import com.richard_gauthier.potentiometre.PotentLineaire;
   import flash.display.Sprite;
/**
* @author Richard GAUTHIER
* Professeur en STI2D
* Lycée Paul Sérusier
* 29270 CARHAIX
*/
   public class vision extends Sprite
   {
      //Créer l'objet potentiometre
      private var potentiometre : PotentLineaire = new   PotentLineaire(0, 100, 40);

      //Créer l'objet compteur
      private var compteur : CompteurAiguille = new CompteurAiguille("Capteur","V",0,200);

      public function vision()
      {
         //positionne l'objet sur la scène
         compteur.x = 0;
         compteur.y = 0;

         //modifie la valeur de l'objet
         chgValeur(potentiometre.valeurPotentiometre());

         //met l'objet sur la scène
         addChild(compteur);

         //positionne l'objet sur la scène
         potentiometre.x = compteur.width / 2 -          potentiometre.width/2;
         potentiometre.y = compteur.height;

         //mettre l'objet sur la scène
         addChild(potentiometre);

         //creer un ecouteur qui appelera la fonction chgValeur
         potentiometre.dispatcher.add(chgValeur);

         
      }

      //la fonction chgValeur du potentiometre
      private function chgValeur(valeur : Number):void
      {

         var calcul : Number;

         //equation du capteur
         calcul = valeur * 2;

         //affiche la valeur dans la fenêtre output
         trace(calcul);

         //modifie la valeur de la batterie
         compteur.setValue(calcul);

      }

   }

}

 

 
  

package
{
import com.richard_gauthier.AfficheurLCD.AfficheurLCD;
import com.richard_gauthier.BoutonOnOff.BoutonOnOff;
import com.richard_gauthier.CompteurAiguille.CompteurAiguille;
import com.richard_gauthier.CompteurLCD.CompteurLCD;
import com.richard_gauthier.ExtendsClass.ExtendsClass;
import com.richard_gauthier.JaugeAiguille.JaugeAiguille;
import com.richard_gauthier.JaugeHorizontale.JaugeHorizontale;
import com.richard_gauthier.potentiometre.PotentLineaire;
import com.richard_gauthier.texte.Label;
import com.richard_gauthier.Voyant.Voyant;
import flash.events.MouseEvent;

/**
* ...
* @author Richard GAUTHIER
*/
public class IHM extends ExtendsClass
{

private var boutonOnOff : BoutonOnOff = new BoutonOnOff("DO2");

private var jauge : JaugeHorizontale = new JaugeHorizontale("Le Titre","Unité",0,100);

private var jaugeAiguille : JaugeAiguille = new JaugeAiguille("Le Titre","Unité",0,100);

private var montexte : Label = new Label();

private var afficheurLCD : AfficheurLCD = new AfficheurLCD("Le Titre","Unité");

private var compteur : CompteurLCD = new CompteurLCD("Compteur 1","Unité",0xffff00);

private var voyant1 : Voyant = new Voyant("Voyant 1",0xffff00);

private var compteurAiguille : CompteurAiguille = new CompteurAiguille("Compt Aigui","Unité",0,200,0x00ffff);

private var potentiometre :PotentLineaire = new PotentLineaire(0, 100, 20);

public function IHM()
{
titre.setTitre("IHM STI2D");
titre.btRetourVisible(false);
titre.redessineBarre(800, 60);


boutonOnOff.x = 20;
boutonOnOff.y = titre.height + 10;
boutonOnOff.addEventListener(MouseEvent.CLICK, cliqueOnOff);
addChild(boutonOnOff);

voyant1.x = boutonOnOff.width + 20;
voyant1.y = titre.height + 10;
addChild(voyant1);

jauge.y = boutonOnOff.y + boutonOnOff.height + 20;
addChild(jauge);


jaugeAiguille.y = jauge.y + jauge.height + 20;
addChild(jaugeAiguille);

montexte.y = jaugeAiguille.y + jaugeAiguille.height + 20;
addChild(montexte);

afficheurLCD.y = titre.height + 10;
afficheurLCD.x = jauge.x+jauge.width;
addChild(afficheurLCD);

compteur.y = afficheurLCD.y + afficheurLCD.height-20;
compteur.x = largeurEcran - compteur.width;
addChild(compteur);

compteurAiguille.y = afficheurLCD.y + afficheurLCD.height+100;
compteurAiguille.x = jaugeAiguille.width +20;
compteurAiguille.scaleX = 0.8;
compteurAiguille.scaleY = 0.8;

addChild(compteurAiguille);

potentiometre.y = hauteurEcran - potentiometre.height;
potentiometre.x = largeurEcran/2 -potentiometre.width/2
addChild(potentiometre);
potentiometre.dispatcher.add(chgValeur);



chgValeur(potentiometre.getValue());
}

private function cliqueOnOff(e:MouseEvent):void
{
voyant1.setValue(boutonOnOff.getValue());
}

private function chgValeur(valeurPoten:Number):void
{
jauge.setValue(valeurPoten);

jaugeAiguille.setValue(valeurPoten);

montexte.setText("" + valeurPoten + " Unité");

afficheurLCD.setValue(valeurPoten);

compteur.setValue(valeurPoten);

compteurAiguille.setValue(valeurPoten);
}

}

}

 

 


Logo Lycée Paul Sérusier

J'enseigne au
Lycée Paul SERUSIER
Avenue de Waldkappel
29270 CARHAIX PLOUGUER
Tél : 02 98 99 29 29
Site : www.lycee-serusier.fr

footer2

Richard GAUTHIER
Professeur de Physique Appliquée
Certification ISN
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

 

 


Mentions légales


Plan du site

  Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.