ตั้ง stepper motor speed เป็นทศนิยมได้อย่างไร

ต้องการขับ step motor ให้สามารถปรับspeedได้ โดยรับค่าจากเซนเซอร์ แล้วมาคำนวณspeedในarduino

โดยเราใช้ 28byj-48 stepper motor
                  ULN2003 driver

โค้ดที่1

#include
StepperMotor motor(10,11,12,13);
int motorSpeed = 1.9;
int motorSteps = 4076;
#define led 13
void setup(){
Serial.begin(9600);
pinMode(led, OUTPUT);
digitalWrite(led, LOW); // turn off LED
motor.setStepDuration(motorSpeed);}
void loop(){ digitalWrite(led, HIGH); // shows forward rotation
motor.step(-motorSteps);
}

มอเตอร์สามารถหมุนแกนพลาสติกที่ต้องการได้ แต่motor speed ไม่สามารถรับเป็นค่าจุดทศนิยมได้ เช่น 1.9 ก็จะตีความเป็น 1 โดยเราไม่ทราบว่า motorspeed ตัวนี้ได้มาจากไหนคนทำโค้ดบอกแต่ว่า ถ้าเลขเพิ่มจะช้าลง

โค้ดที่2

#include

#define STEPS 2038 // the number of steps in one revolution of your motor (28BYJ-48)

Stepper stepper(STEPS, 10, 11, 12, 13);

void setup() {
}

void loop() {
//stepper.setSpeed(6); // 1 rpm
//stepper.step(4076); // do 2038 steps -- corresponds to one revolution in one minute
//delay(1000); // wait for one second
stepper.setSpeed(10); // 6 rpm
stepper.step(-1038); // do 2038 steps in the other direction with faster speed -- corresponds to one revolution in 10 seconds
delay(5000);
}

โค้ดนี้เราใส่ค่าเป็นทศนิยมไม่ได้เหมือนกันแต่ปรับspeedจาก stepper.step แทนได้ แต่โค้ดนี้รันมอเตอร์ให้หมุนได้แต่พอใส่แกนครอบแล้วไม่หมุน เหมือนแรงไม่พอเพราะพอเอาแกนออกก็หมุนเหมือนเดิม

คำถาม
1.ทำอย่างไรถึงรับค่าเป็นทศนิยมได้
2.ทำไมโค้ดแรกหมุนได้ แต่อันที่สองหมุนไม่ได้ ทั้งที่ใช้มอเตอร์ตัวเดิม
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่