0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ESP32でサーボ10個を制御

Posted at

サーボ10個でバイバイ

ESP32とPCA9685の組み合わせ。

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

// PCA9685のアドレス(デフォルトは0x40)
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);

// サーボの最小値と最大値(パルス幅)
#define SERVOMIN  115 // 150 // 最小パルス幅
#define SERVOMAX  525 // 600 // 最大パルス幅

int angleToPulse(int angle) {
  return map(angle, 0, 180, SERVOMIN, SERVOMAX);
}

void setup() {
  Serial.begin(115200);
  Serial.println("PCA9685テスト開始");

  // I2C通信の初期化
  pwm.begin();
  // PWM周波数を50Hzに設定(サーボモーターに適した周波数)
  pwm.setPWMFreq(50);

  int pulselen = angleToPulse(0);
  Serial.print("0度: ");
  Serial.println(pulselen);
  
  for (uint8_t i = 0; i < 10; i++) {  
      pwm.setPWM(0, 0, pulselen);
      pwm.setPWM(1, 0, pulselen);
      pwm.setPWM(2, 0, pulselen);
      pwm.setPWM(3, 0, pulselen);
      pwm.setPWM(4, 0, pulselen);
      pwm.setPWM(5, 0, pulselen);
      pwm.setPWM(6, 0, pulselen);
      pwm.setPWM(7, 0, pulselen);
      pwm.setPWM(8, 0, pulselen);
      pwm.setPWM(9, 0, pulselen);
  }
  
  Serial.println("OK");
}

void loop() {
  // サーボを0度から180度まで動かす
  for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++) {
      pwm.setPWM(0, 0, pulselen);
      pwm.setPWM(1, 0, pulselen);
      pwm.setPWM(2, 0, pulselen);
      pwm.setPWM(3, 0, pulselen);
      pwm.setPWM(4, 0, pulselen);
      pwm.setPWM(5, 0, pulselen);
      pwm.setPWM(6, 0, pulselen);
      pwm.setPWM(7, 0, pulselen);
      pwm.setPWM(8, 0, pulselen);
      pwm.setPWM(9, 0, pulselen);
      delay(2);
  }

  // サーボを180度から0度まで戻す
  for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--) {
      pwm.setPWM(0, 0, pulselen);
      pwm.setPWM(1, 0, pulselen);
      pwm.setPWM(2, 0, pulselen);
      pwm.setPWM(3, 0, pulselen);
      pwm.setPWM(4, 0, pulselen);
      pwm.setPWM(5, 0, pulselen);
      pwm.setPWM(6, 0, pulselen);
      pwm.setPWM(7, 0, pulselen);
      pwm.setPWM(8, 0, pulselen);
      pwm.setPWM(9, 0, pulselen);
      delay(2);
  }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?