#include <Wire.h>
#include <Servo.h>
const int pushPin = 2; // تعریف پین متصل به دکمه
int i = 0; // تعریف متغیر برای نگهداری موقعیت فعلی Servo Motor
Servo servo1; // ایجاد یک شیء از Servo
void setup() {
Serial.begin(9600);
servo1.attach(3); // اتصال Servo Motor به پین مربوطه
servo1.write(0); // حرکت Servo Motor به موقعیت اولیه (0 درجه)
pinMode(pushPin, INPUT_PULLUP); // تنظیم پین دکمه به حالت ورودی با مقاومت pull-up
}
void loop() {
buttonHandler(); // فراخوانی تابع کنترل دکمه
}
void buttonHandler() {
if (digitalRead(pushPin) == LOW) { // اگر دکمه فشرده شده باشد
i++; // افزایش متغیر موقعیت
if (i > 4) {
i = 0; // بازگشت متغیر موقعیت به مقدار اولیه اگر بیشتر از 4 شود
}
moveServo(i); // حرکت Servo Motor به موقعیت جدید
delay(200); // تاخیر برای جلوگیری از پرش و تکرار سریع حرکت
}
}
void moveServo(int position) {
switch (position) {
case 0:
servo1.write(0); // حرکت Servo Motor به زاویه 0 درجه
break;
case 1:
servo1.write(45); // حرکت Servo Motor به زاویه 45 درجه
break;
case 2:
servo1.write(90); // حرکت Servo Motor به زاویه 90 درجه
break;
case 3:
servo1.write(135); // حرکت Servo Motor به زاویه 135 درجه
break;
case 4:
servo1.write(180); // حرکت Servo Motor به زاویه 180 درجه
break;
default:
break;
}
}