پروژه ساده آردوینو: کنترل سروو با دکمه فشاری ۱۸۰ درجه به ۰ و برگشت
مقدمه
این مقاله یک پروژه ساده آردوینو را توضیح میدهد که از یک دکمه فشاری برای کنترل یک موتور سروو استفاده میکند. یک موتور سروو موتوری دقیق است که میتواند به یک موقعیت خاص بچرخد و آن را برای کاربردهایی مانند رباتیک و اتوماسیون ایدهآل میسازد. این پروژه باعث میشود سروو هنگام فشار دادن دکمه از ۰ به ۱۸۰ درجه حرکت کند و هنگام رها شدن به ۰ بازگردد.
اجزای پروژه و اتصالات
شما به یک برد آردوینو، یک موتور سروو و یک دکمه فشاری نیاز دارید.
دستورالعملهای اتصال:
- موتور سروو: سیم سیگنال (معمولاً زرد/نارنجی) را به پایه ۳ آردوینو، سیم برق (قرمز) را به ۵ ولت و سیم زمین (سیاه/قهوهای) را به GND وصل کنید.
- دکمه فشاری: یک پایه را به پایه دیجیتال ۲ و پایه دیگر را به یک پایه GND وصل کنید. تمام شد! با استفاده از مقاومت pull-up داخلی آردوینو، به مقاومت خارجی نیازی ندارید.
توضیح شِفر (کود)
برنامه به سه بخش اصلی تقسیم میشود: تعریف پایهها، تابع setup() و تابع loop().
تعریف پایهها
این بخش کتابخانههای لازم را تنظیم میکند و نامهای معناداری به پایههایی که استفاده میکنید اختصاص میدهد.
#include <Servo.h>
const int servoPin = 3;
const int buttonPin = 2;
Servo myServo;
تابع setup()
تابع setup() شامل کدی است که فقط یک بار هنگام روشن شدن یا ریست شدن برد آردوینو اجرا میشود. از آن برای پیکربندی اولیه استفاده میشود.
void setup() {
myServo.attach(servoPin);
pinMode(buttonPin, INPUT_PULLUP);
myServo.write(0);
}
تغییر حیاتی pinMode(buttonPin, INPUT_PULLUP); است. این کار یک مقاومت داخلی را فعال میکند که ولتاژ پایه را به HIGH میکشد. وقتی دکمه را فشار میدهید، پایه را به زمین متصل میکند و ولتاژ به LOW کاهش مییابد.
تابع loop()
تابع loop() شامل منطق اصلی برنامه است و پس از پایان تابع setup() بهطور مکرر برای همیشه اجرا میشود.
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
myServo.write(180);
} else {
myServo.write(0);
}
}
منطق اینجا اکنون معکوس شده است. از آنجا که فشار دکمه منجر به سیگنال LOW میشود، از شرط if (buttonState == LOW) برای حرکت سروو به ۱۸۰ درجه استفاده میشود.
#include <Servo.h>
/*
* This is sketch for controlling servo motor. when push button is pressed, the servo moves to 180 degreees and stays there. when the push button is released, the servo motor returns back to 0 degree.
*/
// Define the pin for the servo motor
const int servoPin = 3;
// Define the pin for the push button
const int buttonPin = 2;
// Create a Servo object
Servo myServo;
void setup() {
// Attach the Servo object to the servo pin
myServo.attach(servoPin);
// Set the button pin as an input
pinMode(buttonPin, INPUT);
// Start the servo at 0 degrees
myServo.write(0);
}
void loop() {
// Read the state of the push button
int buttonState = digitalRead(buttonPin);
// If the button is pressed (HIGH)
if (buttonState == HIGH) {
// Move the servo to 180 degrees
myServo.write(180);
} else {
// If the button is released (LOW), move the servo back to 0 degrees
myServo.write(0);
}
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازونموتور سروو در اَمه زونamzn.to
-
علیاکسپرسموتور سرو SG90 با زاویه ۱۸۰ یا ۳۶۰ را از علیاکسپرس خریداری کنیدs.click.aliexpress.com
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
هیچ فایلی موجود نیست.