.. note::
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés.
**Pourquoi rejoindre ?**
- **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe.
- **Apprendre et partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences.
- **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
- **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents.
- **Promotions festives et cadeaux** : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui !
.. _2.2.6_c_pi5:
2.2.6 Module de Capteur de Vitesse
======================================
Introduction
------------------
Dans ce projet, nous allons apprendre à utiliser le module de capteur de vitesse. Un module de capteur de vitesse est un type de tachymètre utilisé pour mesurer la vitesse d'un objet en rotation, comme un moteur.
Composants Nécessaires
------------------------------
Pour ce projet, nous avons besoin des composants suivants.
.. image:: ../img/2.2.6component.png
:width: 700
:align: center
Il est certainement pratique d'acheter un kit complet, voici le lien :
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nom
- ARTICLES DANS CE KIT
- LIEN
* - Kit Raphael
- 337
- |link_Raphael_kit|
Vous pouvez également les acheter séparément à partir des liens ci-dessous.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCTION DES COMPOSANTS
- LIEN D'ACHAT
* - :ref:`cpn_gpio_extension_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_led`
- |link_led_buy|
* - :ref:`cpn_speed_sensor`
- \-
Schéma de Circuit
-----------------------
.. image:: ../img/2.2.6circuit.png
:width: 400
:align: center
Procédures Expérimentales
------------------------------
**Étape 1 :** Construire le circuit.
.. image:: ../img/2.2.6fritzing.png
:width: 700
:align: center
**Étape 2 :** Changer de répertoire.
.. raw:: html
.. code-block::
cd ~/raphael-kit/c/2.2.6/
**Étape 3 :** Compiler.
.. raw:: html
.. code-block::
gcc 2.2.6_speed_sensor_module.c -lwiringPi
**Étape 4 :** Exécuter.
.. raw:: html
.. code-block::
sudo ./a.out
Après l'exécution du code, la LED verte s'allumera. Si vous placez un obstacle
dans l'espace du module de capteur de vitesse, le message "light blocked"
sera affiché à l'écran et la LED rouge s'allumera. Retirez l'obstacle et la LED verte s'allumera à nouveau.
.. note::
Si cela ne fonctionne pas après l'exécution, ou s'il y a un message d'erreur : "wiringPi.h: No such file or directory", veuillez vous référer à :ref:`install_wiringpi_pi5`.
**Code**
.. code-block:: c
#include
#include
#define speedPin 0
#define Gpin 2
#define Rpin 3
void LED(int color)
{
pinMode(Gpin, OUTPUT);
pinMode(Rpin, OUTPUT);
if (color == 0){
digitalWrite(Rpin, HIGH);
digitalWrite(Gpin, LOW);
}
else if (color == 1){
digitalWrite(Rpin, LOW);
digitalWrite(Gpin, HIGH);
}
}
void Print(int x){
if ( x == 0 ){
printf("Light was blocked\n");
}
}
int main(void){
if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
printf("setup wiringPi failed !");
return 1;
}
pinMode(speedPin, INPUT);
int temp;
while(1){
//Reverse the input of speedPin
if ( digitalRead(speedPin) == 0 ){
temp = 1;
}
if ( digitalRead(speedPin) == 1 ){
temp = 0;
}
LED(temp);
Print(temp);
}
return 0;
}
**Explication du Code**
.. code-block:: c
void LED(int color)
{
pinMode(Gpin, OUTPUT);
pinMode(Rpin, OUTPUT);
if (color == 0){
digitalWrite(Rpin, HIGH);
digitalWrite(Gpin, LOW);
}
else if (color == 1){
digitalWrite(Rpin, LOW);
digitalWrite(Gpin, HIGH);
}
}
Définissez une fonction ``LED()`` pour contrôler les 2 LED, le paramètre de cette fonction est ``color``.
Lorsque ``color`` est 0, définissez ``Rpin`` sur ``HIGH`` (allumer la LED rouge) et ``Gpin`` sur ``LOW`` (éteindre la LED verte); lorsque ``color`` est 1, allumez alors la LED verte et éteignez la LED rouge.
.. code-block:: c
while(1){
//Reverse the input of speedPin
if ( digitalRead(speedPin) == 0 ){
temp = 1;
}
if ( digitalRead(speedPin) == 1 ){
temp = 0;
}
LED(temp);
Print(temp);
}
Lorsque vous placez un obstacle dans l'espace du module de capteur de vitesse, ``speedPin`` est à un niveau bas (0), alors appelez la fonction ``LED(1)`` pour allumer la LED verte et "Light was blocked!" est affiché.
**Image du Phénomène**
-----------------------
.. image:: ../img/2.2.6photo_interrrupter.JPG
:width: 500
:align: center