Note

Bonjour et bienvenue dans la communauté SunFounder dédiée aux passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez plus profondément dans l’univers du Raspberry Pi, Arduino et 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 perfectionner vos compétences.

  • Aperçus exclusifs : Bénéficiez d’un accès anticipé aux annonces de nouveaux produits et aux avant-premières.

  • Réductions spéciales : Profitez de remises exclusives sur nos derniers 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 [Ici] et rejoignez-nous dès aujourd’hui !

2.1.1 Bouton

Introduction

Dans cette leçon, nous allons apprendre à allumer ou éteindre une LED en utilisant un bouton.

Composants

../_images/list_2.1.1_Button1.png

Principe

Bouton

Le bouton est un composant courant utilisé pour contrôler des dispositifs électroniques. Il est généralement utilisé comme interrupteur pour connecter ou couper les circuits. Bien qu’il existe sous différentes formes et tailles, celui que nous utilisons ici est un mini-bouton de 6 mm comme montré ci-dessous.

Les deux broches de gauche sont connectées ensemble, et celles de droite le sont aussi, comme illustré ci-dessous :

../_images/image1481.png

Le symbole suivant est souvent utilisé pour représenter un bouton dans les circuits :

../_images/image3011.png

Lorsque le bouton est pressé, les 4 broches sont connectées, fermant ainsi le circuit.

Schéma de câblage

Utilisez un bouton normalement ouvert comme entrée pour le Raspberry Pi, le schéma de câblage est illustré ci-dessous. Lorsque le bouton est pressé, le GPIO18 passera à un niveau bas (0V). Nous pouvons détecter l’état du GPIO18 par programmation. Autrement dit, si le GPIO18 devient bas, cela signifie que le bouton est pressé. Vous pouvez exécuter le code correspondant lorsque le bouton est pressé, et ainsi la LED s’allumera.

Note

La broche la plus longue de la LED est l’anode, et la plus courte est la cathode.

../_images/image3021.png ../_images/image3031.png

Procédures expérimentales

Étape 1 : Montez le circuit.

../_images/image1521.png

Étape 2 : Ouvrez le fichier de code.

cd ~/davinci-kit-for-raspberry-pi/c/2.1.1/

Note

Changez de répertoire pour accéder au chemin du code de cette expérience via cd.

Étape 3 : Compilez le code.

gcc 2.1.1_Button.c -lwiringPi

Étape 4 : Exécutez le fichier exécutable.

sudo ./a.out

Après l’exécution du code, appuyez sur le bouton pour allumer la LED ; sinon, elle s’éteint.

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 Le code C ne fonctionne pas ?.

Code

#include <wiringPi.h>
#include <stdio.h>

#define LedPin      0
#define ButtonPin   1

int main(void){
    // En cas d'échec de l'initialisation de wiringPi, afficher un message à l'écran
    if(wiringPiSetup() == -1){
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(LedPin, OUTPUT);
    pinMode(ButtonPin, INPUT);
    digitalWrite(LedPin, HIGH);

    while(1){
        // Indiquer que le bouton est enfoncé
        if(digitalRead(ButtonPin) == 0){
            // Allumer la LED
            digitalWrite(LedPin, LOW);
        //  printf("...LED allumée\n");
        }
        else{
            // Éteindre la LED
            digitalWrite(LedPin, HIGH);
        //  printf("LED éteinte...\n");
        }
    }
    return 0;
}

Explication du code

#define LedPin      0

La broche GPIO17 sur la carte T_Extension est équivalente à GPIO0 dans wiringPi.

#define ButtonPin   1

ButtonPin est connecté à GPIO1.

pinMode(LedPin, OUTPUT);

Définit LedPin comme sortie pour lui attribuer une valeur.

pinMode(ButtonPin, INPUT);

Définit ButtonPin comme entrée pour lire sa valeur.

while(1){
        // Indiquer que le bouton est enfoncé
        if(digitalRead(ButtonPin) == 0){
            // Allumer la LED
            digitalWrite(LedPin, LOW);
        //  printf("...LED allumée\n");
        }
        else{
            // Éteindre la LED
            digitalWrite(LedPin, HIGH);
        //  printf("LED éteinte...\n");
        }
    }

if (digitalRead(ButtonPin) == 0): vérifier si le bouton a été enfoncé. Exécutez digitalWrite(LedPin, LOW) pour allumer la LED lorsque le bouton est pressé.