.. note::
Bonjour et bienvenue dans la communauté SunFounder dédiée aux passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l'univers du Raspberry Pi, d'Arduino et d'ESP32 avec d'autres passionnés.
**Pourquoi nous rejoindre ?**
- **Support d'experts** : Résolvez vos problèmes après-vente et relevez des défis techniques avec l'aide de notre communauté et de notre équipe.
- **Apprendre & Partager** : Échangez des conseils et des tutoriels pour améliorer vos compétences.
- **Aperçus exclusifs** : Accédez en avant-première aux nouvelles annonces de produits et aux aperçus.
- **Réductions spéciales** : Profitez de remises exclusives sur nos nouveaux produits.
- **Promotions festives et cadeaux** : Participez à des tirages au sort et à des promotions spéciales pour les fêtes.
👉 Prêt(e) à explorer et à créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !
2.1.3 Interrupteur à bascule
===============================
Introduction
--------------
Il s'agit d'un interrupteur à bascule avec une bille métallique à l'intérieur.
Il est utilisé pour détecter les inclinaisons à faible angle.
Composants
--------------
.. image:: img/list_2.1.3_tilt_switch.png
Principe
-----------
**Interrupteur à bascule**
Le principe est très simple. Lorsque l'interrupteur est incliné selon un certain
angle, la bille à l'intérieur roule et touche les deux contacts reliés aux broches
extérieures, déclenchant ainsi les circuits. Sinon, la bille reste éloignée des
contacts, interrompant les circuits.
.. image:: img/image167.png
Schéma de câblage
---------------------
.. image:: img/image307.png
.. image:: img/image308.png
Procédures expérimentales
----------------------------
**Étape 1 :** Montez le circuit.
.. image:: img/image169.png
:width: 800
**Étape 2 :** Changez de répertoire.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/2.1.3/
**Étape 3 :** Compilez le code.
.. raw:: html
.. code-block::
gcc 2.1.3_Tilt.c -lwiringPi
**Étape 4 :** Exécutez le programme.
.. raw:: html
.. code-block::
sudo ./a.out
Placez l'interrupteur à l'horizontale, et la LED verte s'allumera. Si vous l'inclinez,
le message « Inclinaison ! » s'affichera à l'écran et la LED rouge s'allumera.
Remettez-le à l'horizontale, et la LED verte se rallumera.
.. note::
Si cela ne fonctionne pas après l'exécution, ou s'il y a un message
d'erreur indiquant : \"wiringPi.h: No such file or directory\", veuillez
consulter :ref:`faq_c_nowork`.
**Code**
.. code-block:: c
#include
#include
#define TiltPin 0
#define Gpin 2
#define Rpin 3
void LED(char* color)
{
pinMode(Gpin, OUTPUT);
pinMode(Rpin, OUTPUT);
if (color == "RED")
{
digitalWrite(Rpin, HIGH);
digitalWrite(Gpin, LOW);
}
else if (color == "GREEN")
{
digitalWrite(Rpin, LOW);
digitalWrite(Gpin, HIGH);
}
else
printf("LED Error");
}
int main(void)
{
if(wiringPiSetup() == -1){ // Si l'initialisation de wiringPi échoue, affichez un message à l'écran
printf("setup wiringPi failed !");
return 1;
}
pinMode(TiltPin, INPUT);
LED("GREEN");
while(1){
if(0 == digitalRead(TiltPin)){
delay(10);
if(0 == digitalRead(TiltPin)){
LED("RED");
printf("Tilt!\n");
delay(100);
}
}
else if(1 == digitalRead(TiltPin)){
delay(10);
if(1 == digitalRead(TiltPin)){
LED("GREEN");
}
}
}
return 0;
}
**Explication du code**
.. code-block:: c
void LED(char* color)
{
pinMode(Gpin, OUTPUT);
pinMode(Rpin, OUTPUT);
if (color == "RED")
{
digitalWrite(Rpin, HIGH);
digitalWrite(Gpin, LOW);
}
else if (color == "GREEN")
{
digitalWrite(Rpin, LOW);
digitalWrite(Gpin, HIGH);
}
else
printf("LED Error");
}
Définissez une fonction LED() pour allumer ou éteindre les deux LEDs. Si le
paramètre color est RED, la LED rouge s'allume ; de même, si le paramètre color
est GREEN, la LED verte s'allume.
.. code-block:: c
while(1){
if(0 == digitalRead(TiltPin)){
delay(10);
if(0 == digitalRead(TiltPin)){
LED("RED");
printf("Tilt!\n");
}
}
else if(1 == digitalRead(TiltPin)){
delay(10);
if(1 == digitalRead(TiltPin)){
LED("GREEN");
}
}
}
Si la valeur lue de l'interrupteur à bascule est 0, cela signifie que
l'interrupteur est incliné. Écrivez alors le paramètre « RED » dans la
fonction LED pour allumer la LED rouge ; sinon, la LED verte s'allume.