使ったもの
以前の記事のものと大体は同じ。
- ダブルギヤボックス 左右独立4速タイプ
- Arduinoをはじめようキット
- RPR-220(フォトリフレクタ)×二個
※今はamazonでは品切れなので秋月電子のフォトリフレクタを紹介する。
フォトリフレクタ(反射タイプ)LBR−127HLD(10個入): 半導体 秋月電子通商 電子部品 ネット通販
- 330Ω抵抗×二個
※抵抗はいろいろ必要なので以下のリンクからごそっと買うのがいいかも。
1/4W カーボン抵抗(Ω順): 特設ページ 秋月電子通商 電子部品 ネット通販※10kΩ抵抗はArduinoをはじめようキットに二個入ってます。
RPR220(フォトリフレクタ)とArduinoでモーターを制御する。 - つくったブログ
曲がるジャンパワイヤを多めに用意した方がいいかも。
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
回路図
つなぎかたも大体同じ。
- TA7291P(左)
1 | GND |
2 | モーターA(+) |
3 | 非接続 |
4 | Pin11 |
5 | Pin10 |
6 | Pin6(PWM) |
7 | 5V |
8 | 電池(+) |
9 | 非接続 |
10 | モーターA(-) |
- TA7291P(右)
1 | GND |
2 | モーターB(+) |
3 | 非接続 |
4 | Pin9 |
5 | Pin8 |
6 | Pin5(PWM) |
7 | 5V |
8 | 電池(+) |
9 | 非接続 |
10 | モーターB(-) |
スケッチ
// センサに応じて左右のモーターを回転 const int motorA = 11; const int motorB = 10; const int PWM_motAB = 6; const int motorC = 9; const int motorD = 8; const int PWM_motCD = 5; // led const int ledA = 13; const int ledB = 2; // フォトトランジスタ const int sensorA = 2; const int sensorB = 3; // センサから読み取った値(analog) int valA = 0; int valB = 0; // 閾値 int alpha = 100; void setup(){ pinMode(motorA,OUTPUT); pinMode(motorB,OUTPUT); pinMode(motorC,OUTPUT); pinMode(motorD,OUTPUT); pinMode(PWM_motAB,OUTPUT); pinMode(PWM_motCD,OUTPUT); pinMode(ledA,OUTPUT); pinMode(ledB,OUTPUT); Serial.begin(9600); } void loop(){ //ledは常にONにしておく digitalWrite(ledA,HIGH); digitalWrite(ledB,HIGH); delay(10); valA = analogRead(sensorA); valB = analogRead(sensorB); //シリアルポートに読み取った値を表示させる Serial.print(valA); Serial.print(" "); Serial.println(valB); if (valA > alpha && valB > alpha){ //左、右ともに白なら直進 digitalWrite(motorA,HIGH); digitalWrite(motorB,LOW); analogWrite(PWM_motAB,120); digitalWrite(motorC,HIGH); digitalWrite(motorD,LOW); analogWrite(PWM_motCD,120); }else if(valA <= alpha && valB > alpha){ //左が黒、右が白ならに左へ旋回 digitalWrite(motorA,LOW); digitalWrite(motorB,LOW); digitalWrite(motorC,HIGH); digitalWrite(motorD,LOW); analogWrite(PWM_motCD,130); }else if(valA > alpha && valB <= alpha){ //左が白、右が黒ならに右へ旋回 digitalWrite(motorA,HIGH); digitalWrite(motorB,LOW); analogWrite(PWM_motAB,130); digitalWrite(motorC,LOW); digitalWrite(motorD,LOW); }else{ digitalWrite(motorA,HIGH); digitalWrite(motorB,LOW); analogWrite(PWM_motAB,120); digitalWrite(motorC,HIGH); digitalWrite(motorD,LOW); analogWrite(PWM_motCD,120); } //モーターの動作を0.05秒つづける delay(50); }
- 前回のものから修正しました。
- 閾値はシリアルボードを見ながら適当な値に修正しましょう。エディタの右上の虫眼鏡アイコンをクリックすれば画面が出てきます。
動画
おわりに
次は外部電源で動作させます。
Arduinoをはじめよう 第2版 (Make:PROJECTS)
- 作者: Massimo Banzi,船田巧
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/03/16
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 27回
- この商品を含むブログ (11件) を見る