#include <ESP32Servo.h>
#include <Arduino.h>
// サーボのピン番号
const int servoPin = 23;
const int buttonPin = 34;
const int buttonPin2 = 35;
int buttonState = 0;
int buttonState2 = 0;
volatile bool buttonPressed = false;
volatile bool button2Pressed = false;
// サーボオブジェクトを作成
Servo steeringServo;
void setup() {
// サーボモーターを設定
steeringServo.attach(servoPin);
steeringServo.write(90); // 初期位置は中央
pinMode(buttonPin, INPUT);
pinMode(buttonPin2, INPUT);
// シリアル通信を開始(デバッグ用)
Serial.begin(9600);
//割り込み
attachInterrupt(digitalPinToInterrupt(buttonPin), interruptRoutine, CHANGE);
attachInterrupt(digitalPinToInterrupt(buttonPin2), interruptRoutine2, CHANGE);
}
void loop() {
// サーボモーターの角度を制御
// 例として、0度から180度まで移動させる
buttonState = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin2);
//右90度
if (buttonPressed){
steeringServo.write(0);
buttonPressed = false;
/* (int angle = 0; angle <= 90; angle += 1) {//戻り
steeringServo.write(angle);
delay(20); //動く速さ
}*/
}
else{
steeringServo.write(90);
}
//左90度
if (button2Pressed){
steeringServo.write(180);
button2Pressed = false;
/*steeringServo.write(180);
for (int angle = 180; angle >= 90; angle -= 1) {//戻り
steeringServo.write(angle);
delay(20); //動く速さ
}*/
}
else{
steeringServo.write(90);
}
// シリアルモニタにサーボの位置を出力(デバッグ用)
Serial.print("Servo Position: ");
Serial.println(steeringServo.read()); // 現在のサーボの位置を読み取り
// 必要に応じて、他の制御コードを追加
}
void interruptRoutine() {
buttonPressed = digitalRead(buttonPin) == HIGH;
}
void interruptRoutine2() {
button2Pressed = digitalRead(buttonPin2) == HIGH; // 2つ目のボタンの状態をフラグに設定
}