Différences entre les pages « Item:BME280 » et « Chasse LED avec arduino »

 
 
Ligne 1 : Ligne 1 :
{{Item
+
{{Tuto Details
|Main_Picture=Item-BME280_Bmp280.jpg
+
|Main_Picture=Chasse_LED_avec_arduino_250px-Vatx_proto_0_2.jpg
|Description=Il s'agit d'un capteur de pression, de température et d'humidité
+
|Licences=Attribution (CC-BY)
|Categories=Matériel, Parts
+
|Description=Chasse LED
|Cost=2
+
|Disciplines scientifiques=Electricity
|Currency=EUR (€)
+
|Difficulty=Technical
|ItemLongDescription=Il doit être alimenté en 3V3.
+
|Duration=50
 +
|Duration-type=minute(s)
 +
}}
 +
{{Introduction
 +
|Introduction=D'horribles LED nous envahissent ! L'heure est venue de les éliminer, mais il faut d'abord s’entraîner. Fabriquons donc un simulateur à base de LED pour préparer la guerre finale...
 +
}}
 +
{{Materials
 +
|ItemList={{ItemList
 +
|Item=Logiciel Arduino
 +
}}{{ItemList
 +
|Item=Fil électrique
 +
}}{{ItemList
 +
|Item=Led
 +
}}{{ItemList
 +
|Item=Platine de Prototypage
 +
}}{{ItemList
 +
|Item=Arduino Uno
 +
}}
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Réaliser
 +
|Step_Content=* Réaliser le montage en suivant la vidéo/le schéma.
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Lancer
 +
|Step_Content=* Lancer le logiciel Arduino.
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Copier
 +
|Step_Content=Copier/coller le code suivant dans le programme permettant d'utiliser Arduino :
  
Pour l'utiliser, nous installons sur Arduino la bibliothèque Grove BME280 ou alors la Grove BMP280 (cela dépend du modèle de capteur, la référence n'étant pas toujours spécifiée).
+
// Ce programme sert à faire le chasse-led
 
+
int led[4]={8,9,10,11};              //Déclaration des pattes des leds
<br />
+
int bp[4]={2,3,4,5};                //Déclaration des pattes des boutons poussoirs
 
+
//Déclaration et initialisation des variables globales servant pour la suite du code
== Caracteristiques ==
+
int initLed = 0;       
 
+
int i;
* alimentation maxi : 3,6V
+
int randnumber ;
* mesure de la température de -40°C à 85°C avec une précision de +/- 1°C
+
int tirage = 0;
* mesure de la pression de 300hPa à 1100 hPa avec une précision de +/- 1hPa (de 0°C à 65°C) ou +/- 1hPa (de -40°C à 0°C)
+
int compteur;
* mesure d’humidité relative de 0% à 100%
+
int score;
 
+
void setup(){                        //Fonction permettant d'initialiser le matériel (leds et boutons poussoir)
<br />
+
  Serial.begin(9600);                //Indique que Arduino se situe sur le port usb 9600
==Bibliothèque : ==
+
  for(i=0;i<4;i++){                  //Boucle parcourant toutes les variables de 0 à 3
Pour utiliser facilement ce capteur, nous vous conseillons d'utiliser la bibliothèque Grove BME280 (présente dans le gestionnaire de bibliothèques arduino)
+
      pinMode(bp[i], INPUT);        //Indique que le bouton poussoir est une entrée
 
+
      pinMode(led[i],OUTPUT);      //Indique que les leds sont des sorties
plus d'infos pour [[Importer des bibliothèques dans l'interface Arduino]]{{#annotatedImageLight:Fichier:Item-BME280 Capture decran du 2020-12-11 14-37-37.png|0=828px|hash=|jsondata=|mediaClass=Image|type=frameless|align=center|src=https://www.wikidebrouillard.org/images/9/94/Item-BME280_Capture_decran_du_2020-12-11_14-37-37.png|href=./Fichier:Item-BME280 Capture decran du 2020-12-11 14-37-37.png|resource=./Fichier:Item-BME280 Capture decran du 2020-12-11 14-37-37.png|caption=|size=828px}}La bibliothèque est disponible ici : https://github.com/Seeed-Studio/Grove_BME280
+
      digitalWrite(led[i],LOW);    //On met les leds au niveau bas (elles sont eteintes au depart)
 
+
      digitalWrite(bp[i],HIGH);    //On met les boutons poussoirs au niveau haut
==Câblage : ==
+
}
{{#annotatedImageLight:Fichier:Item-BME280 Capture decran du 2020-12-11 14-42-46.png|0=937px|hash=|jsondata=|mediaClass=Image|type=frameless|align=center|src=https://www.wikidebrouillard.org/images/3/33/Item-BME280_Capture_decran_du_2020-12-11_14-42-46.png|href=./Fichier:Item-BME280 Capture decran du 2020-12-11 14-42-46.png|resource=./Fichier:Item-BME280 Capture decran du 2020-12-11 14-42-46.png|caption=|size=937px}}<br />
+
  compteur=0;                        //Initialisation du compteur à 0
 
+
}
==Le code minimal : ==
+
void loop(){
{| class="wikitable" cellspacing="0" border="0"
+
    if (initLed == 0)  {                     //Premier passage dans la fonction loop
| height="17" bgcolor="#999999" align="left" |
+
      randnumber=random(0,4);               //Déclaration d'un premier nombre aléatoire de 0 à 3
| valign="middle" bgcolor="#999999" align="center" |
+
      digitalWrite(led[randnumber],HIGH);   //Met la led correspondant au numéro aléatoire au niveau haut
| bgcolor="#999999" align="center" |BME280
+
      Serial.println("valeur aleatoire:"); //Affiche "valeur aléatoire :" dans le terminal
|-
+
      Serial.println(randnumber,DEC);      //Affiche dans le terminal le numéro aleatoire
| rowspan="2" valign="middle" height="49" bgcolor="#999999" align="center" |Avant le Setup
+
      compteur = compteur + 1;              //incrémentation du compteur
| valign="middle" bgcolor="#999999" align="center" |Importation de la bibliothèque
+
      initLed =1;                          //Indique que le programme est déjà lancé pour ne plus aller dans ce test
| valign="middle" align="left" |#include "Seeed_BME280.h"
+
      tirage = 1;                           //Permet d'aller au test suivant
<nowiki>#</nowiki>include <Wire.h>
+
      delay(500);                           //Attente d'une demi seconde (500 = 500ms)
|-
 
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet
 
| valign="middle" align="left" |BME280 bme280; // je crée l'objet "bme280" (qui est un BME280)
 
|-
 
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
 
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet
 
| valign="middle" align="left" |bme280.init(); // ou bme280.init(0x76); ou bme280.init(0x77);
 
|-
 
| valign="middle" height="41" bgcolor="#999999" align="center" |Dans le Loop
 
| valign="middle" bgcolor="#999999" align="center" |Utilisation
 
| valign="middle" align="left" |bme280.getTemperature()
 
|}
 
 
 
==Exemple : ==
 
<syntaxhighlight lang="arduino" line="1" start="1">
 
#include "Seeed_BMP280.h" // import de la bibliothèque BMP280
 
#include <Wire.h> // Import de la bibliothèque I2C
 
BMP280 bmp280; // création de l'objet
 
void setup()
 
{
 
Serial.begin(9600); //initialisation de la liaison série
 
bmp280.init(); //initialisation du capteur
 
 
}
 
}
void loop()
+
  if (tirage == 1 ){                            //Deuxième test valide si on a passé le premier test
{
+
      if(digitalRead(bp[randnumber])==LOW){     //Regarde si le bouton poussoir associé a la led est active
float temp = bmp280.getTemperature(); //récupération de la température
+
          Serial.println("valeur du compteur:"); //Affiche "valeur du compteur :" dans le terminal
Serial.print("Température : "); // affichage de la température dans le terminal série
+
          Serial.println(compteur,DEC);          //Affiche la valeur du compteur dans le terminal
Serial.println(temp);
+
          digitalWrite(led[randnumber],LOW);    //Éteint la led quand on a appuyé sur le bp (bp=bouton poussoir)
 +
          randnumber=random(4);                  //Cherche un autre nombre aléatoire
 +
          digitalWrite(led[randnumber],HIGH);   //Allume la led correspondant a ce nouveau nombre
 +
          compteur = compteur + 1;              //Incrémente le compteur
 +
          Serial.println("valeur aleatoire:");   //Affiche "valeur aléatoire :" dans le terminal
 +
          Serial.println(randnumber,DEC);        //Affiche dans le terminal le numero aleatoire
 +
          delay(500);                           //Attente d'une demi seconde
 
}
 
}
</syntaxhighlight>
+
      else { if ( digitalRead(bp[(randnumber+1)%4])==LOW
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Brancher
 +
|Step_Content=* Brancher l'Arduino sur un port USB de l'ordinateur.
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Cliquer
 +
|Step_Content=* Cliquer sur l'image représentant une sorte de v, puis sur l'image
 +
représentant une flèche (le programme sera mis dans l'Arduino).
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Resultat
 +
|Step_Content=Attendre la fin du transfert.
 +
}}
 +
{{Notes
 +
|Observations=Appuyer, sans se tromper, sur le bouton associé à chaque Del. Dès qu'une erreur est commise, le jeu s'arrête et le score s'affiche. Chaque Del correspond à un palier. Celle de gauche signifie que vous êtes un champion de la ligue Pokémon, celle du milieu gauche un champion de l’arène de Cramois'ile, celle du milieu droit un champion d'Azuria, et celle de droite que vous quittez Bourg-palette.
 +
|Avertissement=Se tromper dans les codages
 +
|Explanations==== '''De manière simple''' ===
 +
Les Leds s'allument de manière aléatoire de plus en plus vite. À chaque pression sur un bouton poussoir se produit l'événement suivant : soit ce bouton correspond à la bonne led et le jeu continue, soit ce bouton ne correspond pas à la bonne Led, le jeu s’arrête et le score s'affiche à l'aide des leds.
 +
|Deepen==== '''Allons plus loin dans l'explication''' ===
 +
L'Arduino est un microprocesseur dont les instructions sont codées dans un langage proche du C. Plus d'info sur l'article Wikipédia [http://wikipedia.org/wiki/langage_C Langage C].
  
==Autres fonctionnalités : ==
+
En C, on déclare le type des variables avant de les utiliser : ici les int correspondent à des nombres entiers (1,2,3...), et le void correspond à une fonction non typée. Le const devant un type signifie que l'objet  manipulé ne peut pas être modifié
{{#annotatedImageLight:Fichier:Item-BME280 Capture decran du 2020-12-11 14-52-51.png|0=831px|hash=|jsondata=|mediaClass=Image|type=frameless|align=center|src=https://www.wikidebrouillard.org/images/0/01/Item-BME280_Capture_decran_du_2020-12-11_14-52-51.png|href=./Fichier:Item-BME280 Capture decran du 2020-12-11 14-52-51.png|resource=./Fichier:Item-BME280 Capture decran du 2020-12-11 14-52-51.png|caption=|size=831px}}<br /><br />
 
 
}}
 
}}
 
{{Tuto Status
 
{{Tuto Status
 
|Complete=Published
 
|Complete=Published
 
}}
 
}}
 +
{{Separator}}

Version du 12 décembre 2020 à 11:30

Auteur avatarTess | Dernière modification 12/12/2020 par Antonydbzh

Chasse LED avec arduino 250px-Vatx proto 0 2.jpg

Introduction

D'horribles LED nous envahissent ! L'heure est venue de les éliminer, mais il faut d'abord s’entraîner. Fabriquons donc un simulateur à base de LED pour préparer la guerre finale...

Étape 1 - Réaliser

  • Réaliser le montage en suivant la vidéo/le schéma.

Étape 2 - Lancer

  • Lancer le logiciel Arduino.

Étape 3 - Copier

Copier/coller le code suivant dans le programme permettant d'utiliser Arduino :

// Ce programme sert à faire le chasse-led int led[4]={8,9,10,11}; //Déclaration des pattes des leds int bp[4]={2,3,4,5}; //Déclaration des pattes des boutons poussoirs //Déclaration et initialisation des variables globales servant pour la suite du code int initLed = 0; int i; int randnumber ; int tirage = 0; int compteur; int score; void setup(){ //Fonction permettant d'initialiser le matériel (leds et boutons poussoir)

 Serial.begin(9600);                //Indique que Arduino se situe sur le port usb 9600
 for(i=0;i<4;i++){                  //Boucle parcourant toutes les variables de 0 à 3
      pinMode(bp[i], INPUT);        //Indique que le bouton poussoir est une entrée
      pinMode(led[i],OUTPUT);       //Indique que les leds sont des sorties
      digitalWrite(led[i],LOW);     //On met les leds au niveau bas (elles sont eteintes au depart)
      digitalWrite(bp[i],HIGH);     //On met les boutons poussoirs au niveau haut

}

 compteur=0;                        //Initialisation du compteur à 0

} void loop(){

   if (initLed == 0)  {                     //Premier passage dans la fonction loop
      randnumber=random(0,4);               //Déclaration d'un premier nombre aléatoire de 0 à 3
      digitalWrite(led[randnumber],HIGH);   //Met la led correspondant au numéro aléatoire au niveau haut
      Serial.println("valeur aleatoire:");  //Affiche "valeur aléatoire :" dans le terminal
      Serial.println(randnumber,DEC);       //Affiche dans le terminal le numéro aleatoire
      compteur = compteur + 1;              //incrémentation du compteur
      initLed =1;                           //Indique que le programme est déjà lancé pour ne plus aller dans ce test
      tirage = 1;                           //Permet d'aller au test suivant
      delay(500);                           //Attente d'une demi seconde (500 = 500ms)

}

 if (tirage == 1 ){                             //Deuxième test valide si on a passé le premier test
     if(digitalRead(bp[randnumber])==LOW){      //Regarde si le bouton poussoir associé a la led est active
         Serial.println("valeur du compteur:"); //Affiche "valeur du compteur :" dans le terminal
         Serial.println(compteur,DEC);          //Affiche la valeur du compteur dans le terminal
         digitalWrite(led[randnumber],LOW);     //Éteint la led quand on a appuyé sur le bp (bp=bouton poussoir)
         randnumber=random(4);                  //Cherche un autre nombre aléatoire
         digitalWrite(led[randnumber],HIGH);    //Allume la led correspondant a ce nouveau nombre
         compteur = compteur + 1;               //Incrémente le compteur
         Serial.println("valeur aleatoire:");   //Affiche "valeur aléatoire :" dans le terminal
         Serial.println(randnumber,DEC);        //Affiche dans le terminal le numero aleatoire
         delay(500);                            //Attente d'une demi seconde

}

     else { if ( digitalRead(bp[(randnumber+1)%4])==LOW

Étape 4 - Brancher

  • Brancher l'Arduino sur un port USB de l'ordinateur.

Étape 5 - Cliquer

  • Cliquer sur l'image représentant une sorte de v, puis sur l'image

représentant une flèche (le programme sera mis dans l'Arduino).

Étape 6 - Resultat

Attendre la fin du transfert.

Comment ça marche ?

Observations : que voit-on ?

Appuyer, sans se tromper, sur le bouton associé à chaque Del. Dès qu'une erreur est commise, le jeu s'arrête et le score s'affiche. Chaque Del correspond à un palier. Celle de gauche signifie que vous êtes un champion de la ligue Pokémon, celle du milieu gauche un champion de l’arène de Cramois'ile, celle du milieu droit un champion d'Azuria, et celle de droite que vous quittez Bourg-palette.

Mise en garde : qu'est-ce qui pourrait faire rater l'expérience ?

Se tromper dans les codages

Explications

De manière simple

Les Leds s'allument de manière aléatoire de plus en plus vite. À chaque pression sur un bouton poussoir se produit l'événement suivant : soit ce bouton correspond à la bonne led et le jeu continue, soit ce bouton ne correspond pas à la bonne Led, le jeu s’arrête et le score s'affiche à l'aide des leds.

Plus d'explications

Allons plus loin dans l'explication

L'Arduino est un microprocesseur dont les instructions sont codées dans un langage proche du C. Plus d'info sur l'article Wikipédia Langage C.

En C, on déclare le type des variables avant de les utiliser : ici les int correspondent à des nombres entiers (1,2,3...), et le void correspond à une fonction non typée. Le const devant un type signifie que l'objet manipulé ne peut pas être modifié


Dernière modification 12/12/2020 par user:Antonydbzh.

Commentaires

Published