🎯 ماموریت ۹۵: کنترل تناسبی سروو

هدف = پتانسیومتر A0. خطا = هدف − مکان. هر بار مکان را Kp × خطا جلو ببر؛ سروو D9 نرم دنبالش می‌ره.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد

هدف‌ها

قطعه‌های لازم

▶ همین ماموریت را در شبیه‌ساز امتحان کن
💡 گیر کردی؟ داخل شبیه‌ساز راهنما را ببین، و اگر باز هم نشد دکمه‌ی «برام حلش کن» مدار را برایت می‌چیند تا ببینی چطور کار می‌کند.

جواب کامل

اول خودت امتحان کن! بعد جواب را ببین 👀

سیم‌کشی

  1. Arduino Uno (VCC5) ⟷ سروو موتور (VCC)
  2. سروو موتور (GND) ⟷ Arduino Uno (GND2)
  3. Arduino Uno (D9) ⟷ سروو موتور (SIG)
  4. Arduino Uno (VCC5) ⟷ پتانسیومتر (VCC)
  5. Arduino Uno (A0) ⟷ پتانسیومتر (WIPER)
  6. پتانسیومتر (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

🛗

ماموریت ۹۷: آسانسور با ماشین حالت

📚 برای یاد گرفتن پایه‌ها سری به دوره‌ی آموزش آردوینو بزن · 🎯 همه‌ی ماموریت‌ها