2019年10月25日
ここでは、Pololu デュアルG2ハイパワーモータドライバ18v22を使ってSM方式とLAP方式を実装する方法を説明します。
つぎのように、モータ、モータドライバ、Arduinoを接続します。
#define M1PWM 9 #define M2PWM 10 #define M1nSLEEP 2 #define M2nSLEEP 4 #define M1DIR 7 #define M2DIR 8 void setup() { // pin9,10 PWM周波数を変える -> 31372.55 Hz TCCR1B = (TCCR1B & 0b11111000) | 0x01; pinMode(M1nSLEEP, OUTPUT); pinMode(M1DIR, OUTPUT); analogWrite(M1PWM, 0); digitalWrite(M1nSLEEP, 1); } void loop() { // 停止->正転 digitalWrite(M1DIR, 1); for(int i = 0; i < 255; i++) { analogWrite(M1PWM, i); delay(5); } // 正転->停止 for(int i = 255; i > 0; i--) { analogWrite(M1PWM, i); delay(5); } // 停止->逆転 digitalWrite(M1DIR, 0); for(int i = 0; i < 255; i++) { analogWrite(M1PWM, i); delay(5); } // 逆転->停止 for(int i = 255; i > 0; i--) { analogWrite(M1PWM, i); delay(5); } }
つぎのように、モータ、モータドライバ、Arduinoを接続します。
#define G2_PWM 9 #define G2_DIR 10 void setup() { // pin9,10 PWM周波数を変える -> 31372.55 Hz TCCR1B = (TCCR1B & 0b11111000) | 0x01; pinMode(G2_PWM, OUTPUT); analogWrite(G2_DIR, 128); digitalWrite(G2_PWM, 1); // 停止->逆転 for(int i = 128; i > 0; i--) { analogWrite(G2_DIR, i); delay(10); } } void loop() { // 逆転->正転 for(int i = 0; i < 255; i++) { analogWrite(G2_DIR, i); delay(10); } // 正転->逆転 for(int i = 255; i > 0; i--) { analogWrite(G2_DIR, i); delay(10); } }