Projet Arduino facile : Contrôler un servomoteur avec un bouton poussoir de 180 degrés à 0 et retour
Introduction
Cet article explique un projet Arduino simple qui utilise un bouton-poussoir pour contrôler un servomoteur. Un servomoteur est un moteur précis qui peut tourner vers une position spécifique, ce qui le rend idéal pour des applications comme la robotique et l'automatisation. Ce projet fera bouger un servo de 0 à 180 degrés lorsqu'un bouton est pressé et le fera revenir à 0 lorsqu'il est relâché.
Composants du projet et câblage
Vous aurez besoin d'une carte Arduino, d'un servomoteur et d'un bouton-poussoir.
Instructions de câblage :
- Servomoteur : Connectez le fil de signal (généralement jaune/orange) à la broche 3 de l'Arduino, le fil d'alimentation (rouge) à 5V, et le fil de terre (noir/marron) à GND.
- Bouton-poussoir : Connectez une patte à la broche numérique 2 et l'autre patte à une broche GND. C'est tout ! En utilisant la résistance de tirage interne de l'Arduino, vous n'avez pas besoin de résistance externe.
Le code expliqué
Le programme est divisé en trois parties principales : les définitions de broches, la fonction setup() et la fonction loop().
Définitions de broches
Cette section configure les bibliothèques requises et attribue des noms significatifs aux broches que vous utilisez.
#include <Servo.h>
const int servoPin = 3;
const int buttonPin = 2;
Servo myServo;
La fonction setup()
La fonction setup() contient du code qui ne s'exécute qu'une seule fois lorsque la carte Arduino est mise sous tension ou réinitialisée. Elle est utilisée pour la configuration initiale.
void setup() {
myServo.attach(servoPin);
pinMode(buttonPin, INPUT_PULLUP);
myServo.write(0);
}
Le changement crucial est pinMode(buttonPin, INPUT_PULLUP);. Cela active une résistance interne qui tire la tension de la broche vers HIGH. Lorsque vous appuyez sur le bouton, il connecte la broche à la terre, et la tension chute à LOW.
La fonction loop()
La fonction loop() contient la logique principale du programme et s'exécute répétitivement pour toujours après la fin de la fonction setup().
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
myServo.write(180);
} else {
myServo.write(0);
}
}
La logique ici est maintenant inversée. Puisque l'appui sur le bouton entraîne un signal LOW, la condition if (buttonState == LOW) est utilisée pour déplacer le servo à 180 degrés.
#include <Servo.h>
/*
* This is sketch for controlling servo motor. when push button is pressed, the servo moves to 180 degreees and stays there. when the push button is released, the servo motor returns back to 0 degree.
*/
// Define the pin for the servo motor
const int servoPin = 3;
// Define the pin for the push button
const int buttonPin = 2;
// Create a Servo object
Servo myServo;
void setup() {
// Attach the Servo object to the servo pin
myServo.attach(servoPin);
// Set the button pin as an input
pinMode(buttonPin, INPUT);
// Start the servo at 0 degrees
myServo.write(0);
}
void loop() {
// Read the state of the push button
int buttonState = digitalRead(buttonPin);
// If the button is pressed (HIGH)
if (buttonState == HIGH) {
// Move the servo to 180 degrees
myServo.write(180);
} else {
// If the button is released (LOW), move the servo back to 0 degrees
myServo.write(0);
}
}
Ce dont vous pourriez avoir besoin
-
AmazonMoteur servo sur Amazonamzn.to
-
AliExpressAchetez le moteur servo SG90 180 ou 360 sur AliExpress.s.click.aliexpress.com
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Aucun fichier disponible.