前提・実現したいこと
ArduinoUNOにPWMドライバ(PCA9685)を接続し,ドライバに繋いだサーボモータから,現在入力されているPWM出力を受信したい
・Arduino(マスタ)⇔PCA9685(スレーブ)はI2Cでデータ通信,モータドライバはArduinoとは別電源(電力不足ではない)
・Adafruit_PWMServoDriverライブラリの,getPWM()メソッドを用いるとPWM出力を返してくれるらしい
色々調べました有益な情報が得られなかったのでお力を貸していただけたら嬉しいです
発生している問題・エラーメッセージ
getPWM()メソッドを用いるとサーボの角度に応じた出力値(例えば200や400など)がシリアルモニタに表示されるはずなのですが,サーボの角度によらず常に"0"が出力されてしまいます.
setPWM()メソッドを用いたサーボの駆動はできているため,ライブラリのインクルード等の問題ではなさそう.
該当のソースコード
サーボの角度を増減させながら,setPWM()でPWM出力値を受信してシリアルモニタに表示するスケッチです
#include <Adafruit_PWMServoDriver.h> #include <Wire.h> Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // Address default: 0x40 #define SERVOMIN 150 #define SERVOMAX 600 void setup() { pwm.begin(); pwm.setPWMFreq(50); Serial.begin(9600); Serial.println("Servo test!"); } int n=0; int ang; void loop() { for(int i=0; i<=10; i++){ ang = map(n, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, ang); n = n+10; delay(200); Serial.println(pwm.getPWM(0)); } delay(1000); for(int i=0; i<=10; i++){ ang = map(n, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, ang); n = n-10; delay(200); Serial.println(pwm.getPWM(0)); } delay(1000); }
補足情報(FW/ツールのバージョンなど)
・サーボ:SG90, ドライバ:PCA9685, ライブラリ:Adafruit_PWMServoDriver

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/26 14:51