0

私のプロジェクトでは、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 ++;
      }
    }
  }
}
4

0 に答える 0