🦾 سروو موتور با آردوینو: جاروب ۰ تا ۱۸۰ درجه و کنترل با پتانسیومتر
سروو موتور موتوری است که به جای چرخیدن بیوقفه، به زاویهای که تو میگویی میرود و همانجا میماند. بازوی ربات، در خودکار، فرمان ماشین کنترلی و چشمهای متحرک عروسک همه با سروو ساخته میشوند. در این آموزش دو برنامه مینویسیم: اول سروو خودش جاروب میکند و بعد با یک پتانسیومتر (ولوم) آن را با دست میچرخانیم. اگر در wokwi یا هر شبیه ساز آردوینو دیگری دنبال اولین پروژهی حرکتی میگشتی، از همین شروع کن.
قطعهها
- آردوینو Uno
- سروو موتور کوچک (مثل SG90)
- پتانسیومتر ۱۰ کیلو اهم (برای بخش دوم)
سیمکشی
| قطعه | سیم یا پایه | آردوینو |
|---|---|---|
| سروو | قهوهای یا مشکی (GND) | GND |
| سروو | قرمز (VCC) | 5V |
| سروو | نارنجی یا زرد (سیگنال) | پایهی 9 |
| پتانسیومتر | پایهی کناری اول | 5V |
| پتانسیومتر | پایهی وسط | A0 |
| پتانسیومتر | پایهی کناری دوم | GND |
برنامهی ۱: جاروب خودکار
#include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9); // سیم سیگنال روی پایهی 9
}
void loop() {
for (int angle = 0; angle <= 180; angle++) {
myServo.write(angle);
delay(15);
}
for (int angle = 180; angle >= 0; angle--) {
myServo.write(angle);
delay(15);
}
}
#include <Servo.h>: کتابخانهی استاندارد سروو که همراه Arduino IDE نصب است.myServo.attach(9): به کتابخانه میگوید سروو روی کدام پایه است. از این لحظه آردوینو پشت صحنه هر ۲۰ میلیثانیه یک پالس برای سروو میفرستد.myServo.write(angle): سروو را به زاویهی ۰ تا ۱۸۰ درجه میبرد. طول پالس (حدود ۱ تا ۲ میلیثانیه) زاویه را تعیین میکند.delay(15): به سروو فرصت میدهد قبل از درجهی بعدی برسد. کمترش کنی تندتر جاروب میکند.
برنامهی ۲: کنترل با پتانسیومتر
#include <Servo.h>
Servo myServo;
const int POT_PIN = A0;
void setup() {
myServo.attach(9);
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(POT_PIN); // 0 تا 1023
int angle = map(potValue, 0, 1023, 0, 180); // تبدیل به 0 تا 180 درجه
myServo.write(angle);
Serial.print("angle:");
Serial.println(angle);
delay(20);
}
analogRead(A0): ولتاژ پایهی وسط پتانسیومتر را به عددی بین ۰ و ۱۰۲۳ تبدیل میکند.map(potValue, 0, 1023, 0, 180): یک بازه را به بازهی دیگر نگاشت میکند؛ مثل تبدیل نمرهی ۲۰ به درصد.- خط
angle:در سریال، مخصوص نمودار سریال شبیهساز است؛ با چرخاندن ولوم، منحنی زاویه را زنده میبینی.
اجرا در شبیهساز، رایگان
سروو، پتانسیومتر و آردوینو Uno در تینکرکد فارسی برای همیشه رایگاناند. مثال آمادهی سروو موتور: جاروب و پتانسیومتر کنترل سروو را باز کن و همین حالا اجرا کن. برای یادگیری قدمبهقدم، درس ۸: سروو موتور و درس ۱۶: فرمان با ولوم را ببین. شبیهساز در مرورگر و روی گوشی و بدون فیلترشکن کار میکند.
اشکالهای رایج
- سروو میلرزد یا ریست میشود: تغذیه کم است. سروو را از منبع جدا تغذیه کن.
- سروو کامل ۱۸۰ درجه نمیچرخد: بعضی سرووها با پالس استاندارد فقط حدود ۱۶۰ درجه میروند. میتوانی با
myServo.attach(9, 500, 2400)بازهی پالس را بزرگتر کنی. - با ولوم، زاویه برعکس عوض میشود: دو پایهی کناری پتانسیومتر را جابهجا کن، یا در
mapبنویس180, 0. - سروو مدام میچرخد و نمیایستد: سرووی «۳۶۰ درجه» یا پیوسته داری؛ در آن
writeسرعت را تعیین میکند نه زاویه را. - analogWrite روی پایهی 10 کار نمیکند: روی Uno کتابخانهی Servo تایمر ۱ را برمیدارد و PWM پایههای 9 و 10 را از کار میاندازد.
قدم بعدی میتواند ساخت یک قفل با سروو باشد: قفل در با کارت RFID و سروو. پروژههای بیشتر در صفحهی شبیهساز آردوینو هست.
سروو را همین حالا رایگان بچرخان 🦾