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 [Ici] et rejoignez-nous aujourd’hui !

1.1.5 Afficheur 7 segments à 4 chiffres

Introduction

Ensuite, suivez-moi pour essayer de contrôler l’afficheur 7 segments à 4 chiffres.

Composants nécessaires

Pour ce projet, nous avons besoin des composants suivants.

../_images/list_4_digit1.png

Il est très pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément aux liens ci-dessous.

INTRODUCTION AUX COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

Affichage à 7 segments 4 chiffres

-

74HC595

ACHETER

Note

Dans ce projet, pour l’afficheur 7 segments à 4 chiffres, nous devons utiliser le modèle BS. Si vous utilisez le modèle AS, il se peut qu’il ne s’allume pas.

Schéma de câblage

../_images/schmatic_4_digit1.png

Procédures expérimentales

Étape 1 : Construire le circuit.

../_images/image801.png

Étape 2 : Aller dans le dossier du code.

cd ~/raphael-kit/nodejs/

Étape 3 : Exécuter le code.

sudo node 4_digit_7_segment_display.js

Après l’exécution du code, le programme effectue un comptage, augmentant de 1 par seconde, et l’afficheur 7 segments à 4 chiffres affiche le comptage.

Code

const Gpio = require('pigpio').Gpio;

var counter = 0;

const number = [0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90]; //for BS

const SDI = new Gpio(24, { mode: Gpio.OUTPUT });
const RCLK = new Gpio(23, { mode: Gpio.OUTPUT });
const SRCLK = new Gpio(18, { mode: Gpio.OUTPUT });

const pin1 = new Gpio(10, { mode: Gpio.OUTPUT });
const pin2 = new Gpio(22, { mode: Gpio.OUTPUT });
const pin3 = new Gpio(27, { mode: Gpio.OUTPUT });
const pin4 = new Gpio(17, { mode: Gpio.OUTPUT });
const placePin = [pin1, pin2, pin3, pin4];

function clearDisplay() {
    hc595_shift(0xff); //for BS
}

function hc595_shift(dat) {
    for (let j = 0; j < 8; j++) {
        let code = 0x80 & (dat << j);
        if (code != 0) {
            code = 1;
        }
        SDI.digitalWrite(code);
        SRCLK.trigger(1,1);
    }
    RCLK.trigger(1,1);
}

function pickDigit(digit) {
    for(let i=0;i<4;i++){
        placePin[i].digitalWrite(0);
    }
    placePin[digit].digitalWrite(1);
}


let digit = -1
setInterval(() => {
    digit = (digit +1)% 4
    clearDisplay();
    pickDigit(digit);
    switch(digit){
        case 0:
            hc595_shift(number[Math.floor(counter % 10)]);
            break;
        case 1:
            hc595_shift(number[Math.floor(counter % 100 / 10)]);
            break;
        case 2:
            hc595_shift(number[Math.floor(counter % 1000 / 100)]);
            break;
        case 3:
            hc595_shift(number[Math.floor(counter % 10000 / 1000)]);
            break;
    }
}, 5);

setInterval(() => {
    counter++;
}, 1000);

Explication du Code

const pin1 = new Gpio(10, {mode: Gpio.OUTPUT});
const pin2 = new Gpio(25, {mode: Gpio.OUTPUT});
const pin3 = new Gpio(27, {mode: Gpio.OUTPUT});
const pin4 = new Gpio(17, {mode: Gpio.OUTPUT});
const placePin = [pin1,pin2,pin3,pin4];

Initialisez les broches 10, 25, 27 et 17 en mode sortie et placez-les dans le tableau placePin pour faciliter le contrôle de l’anode commune de l’afficheur 7 segments à quatre chiffres.

const number = [0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90];

Définissez un tableau constant number pour représenter le code segment hexadécimal de 0 à 9 (anode commune).

function clearDisplay() {
    hc595_shift(0xff);
}

Écrivez 0xff pour éteindre l’afficheur.

function pickDigit(digit) {
    for(let i=0;i<4;i++){
        placePin[i].digitalWrite(0);
    }
    placePin[digit].digitalWrite(1);
}

Sélectionnez l’emplacement de la valeur. Il ne doit y avoir qu’un seul emplacement activé à la fois. L’emplacement activé sera mis en état haut.

let digit = -1
setInterval(() => {
    digit = (digit +1)% 4
    clearDisplay();
    pickDigit(digit);
    switch(digit){
        case 0:
            hc595_shift(number[Math.floor(counter % 10)]);
            break;
        case 1:
            hc595_shift(number[Math.floor(counter % 100 / 10)]);
            break;
        case 2:
            hc595_shift(number[Math.floor(counter % 1000 / 100)]);
            break;
        case 3:
            hc595_shift(number[Math.floor(counter % 10000 / 1000)]);
            break;
    }
}, 5);

Ce code est utilisé pour définir le nombre affiché sur l’afficheur 7 segments à 4 chiffres.

Tout d’abord, démarrez le quatrième segment d’affichage et écrivez le chiffre des unités. Ensuite, démarrez le troisième segment d’affichage et saisissez le chiffre des dizaines ; après cela, démarrez respectivement les deuxième et premier segments d’affichage et écrivez respectivement les chiffres des centaines et des milliers. Comme la vitesse de rafraîchissement est très rapide, nous voyons un affichage complet à quatre chiffres.

setInterval(() => {
    counter++;
}, 1000);

Ajoutez un au counter (l’afficheur numérique à quatre chiffres affiche le nombre plus un) chaque seconde qui passe.

Photo du Phénomène

../_images/image811.jpeg