Mateya oyo ezali eteni ya: Liteya 107 28BYJ-48 Etape 8 Misala
Video oyo eza na 8 projets. Projet moko na moko ezali na code separate. Ba liens ya ba vidéos misusu ezali na se ya article oyo.
Losu 107-6: Kokamba motɛ́ ya stepper 28BYJ-48 na nzela ya ba push button misato, elongo na angle mpe vitesse STPB-4
Projet 6: Angle et Vitesse Variables à l'Aide du Bouton Poussoir STPB-4 – Moteur Pas à Pas 28BYJ-48
Cet article poursuit la série de 8 parties sur le contrôle des moteurs pas à pas avec le Projet 6, en se concentrant sur le contrôle de mouvement défini par l'utilisateur à l'aide d'un bouton poussoir étiqueté STPB-4. Ce projet permet à l'utilisateur de saisir l'angle et la vitesse souhaités via le moniteur série, puis d'utiliser un bouton pour exécuter ce mouvement. C'est une configuration puissante pour tester des profils de mouvement ou prototyper des tâches de mouvement.
Tous les codes sources et schémas de câblage associés sont inclus ci-dessous dans cet article.
📘 Introduction
Ce projet introduit le contrôle personnalisé de l'angle et de la vitesse via une entrée série. Vous saisissez le nombre de degrés à faire tourner et la vitesse souhaitée en tr/min. Une fois les données saisies, appuyer sur le bouton STPB-4 exécute la rotation en conséquence. Cela démontre comment des interfaces d'entrée/sortie simples peuvent produire un comportement de contrôle de mouvement avancé.
⚙️ Câblage
Le câblage est cohérent avec les projets précédents pour le moteur pas à pas et le pilote ULN2003. Pour le bouton :
-
Une borne du bouton poussoir STPB-4 → broche Arduino 2
-
Autre borne → GND
Le système utilise la résistance de tirage interne de l'Arduino. La communication série se fait via la connexion USB.
Légende : Câblage du projet 6 : saisie personnalisée de l'angle/vitesse via le moniteur série, exécution via le bouton STPB-4.
💻 Explication du Code
Ce programme combine l'analyse des entrées série avec le contrôle par bouton poussoir. Voici comment cela fonctionne :
-
Initialiser les composants :
#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
const int buttonPin = 2;
int angle = 0;
int speed = 10;
-
Configurer la série et l'entrée :
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Entrez l'angle :");
while (Serial.available() == 0) {}
angle = Serial.parseInt();
Serial.println("Entrez la vitesse en tr/min :");
while (Serial.available() == 0) {}
speed = Serial.parseInt();
myStepper.setSpeed(speed);
}
-
Boucle avec déclenchement par bouton :
void loop() {
if (digitalRead(buttonPin) == LOW) {
int steps = (angle * stepsPerRevolution) / 360;
myStepper.step(steps);
delay(1000);
}
}
-
Convertit l'angle en nombre de pas basé sur 2048 pas/tour.
-
Le moteur ne bouge que lorsque le bouton est enfoncé, en utilisant les valeurs stockées.
🎬 Horodatages de la Vidéo Complète
Utilisez les horodatages suivants pour trouver les sections pertinentes dans le tutoriel complet :
-
1:05:48 – Projet 6 : Introduction
-
1:07:43 – Projet 6 : Câblage
-
1:11:04 – Projet 6 : Code
-
1:17:34 – Projet 6 : Démonstration
📁 Section de Téléchargement
Le code complet et les ressources de câblage sont fournis ci-dessous dans cet article. Ce projet montre comment combiner l'interaction matérielle et l'entrée utilisateur pour des applications de mouvement personnalisables.
Le prochain est [Projet 7 : Boutons Multiples pour l'Angle, la Vitesse et la Direction – STPB-5].
Mateya oyo ezali eteni ya: Liteya 107 28BYJ-48 Etape 8 Misala
- Lis 107-1: Bandá na Motɛ́ ya Stepper 28BYJ-48 na Kotɛ́lɛmisa na Direction oyo esɛ́ngí na Code
- Lesson 107-2: Kokamba motɛ́ ya 28BYJ-48 na nzela ya Serial Monitor
- Lis 107-3: Kokamba motɛ́ ya 28BYJ-48 na nzela ya ba push button misato: CW, CCW, mpe Stop (STPB-1)
- Lis 107-4: Kokamba moteur ya stepper 28BYJ-48 na nzela ya ba push buttons mibale, CW, CCW (Kanga kino okanga), STPB-2
- Lis 107-5: Tinda motɛ́ ya 28BYJ-48 mpo na mbala mɔ̌kɔ́ na nzela ya CW to CCW, STPB-3
- Loson 107-7: Kotinda 28BYJ-48 Stepper Motor na Ngala na Nionso na Bítíngi bya STPB-5 bya Kobéngama
- Lis 107-8: Kokamba ntango ya moteur ya pete 28BYJ-48 na kosalela potentiomètre
/*
* Lesson 107-6: Controlling a stepper motor using 3 push buttons STPB-4.
STPB-4: We control a stepper motor using three push buttons. One push button for CW (fixed angle and speed), another for CCW (fixed angle and speed), and one for stopping it. The angles are set in the code.
See video for details and demonstration.
In this lesson, we learn how to use a mini stepper motor 28BYJ-48 for our project. I am presenting 8 projects
so you can use it in almost any application. In the video, I have explained the code, shown the full wiring diagram, and
how to connect the wires, push buttons, and breadboard.
Project 1: Running motor
Project 2: Controlling stepper motor from Serial Monitor
Project 3: Controlling stepper motor using push button STPB-1
Project 4: Controlling using push button STPB-2 keep pressing
Project 5: One Revolution using push button STPB-3
Project 6: Push button Any Angle and speed STPB-4 (this code)
Project 7: Using multiple buttons to control any angles STPB-5: angle, speed and direction
Project 8: Controlling stepper motor using potentiometer
* Watch Video instruction for this code: https://youtu.be/TQ7R2bY-MWU
*
* This code is part of the Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
*
* For the library for this code, visit http://robojax.com/
*
If you found this tutorial helpful, please support me so I can continue creating
content like this. Make a donation using PayPal or a credit card: https://bit.ly/donate-robojax
* Written by Ahmad Shamshiri for Robojax Robojax.com
* on April 23, 2020, in Ajax, Ontario, Canada
*
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int Pin1 = 10;//IN1 is connected to 10
int Pin2 = 11;//IN2 is connected to 11
int Pin3 = 12;//IN3 is connected to 12
int Pin4 = 13;//IN4 is connected to 13
int switchSTOP =2;//define input pin for STOP push button
int switchCW =3;//define input pin for CW push button
int switchCCW =4;//define input pin for CCW push button
int speedFactor =1;//1=fastest, 2=slower or 3 more slower
long goToAngle = 360;
int correction_CW = 150;//watch video for details
int correction_CCW = 150;//watch video for details
const int CW =1;
const int CCW =2;
const int STOP =3;
int poleStep = 0;
long stepVale =0;
const int SPR=64*64;
int pole1[] ={0,0,0,0, 0,1,1,1, 0};//pole1, 8 step values
int pole2[] ={0,0,0,1, 1,1,0,0, 0};//pole2, 8 step values
int pole3[] ={0,1,1,1, 0,0,0,0, 0};//pole3, 8 step values
int pole4[] ={1,1,0,0, 0,0,0,1, 0};//pole4, 8 step values
int count=0;
int dirStatus = STOP;// stores direction status 3= stop (do not change)
void setup()
{
//Robojax.com Stepper Push button Any Angle STPB-4
Serial.begin(9600);
Serial.print("Robojax Video for Stepper Motor STPB-2");
pinMode(Pin1, OUTPUT);//define pin for ULN2003 in1
pinMode(Pin2, OUTPUT);//define pin for ULN2003 in2
pinMode(Pin3, OUTPUT);//define pin for ULN2003 in3
pinMode(Pin4, OUTPUT);//define pin for ULN2003 in4
pinMode(switchSTOP,INPUT_PULLUP);
pinMode(switchCW,INPUT_PULLUP);
pinMode(switchCCW,INPUT_PULLUP);
}
void loop()
{
stepVale = (SPR * goToAngle)/360 ;
//Robojax.com Stepper Push button Any Angle STPB-4
if(digitalRead(switchCCW) == LOW)
{
dirStatus =CCW;
count =0;
}else if(digitalRead(switchCW) == LOW)
{
dirStatus = CW;
count =0;
}
if(digitalRead(switchSTOP) == LOW)
{
dirStatus = STOP;
delay(200);
}
if(dirStatus ==CCW){
poleStep++;
count++;
if(count+correction_CCW <= stepVale)
{
driveStepper(poleStep);
}else{
driveStepper(8);
}
//full explanation at Arduino Course on Udemy.com see link above
}else if(dirStatus ==CW){
poleStep--;
count++;
if(count+correction_CW <=stepVale)
{
driveStepper(poleStep);
}else{
driveStepper(8);
}
}else{
driveStepper(8);
}
if(poleStep>7){
poleStep=0;
}
if(poleStep<0){
poleStep=7;
}
delay(speedFactor);
//Robojax.com Stepper Push button Any Angle STPB-4
}// loop
/*
* @brief moves motor to specific angle
* @param "angle" is an integer representing the angle
* @return does not return anything
*
* www.Robojax.com code April 19, 2020, at 01:22 in Ajax, Ontario, Canada
*/
void driveStepper(int c)
{
//Robojax.com Stepper Push button Any Angle STPB-4
digitalWrite(Pin1, pole1[c]);
digitalWrite(Pin2, pole2[c]);
digitalWrite(Pin3, pole3[c]);
digitalWrite(Pin4, pole4[c]);
if(c ==8)
{
digitalWrite(switchCW, HIGH);
digitalWrite(switchCCW, HIGH);
}
}//driveStepper ends here
Nko o na nki.
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
Mokili na bisika
-
L'extérieur
-
L'extérieur
-
L'extérieur
Fichiers📁
Fritzing File
-
28BYJ-48 Stepper Motor
28BYJ-48 Stepper Motor.fzpz0.01 MB