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.3.1 Moteur
Introduction
Dans ce projet, nous apprendrons à utiliser le L293D pour piloter un moteur à courant continu (DC) et le faire tourner dans le sens horaire et antihoraire. Comme le moteur DC nécessite un courant plus important, par mesure de sécurité, nous utilisons ici le module d’alimentation pour alimenter les moteurs.
Composants Nécessaires
Pour ce projet, nous avons besoin des composants suivants.
Il est vraiment pratique d’acheter un kit complet, voici le lien :
Nom |
ARTICLES DANS CE KIT |
LIEN |
|---|---|---|
Kit Raphael |
337 |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DU COMPOSANT |
LIEN D’ACHAT |
|---|---|
- |
|
- |
|
Schéma de Câblage
Branchez le module d’alimentation sur la breadboard, et insérez le cavalier sur la broche 5V, il délivrera alors une tension de 5V. Connectez la broche 1 du L293D au GPIO22 et réglez-la à un niveau haut. Connectez la broche 2 au GPIO27 et la broche 7 au GPIO17, puis réglez une broche sur haut et l’autre sur bas. Ainsi, vous pouvez changer le sens de rotation du moteur.
Procédures Expérimentales
Étape 1 : Construisez le circuit.
Note
Le module d’alimentation peut utiliser une batterie de 9V avec la boucle de batterie de 9V incluse dans le kit. Insérez le cavalier du module d’alimentation dans les bandes de bus de 5V de la breadboard.
Étape 2 : Allez dans le dossier du code.
cd ~/raphael-kit/nodejs/
Étape 4 : Exécutez le code.
sudo node motor.js
Lorsque le code s’exécute, le moteur tourne d’abord dans le sens horaire pendant 1 seconde puis s’arrête pendant 1 seconde, après cela, il tourne dans le sens antihoraire pendant 1 seconde ; ensuite, le moteur s’arrête pendant 1 seconde. Cette série d’actions sera exécutée en boucle.
Code
const Gpio = require('pigpio').Gpio;
MotorPin1 = new Gpio(17, { mode: Gpio.OUTPUT });
MotorPin2 = new Gpio(27, { mode: Gpio.OUTPUT });
MotorEnable = new Gpio(22, { mode: Gpio.OUTPUT });
// Define a motor function to spin the motor
// direction should be
// 2(clockwise), 1(counterclockwise), 0(stop)
function motor(direction) {
switch (direction) {
case 2: // Clockwise
// Set direction
MotorPin1.digitalWrite(1)
MotorPin2.digitalWrite(0)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Clockwise')
break;
case 1: // Counterclockwise
// Set direction
MotorPin1.digitalWrite(0)
MotorPin2.digitalWrite(1)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Counterclockwise')
break;
case 0: // Stop
// Disable the motor
MotorEnable.digitalWrite(0)
console.log('Stop')
}
}
process.on('SIGINT', function () {
MotorEnable.digitalWrite(0)
process.exit();
})
let index=-1
setInterval(() => {
index=(index+1)%3
motor(index)
}, 1000)
Explication du Code
MotorPin1 = new Gpio(17, { mode: Gpio.OUTPUT });
MotorPin2 = new Gpio(27, { mode: Gpio.OUTPUT });
MotorEnable = new Gpio(22, { mode: Gpio.OUTPUT });
Importer le module pigpio et créer trois objets de la classe Gpio pour contrôler les trois ports IO de Gpio17, Gpio27 et Gpio22.
function motor(direction) {
switch (direction) {
case 2: // Clockwise
// Set direction
MotorPin1.digitalWrite(1)
MotorPin2.digitalWrite(0)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Clockwise')
break;
case 1: // Counterclockwise
// Set direction
MotorPin1.digitalWrite(0)
MotorPin2.digitalWrite(1)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Counterclockwise')
break;
case 0: // Stop
// Disable the motor
MotorEnable.digitalWrite(0)
console.log('Stop')
}
}
Définir une fonction motor() pour contrôler le moteur,
Lorsque la direction est égale à 2, le port MotorPin1 écrit un niveau haut, le port MotorPin2 écrit un niveau bas, et le port d’activation MotorEnable écrit un niveau haut, et le moteur tourne dans le sens horaire.
Lorsque la direction est égale à 1, le port MotorPin1 écrit un niveau bas, le port MotorPin2 écrit un niveau haut, et le port d’activation MotorEnable écrit un niveau haut, et le moteur tourne dans le sens antihoraire.
Lorsque la direction est égale à 0, le port d’activation MotorEnable écrit un niveau bas, et le moteur s’arrête de tourner.
let index=-1
setInterval(() => {
index=(index+1)%3
motor(index)
}, 1000)
Faire tourner le moteur alternativement dans le sens horaire et antihoraire, avec un intervalle de 1 seconde.
process.on('SIGINT', function () {
MotorEnable.digitalWrite(0)
process.exit();
})
Lorsqu’il est détecté que ctrl+c is pressé, MotorEnable écrit un niveau bas pour arrêter le moteur de tourner.
Image du Phénomène