- Lesson 107-1: Start and stop the 28BYJ-48 Stepper motor with direction set in code
- Lesson 107-2: Controlling 28BYJ-48 Stepper motor via Serial Monitor
- Lesson 107-3: Controlling 28BYJ-48 Stepper motor using 3 pubh buttons, CW, CCW and Stop STPB-1
- Lesson 107-4: Controlling 28BYJ-48 Stepper motor using 2pubh buttons, CW, CCW keep pressed STPB-2
- Lesson 107-5: Send 28BYJ-48 motor for One revolution in CW or CCW direction STPB-3
- Lesson 107-6: Controlling 28BYJ-48 Stepper motor using 3 push buttons, with angle and speed STPB-4
- Lesson 107-7: Send 28BYJ-48 Stepper motor to any angle with defined push buttons STPB-5
- Lesson 107-8: Control Speed of 28BYJ-48 Stpper motor using potentiometer
Lesson 107: Control Stepper motor 28BYJ-48 with ULN2003 for Arduino, 7 Projects
Lesson 107: Control Stepper motor 28BYJ-48 with ULN2003 for Arduino, 7 Projects
Please select other codes for this lecture from the links below.
Part 10: Stepper Motors
In this lesson we learn how to use mini stepper motor 28BYJ-48 for our project. I am presenting with 8 projects so you can use it in almost any applicaiton. In the video, I have explained the code, shown full wiring diagram and how connect the wires, push buttons and bread board.
Projects
- Project 1: Running motor
- Project 2: Controlling stepper motor from Serial Monitor (this project)
- 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
- Project 7: ush multiple buttons to any angles STPB-5 angle, speed and direction
- Project 8: Controlling stepper motor using potentiometer
In Project 2 we control direction of rotation of stepper motor using keyboard on our computer via serial monitor.
Timing of chapters in the video
00:00 Start02:03 Introduction to stepper motor
07:40 How motor is controlled
13:08 Wiring explained
15:43 Project 1 code
20:12 Project 1 demonstration
22:23 Project 2: Controlling motor via Serial Monitor
32:03 Project 2 Demonstration
43:13 Project 3: Controlling using push button STPB-1
35:48 Project 3: Wiring explained
37:45 Project 3: Code explained
39:59 Project 3: Demonstration
41:07 Project 4: Controlling using push button STPB-2 keep pressing
42:29 Project 4: Wiring
45:31 Project 4: Code
49:38 Project 4: Demonstration
51:20 Project 5: One Revolution using push button STPB-3
52:15 Project 5: Wiring
55:40 Project 5: Code
1:03:30 Project 5: Demonstration
1:05:48 Project 6: Push button Any Angle and speed STPB-4
1:07:43 Project 6: Wiring
1:11:04 Project 6: Code
1:17:34 Project 6: Demonstration
1:20:18 Project 7: Push multiple buttons to any angles STPB-5 angle, speed and direction
1:21:40 Project 7: Wiring
1:25:35 Project 7: Code
1:32:43 Project 7: Demonstration
1:39:24 Project 8: Controlling Stepper Motor using potentiometer
1:40:58 Project 8: Wiring
1:44:04 Project 8: Code
1:53:19 Project 8: Demonstration
/*
* Lesson 107-2: Controlling stepper motor from Serial Monitor
In this lesson we learn how to use mini stepper motor 28BYJ-48 for our project. I am presenting with 8 projects
so you can use it in almost any applicaiton. In the video, I have explained the code, shown full wiring diagram and
how connect the wires, push buttons and bread board.
Project 2: we will push different keys on keyboard and control motor
Project 1: Running motor
Project 2: Controlling stepper motor from Serial Monitor(this code)
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
Project 7: Using multiple buttons to any angles STPB-5 angle, speed and direction
Project 8: Controlling stepper motor using potentiometer
* Watch Video instrution for this code:https://youtu.be/TQ7R2bY-MWU
*
* This code is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
*
* for library of 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 by credit card https://bit.ly/donate-robojax
* * 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 download 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 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 commandLeft =106;// 106 is ASCII value for lowercase L (l) rotate CW
int commandStop =107;// 107 is ASCII value for lowercase K (k) stops
int commandRight =108;// 108 is ASCII value for lowercase J (j) rotate CCW
int poleStep = 0;
int dirStatus = 3;// stores direction status 3= stop (do not change)
int directionCommand = commandStop;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
Serial.begin(9600);
Serial.println("Robojax 28BYJ-48 Stepper");
}
void loop()
{
directionCommand =getCommand();
if(directionCommand ==commandRight)
{
dirStatus =1;
}else if(directionCommand ==commandLeft)
{
dirStatus = 2;
}else if(directionCommand ==commandStop)
{
dirStatus =3;
}
if(dirStatus ==1){
poleStep++;
driveStepper(poleStep);
}else if(dirStatus ==2){
poleStep--;
driveStepper(poleStep);
}else{
driveStepper(8);
}
if(poleStep>7){
poleStep=0;
}
if(poleStep<0){
poleStep=7;
}
delay(1);
}// loop
void driveStepper(int c)
{
digitalWrite(Pin1, pole1[c]);
digitalWrite(Pin2, pole2[c]);
digitalWrite(Pin3, pole3[c]);
digitalWrite(Pin4, pole4[c]);
}
/*
*
* @brief Turns gets command from Serial monitor to control
* direction of stepper motor
* @param none
* @return integer value of ASCII character
*/
int getCommand()
{
int command =0;
if (Serial.available() > 0) {
command =Serial.read() ;
}
//Serial.println(command);
if(command >= commandLeft && command <= commandRight){
return command;
}else{
return 1000;//nothing was received
}
}//getCommand() end
Simple code to read serial monitor
/*
* Demonstration of Serial command
* * Watch Video instrution for this code:https://youtu.be/msB3zpxy7Uk
* Written by Ahmad Shamshiri for Robojax (Robojax.com)
*/
int commandLeft =106;// 106 is ASCII value for lowercase L (l) rotate CW
int commandStop =107;// 107 is ASCII value for lowercase K (k) stops
int commandRight =108;// 108 is ASCII value for lowercase J (j) rotate CCW
void setup()
{
Serial.begin(9600);
}
void loop()
{
int command;
if (Serial.available() > 0) {
command =Serial.read() ;
}
if(command >=commandLeft && command<=commandRight){
Serial.println(command);
}
delay(500);
}// loop