#include <AccelStepper.h>
int dir = 3; // định hướng chuyển động của động cơ bước
int step = 4; // cung cấp các xung điều khiển để di chuyển động cơ bước một bước
int ena = 5; // bật tắt driver
int led1 = 6, led2 = 7; //đèn LED
int k1 = 9, k2 =8, k3 = 10, k4 = 11; // công tắc
AccelStepper motor(1, step, dir, ena); // 1: chế độ dùng driver để điều khiển
void setup(){
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(k1, INPUT);
pinMode(k2, INPUT);
pinMode(k3, INPUT);
pinMode(k4, INPUT);
motor.setMaxSpeed(1000); // set tốc độ tối đa(bước/s)
}
void quay_mot_vong(){
motor.setCurrentPosition(0); // set vị trí hiện tại
while(motor.currentPosition() != 200)
{
motor.setSpeed(500); // set tốc độ quay(bước/s)
motor.runSpeed(); // cho motor chạy
}
}
void quay_muoi_vong(){
motor.setCurrentPosition(0);
while(motor.currentPosition() != 2000)
{
motor.setSpeed(500);
motor.runSpeed();
}
}
void tien_cham(){
motor.setCurrentPosition(0);
while(motor.currentPosition() != 1)
{
motor.setSpeed(50);
motor.runSpeed();
}
}
void tien_nhanh(){
motor.setCurrentPosition(0);
while(motor.currentPosition() != 1)
{
motor.setSpeed(1000);
motor.runSpeed();
}
}
void lui_cham(){
motor.setCurrentPosition(0);
while(motor.currentPosition() != -1)
{
motor.setSpeed(-100);
motor.runSpeed();
}
}
void lui_nhanh(){
motor.setCurrentPosition(0);
while(motor.currentPosition() != -1)
{
motor.setSpeed(-1000);
motor.runSpeed();
}
}
void loop(){
digitalRead(k1);
digitalRead(k2);
digitalRead(k3);
digitalRead(k4);
// đọc trạng thái 4 nút nhấn
// if(digitalRead(k1) == HIGH){
// digitalWrite(led1, HIGH);
// tien_cham();
// } else digitalWrite(led1, LOW);
// //delay(200);
// if(digitalRead(k2) == HIGH){
// digitalWrite(led1, HIGH);
// tien_nhanh();
// } else digitalWrite(led1, LOW);
// //delay(200);
// if(digitalRead(k3) == HIGH){
// digitalWrite(led2, HIGH);
// lui_cham();
// } else digitalWrite(led2, LOW);
// //delay(200);
// if(digitalRead(k4) == HIGH){
// digitalWrite(led2, HIGH);
// lui_nhanh();
// } else digitalWrite(led2, LOW);
// delay(200);
// while(digitalRead(k1) == HIGH){
// digitalWrite(led1, HIGH);
// tien_cham();
// }
// chế độ 1
if(digitalRead(k1) == HIGH){
while(digitalRead(k1) == HIGH){
digitalWrite(led1, HIGH);
tien_cham();
}
}else digitalWrite(led1, LOW);
// chế độ 2
if(digitalRead(k2) == HIGH){
while(digitalRead(k2) == HIGH){
digitalWrite(led1, HIGH);
tien_nhanh();
}
}else digitalWrite(led1, LOW);
// chế độ 3
if(digitalRead(k3) == HIGH){
while(digitalRead(k3) == HIGH){
digitalWrite(led2, HIGH);
lui_cham();
}
}else digitalWrite(led2, LOW);
// chế độ 4
if(digitalRead(k4) == HIGH){
while(digitalRead(k4) == HIGH){
digitalWrite(led2, HIGH);
lui_nhanh();
}
}else digitalWrite(led2, LOW);
}