⚙️ درس 99: استپر نرم با AccelStepper
شتاب، moveTo و run — و چرا شتاب جلوی گم شدن پله را میگیرد.
سطح: پیشرفته · زمان: حدود 18 دقیقه · مفاهیم: استپر، شتاب، AccelStepper
قدمهای این درس
- چرا؟ هیچ ماشینی از صفر به صد نمیپرد
- قدم ۱ — مدار
- قدم ۲ — moveTo و run
- قدم ۳ — مقایسه: بدون شتاب
- چالش: دکمهی برگشت به خانه
نمونهای از کد این درس
// استپر نرم: پتانسیومتر مقصد را تعیین میکند، AccelStepper با شتاب میرود
#include <AccelStepper.h>
// 28BYJ-48 + ULN2003 on IN1..IN4 = 8, 9, 10, 11 (note the 8, 10, 9, 11 order)
AccelStepper stepper(AccelStepper::FULL4WIRE, 8, 10, 9, 11);
unsigned long lastPrint = 0;
void setup() {
stepper.setMaxSpeed(600); // steps per second at most
stepper.setAcceleration(300); // steps per second, per second
Serial.begin(9600);
}
void loop() {
long goal = map(analogRead(A0), 0, 1023, 0, 2048); // 0..one full turn
stepper.moveTo(goal); // just sets the target, never waits
stepper.run(); // does at most ONE step; call it very often
if (millis() - lastPrint > 300) { // print without blocking run()
lastPrint = millis();
Serial.print("goal:");
Serial.print(goal);
Serial.print(" pos:");
Serial.println(stepper.currentPosition());
}
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓