https://item.taobao.com/item.htm?spm=a1z09.2.0.0.435e2e8dKDHquW&id=536890985912&_u=21qf7bf5b2a1
それができるUSB搭載コンピュータまたは専用12V-2A電源があるかどうか
ボードは、複数のレベルのトレーニングを制御することができます
インストールライブラリ
/ ************************************************* ** これは私たちadafruit 16チャネルPWM&サーボドライバのための一例である に次々 、これは8個のサーボを駆動する-サーボテスト PCA9685の最初の8本のピン adafruitショップで今日1をピックアップ! ------> http://www.adafruit.com/products/815 これらのドライバが通信にI2Cを使用し、2本のピンがために必要とされる インターフェース。 Adafruitは、時間とリソースは、このオープンソースコードを提供する投資し、 購入することで、Adafruitとオープンソースのハードウェアをサポートしてください Adafruitから製品を! Adafruit Industries社のためのリモア・フリート/ Ladyadaによって書かれました。 BSDライセンスは、すべてのテキストは、上記のいずれかの再配布に含める必要があります ************************************************** ** / 書式#include <Wire.h> 書式#include <Adafruit_PWMServoDriver.h> //このよう呼ばれ、それは0x40のデフォルトのアドレスを使用しています Adafruit_PWMServoDriver PWM = Adafruit_PWMServoDriver(); //また、あなたが望む別のアドレスでそれを呼び出すことができます // Adafruit_PWMServoDriver PWM = Adafruit_PWMServoDriver(0×41)。 //あなたはまた、別のアドレスでそれを呼び出すことができますし、I2Cインターフェース // Adafruit_PWMServoDriver PWM = Adafruit_PWMServoDriver(0x40の、ワイヤ)。 //あなたのサーボメイクに応じて、パルス幅最小値と最大値は、あなたは、異なる場合があり これらのハードストップを押すことなく小型/大型できるだけなりたい// 、最大範囲のために//。あなたはサーボ一致させるために、必要に応じてそれらを微調整する必要があります 持っている//を! #define SERVOMIN 150 //これは(4096のうち)「最小」パルス長カウントです 。これは(4096のうちの)「最大」パルス長カウントです// SERVOMAX 600 #defineしを 。これは、丸みを帯びた「最小」マイクロ秒の長さに基づいている// 600の#define USMINを150の最小パルス上 の#define USMAX 2400 //これは、600の最大パルスに基づいて、丸みを帯びた「最大の」マイクロ秒の長さである の#define SERVO_FREQ 50 //〜50 Hzのアップデートでアナログサーボ実行 //私たちのサーボ#カウンタ uint8_tのservonum = 0; ボイドセットアップ(){ Serial.begin(9600)。 Serial.println( "8チャンネルサーボテスト!"); pwm.begin(); //理論的には内部発振器は、25MHzのですが、それは本当にではありません //正確なこと。あなたはまでこの数を微調整することにより「キャリブレーション」することができ 、あなたが期待している周波数を取得//! pwm.setOscillatorFrequency(27000000)。// int.osc。 pwm.setPWMFreq(SERVO_FREQ)。〜50 Hzのアップデートで//アナログサーボの実行 遅延(10)。 } あなたは数秒でパルス長を設定したい場合//この関数を使用することができます 。//たとえばsetServoPulse(0、0.001)〜1ミリ秒のパルス幅です。それは正確ではありません! ボイドsetServoPulse(uint8_t N、ダブルパルス){ ダブルpulselength。 pulselength = 1000000; 毎秒// 1,000,000たち pulselength / = SERVO_FREQ。〜60 Hzのアップデートで//アナログサーボ実行 ボイドループ(){ //ドライブsetPWMを使用時の各サーボオン() Serial.print(pulselength)。Serial.println( "期間ごとに私たち"); pulselength / = 4096; 解像度の// 12ビット Serial.print(pulselength)。Serial.println( "ビットあたりの私たち"); パルス* = 1000000; 私たちに//変換入力秒 / = pulselengthパルス。 Serial.println(パルス)。 pwm.setPWM(nは、0、パルス)。 } Serial.println(servonum)。 用(uint16_t pulselen = SERVOMIN; pulselen <SERVOMAX; pulselen ++){ pwm.setPWM(servonum、0、pulselen)。 } 遅延(500)。 (uint16_t pulselen = SERVOMAX; pulselen> SERVOMIN; pulselen--)用{ pwm.setPWM(servonum、0、pulselen)。 } 遅延(500)。 //ドライブwriteMicrosecondsを使用して一度に各サーボ1は()、それは計算の丸めによる正確ではありません! // writeMicroseconds()関数は、ArduinoのサーボライブラリwriteMicroseconds()の挙動を模倣するために使用されます。 用(uint16_tマイクロ秒= USMIN;マイクロ秒<USMAX;マイクロ秒++){ pwm.writeMicroseconds(servonum、マイクロ秒)。 } 遅延(500)。 (uint16_tマイクロ秒= USMAX;マイクロ秒> USMIN; microsec--)用{ pwm.writeMicroseconds(servonum、マイクロ秒)。 } 遅延(500)。 servonum ++; IF(servonum> 3)servonum = 0。//最初の8つのサーボチャネルをテストします }