🎯 ماموریت ۹۵: کنترل تناسبی سروو
هدف = پتانسیومتر A0. خطا = هدف − مکان. هر بار مکان را Kp × خطا جلو ببر؛ سروو D9 نرم دنبالش میره.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ یه سروو
- ☐ یه پتانسیومتر
- ☐ ضریب تناسبی Kp
- ☐ خطا حساب بشه
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- سروو موتور
- پتانسیومتر
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (VCC5) ⟷ سروو موتور (VCC)
- سروو موتور (GND) ⟷ Arduino Uno (GND2)
- Arduino Uno (D9) ⟷ سروو موتور (SIG)
- Arduino Uno (VCC5) ⟷ پتانسیومتر (VCC)
- Arduino Uno (A0) ⟷ پتانسیومتر (WIPER)
- پتانسیومتر (GND) ⟷ Arduino Uno (GND1)
کد
// P-control: the servo chases the knob smoothly (step = Kp * error)
#include <Servo.h>
Servo arm;
float position = 90;
const float Kp = 0.15; // bigger = faster, too big = shaky
void setup() {
Serial.begin(9600);
arm.attach(9);
}
void loop() {
int target = map(analogRead(A0), 0, 1023, 0, 180);
float error = target - position;
position = position + Kp * error; // big error = big step, small error = tiny step
arm.write((int)position);
Serial.print(target);
Serial.print(",");
Serial.println(position);
delay(20);
}
ماموریتهای مشابه
💾
ماموریت ۹۴: ذخیرهی تنظیمات در حافظهی فلش
🌞
ماموریت ۹۶: ردیاب خورشید
📡
ماموریت ۹۳: انتشار با MQTT
🛗
ماموریت ۹۷: آسانسور با ماشین حالت
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها