随分前に買って放りっぱなしだった3輪バギー 当時送料込みで9$でした。
最近、新講座を検討しててarduinoでバギーキットを動かそうかなどと話が進んでいる。
確か、ドライバボードが1枚余ってたはずなのでちょっと組んでみることにした。
電源が電池4本で6Vのはずだが、ニッケル水素4.8Vで動くのかな~ 少し疑問
プラ製の車輪がなんとも奥ゆかしいと言うかチープと言うか・・・
まあ、無問題ではある。多分
モータードライバ基盤が要る。2種類あった。
左は、2019年8月購入で「RASBEE L9110S DCモータステップモータ駆動基盤」2個で265円(現在は379円)
右は、arduinoシールドでDCモーター4個(あるいはステッパ / サーボ2個)まで駆動可能
同じく2019年8月購入で「Rasbee オリジナル L293D モーター ドライブ シールド」価格は217円(現在は391円 高くなってるね~)
(購入に際してこちらを参考とさせていただいた)
無駄にシールドのスペースを潰したくないしこのぢ者はモータ2個しか無いので左のやつで十分かな?
戦車でもこれを使った実績あるし。PWM駆動も可能なことは実証済み。最終はこちら
だが、当時の記事を読み直すとマブチモータの場合、最大電流問題から「L293D」を使うが吉と書いていた。
ちょっと悩みますな。熱に注意しておこう。
-------------------------
まずはデータシートはこちらから
アナログポートを使いPWM制御が可能と書かれサンプルが載っていた。
何とか動いたのだが・・・(動画)
何故かPWM値を127にしたら右前進しか動かない。へんじゃろ
配線がまた切れたのかとテスターを持ち出す。確かに右モータしか電圧がかかっていない。
arduinoからの出力ピン(8)をモータードライブ基盤の別入力へ差し替えると、そのモータだけは動く。へんじゃろ!
しばし悩んだゾ
PWM出力値を511に戻すもダメ
ところがPWM値を1023にしただけで、な、な、なんと元通り動き出した。へんじゃろ!!
モータードライブ基盤がおかしいのかな。
HI/LOで動かすのが吉かも。わからんね
================
const int A1A = 8;
const int A1B = 9;
const int B1A = 11;
const int B1B = 10;
int r_speed = 700; // 511以下では動作不良を起こした。なぜ?
int l_speed = 700;
void setup() {
pinMode(A1A, OUTPUT);
pinMode(A1B, OUTPUT);
pinMode(B1A, OUTPUT);
pinMode(B1B, OUTPUT);
}
//--------停止----------
void stop(){
analogWrite(A1A,0);
analogWrite(A1B,0);
analogWrite(B1A,0);
analogWrite(B1B,0);
}
//--------後退系----------
void r_backward(){
analogWrite(A1A,r_speed);
analogWrite(A1B,0);
}
void l_backward(){
analogWrite(B1A,l_speed);
analogWrite(B1B,0);
}
void back(){
r_backward();
l_backward();
}
//--------前進系-----------
void r_forward(){
analogWrite(A1A,0);
analogWrite(A1B,r_speed);
}
void l_forward(){
analogWrite(B1A,0);
analogWrite(B1B,r_speed);
}
void forward(){
r_forward();
l_forward();
}
//------その場で回転-------
void turn_r(){
r_backward();
l_forward();
}
void turn_l(){
r_forward();
l_backward();
}
void loop() {
forward(); delay(2000); stop(); delay(2000);
back(); delay(2000); stop(); delay(2000);
turn_r(); delay(2000); stop(); delay(2000);
turn_l(); delay(2000); stop(); delay(2000);
}