Mạch Điều Khiển Động Cơ Bước ULN2003 Với Arduino - Tutorial
Phần cứng cần thiết:
![]() |
28BYJ48 |
![]() |
ULN2003-XD ULN2003-XL |
Sơ đồ chân LCD Keypad Shield:
Sơ đồ kết nối:
Thư viện:
Vào mục Sketch --> Include Library --> Manage Libraries

Code:
#include <AccelStepper.h>
#include <LiquidCrystal.h>
//LCD pin to Arduino
const int pin_RS = 8;
const int pin_EN = 9;
const int pin_d4 = 4;
const int pin_d5 = 5;
const int pin_d6 = 6;
const int pin_d7 = 7;
//const int pin_Backlight = 10;
LiquidCrystal lcd(pin_RS, pin_EN, pin_d4, pin_d5, pin_d6, pin_d7);
#define HALFSTEP 8
// Motor pin definitions
#define motorPin1 3 // IN1 on the ULN2003 driver 1
#define motorPin2 11 // IN2 on the ULN2003 driver 1
#define motorPin3 12 // IN3 on the ULN2003 driver 1
#define motorPin4 13 // IN4 on the ULN2003 driver 1
// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
char ledState;
void setup() {
stepper1.setMaxSpeed(1000);
stepper1.setAcceleration(2000);
//stepper1.setSpeed(2000);
//stepper1.moveTo(2048);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print(" ULN2003 ");
lcd.setCursor(0, 1);
lcd.print(" STEP_MOTOR ");
}//--(end setup )---
void loop() {
//Change direction when the stepper reaches the target position
int x;
x = analogRead(0);
if (x < 60) {
lcd.setCursor(15, 0);
lcd.print("+");
if (stepper1.distanceToGo() == 0) {
stepper1.moveTo(stepper1.currentPosition() - 4096);
}
}
else if (x < 200) {
lcd.setCursor(15, 0);
lcd.print("+");
if (stepper1.distanceToGo() == 0) {
stepper1.moveTo(stepper1.currentPosition() - 1000);
}
}
else if (x < 400) {
lcd.setCursor(15, 0);
lcd.print("-");
if (stepper1.distanceToGo() == 0) {
stepper1.moveTo(stepper1.currentPosition() + 1000);
}
}
else if (x < 600) {
lcd.setCursor(15, 0);
lcd.print("-");
if(stepper1.distanceToGo() == 0) {
stepper1.moveTo(stepper1.currentPosition() + 4096);
}
}
else if (x < 800) {
lcd.print("Select");
}
//if (Serial.available() > 0)
//{
// ledState = Serial.read();
// switch (ledState)
// {
// case '0':
// {
// if (stepper1.distanceToGo() == 0) {
// stepper1.moveTo(stepper1.currentPosition() + 4096);
// }
// lcd.setCursor(0, 0);
// lcd.print("ULN2003 STEPMOTOR");
// /*lcd.setCursor(0, 0);
// lcd.print("Position: +500");*/
// lcd.setCursor(0, 1);
// lcd.print("PROG: 0");
// ledState = ' ';
// break;
// }
// case '1':
// {
// if (stepper1.distanceToGo() == 0) {
// stepper1.moveTo(stepper1.currentPosition() - 4096);
// }
// lcd.setCursor(0, 0);
// lcd.print("Position: -500");
// lcd.setCursor(0, 1);
// lcd.print("PROG: 1");
// ledState = ' ';
// break;
// }
// case '2':
// {
// if (stepper1.distanceToGo() == 0) {
// stepper1.moveTo(-stepper1.currentPosition());
// }
// lcd.setCursor(0, 1);
// lcd.print("PROG: 2");
// ledState = ' ';
// break;
// }
// }
//}
stepper1.run();
}
Đăng nhận xét