私のプロジェクトでは、2 つのサーボによって制御されるページめくりを作成しようとしています。ここでの私の目標は、右ボタンを押すと、最初にホイールが時計回りにページを回転し、次にホーンが左から右にスワイプしてページをめくる (左ボタンと同じですが反対) ことです。
角度を調整しようとしている間、ボタンの右のサーボは思い通りに動作していますが、揺れています。一方で、ボタンの右のサーボはスムーズかつ連続的に動作していますが、フリップとターンの両方がアクティブでした。同時に。
#include <Servo.h>
const int swipservo = 8; //yellow
const int liftservo = 9; //green
Servo servo1; // create servo object to control a servo
Servo servo2;
const int leftbutton = 11; //yellow = turn left
const int rightbutton = 12; //blue = turn right
int pos1 = 0; // variable to store the servo position
int pos2 = 0;
void setup() {
servo1.attach (swipservo);
servo2.attach (liftservo);
pinMode(leftbutton , INPUT);
pinMode(rightbutton , INPUT);
}
void loop() {
test();
}
void test() {
if (digitalRead(rightbutton) == HIGH) {
for (pos2 = 0; pos2 < 350; pos2++) {
if (pos2 < 180) {
servo2.write (pos2);
delay(15);
}
if (pos1 > 180) {
servo1.write(0);
delay(15);
servo2.write(0);
delay(15);
}
else if (pos2 >= 180) {
servo1.write(pos1);
delay(15);
pos1 ++;
}
//go back to 0 for POS 2
}
}
if (digitalRead(leftbutton) == HIGH) {
for (pos2 = 160; pos2 > 0; pos2++) {
if (pos2 < 0) {
servo2.write (pos2);
delay(5);
}
if (pos1 >= 180) {
servo1.write(0);
delay(15);
servo2.write(0);
delay(15);
}
else if (pos2 > 0) {
servo2.write(pos2);
delay(15);
}
if (pos2 <= 0) {
servo1.write(pos1);
delay(15);
pos1 ++;
}
}
}
}