Arduino
PR

【Arduino初級】ロボットの速度調整!analogWriteの使い方を解説!

blog_admin
記事内に商品プロモーションを含む場合があります

Arduino入門編で車輪型ロボットを作った人や、教材などで車輪型ロボットを持っているという人は、ぜひ、これから始まる初級編でスキルを磨いて、ロボットの改造を楽しんでいきましょう!

これまで、動く/止まるの動作の組み合わせしかできなかったのが、この記事を読むことで速く動く/ゆっくり動く/おそ〜く動くなど、速さを調整することができるようになります!

機体の改造をしなくても、プログラミングのスキルが向上することで、その機体の性能を最大限に引き出すことができるようになります!

今回の記事で解説すること
  • ロボットの速度を調整できるanalogWriteの紹介
  • デジタルとアナログの違い
  • analogWriteを使ったロボットの速度調整が可能なプログラム
スポンサーリンク

解説動画

今回の記事はこちらの動画を解説したものです。

analogWriteの紹介

これまで主に使っていたdigitalWriteはHIGHとLOWの2パターンしか出力できませんでしたが、今回紹介するanalogWriteは、なんと、、、HIGHとLOWの間のパワーを出力することができるんです!
使い方は、下の図のように、digitalWriteにすごく似ています。
カッコの中に、ピン番号と、出力の強さ(パワー)を書くようになっています。
パワーの最大値は255で、この場合はdigitalWriteでHIGHを出力したのと同じ状態になります。また、最小値は0(ゼロ)で、この場合はdigitalWroteでLOWを出力したのと同じ状態になります。

デジタルとアナログの違い

せっかくdigital(デジタル)とanalog(アナログ)というキーワードがそろったので、それぞれについて、解説したいと思います!

まずはイメージしやすいように、下の図を作りましたので、それを見ながら、ものすごく簡単に表現すると、
デジタルON/OFF、5V/0V、光る/消える、動く/止まるなどの2つの状態で表現できるもの、
アナログは強〜弱のような強さを自在に調整できるものと考えておけばArduinoで使い分けることができると思います!

※正確にはanalogWriteで出力される信号は、アナログ電圧ではなくPWM(Pulse Width Modulation)信号です。気になる人は、調べてみて下さい。

analogWriteを使ったロボットの速度調整が可能なプログラム

Arduinoと市販のパーツで作る車輪型ロボットNR-02を使って、移動速度を調整するプログラムを作ってみましょう!

やりたいこと
  • スタートボタンを押すと1秒後に動き始める
  • 前進と後退を高速(255)、中速(160)、低速(80)の3パターンで繰り返す
  • 動作の間に停止を入れる
回路の情報
  • スイッチは8番につながっている
  • 左モータは6番(A)と9番(B)でコントロール
  • 右モータは5番(A)と3番(B)でコントロール

ピン番号に要注意!!

実は、analogWriteは全てのピンで使えるわけではないんです。。。
下の図のように、番号の横に「〜」が付いているピンだけがanalogWriteを使うことができます!

ソースコード

ソースコード全文です。
行数は多いですが、同じ動作の繰り返しで、パワーの数値が違うだけなので、コピペを活用して簡単に作れます(^^)

1void setup() {
2  //ピンの出力(Output)or入力(Input)設定
3  pinMode(6, OUTPUT);  //左モータA
4  pinMode(9, OUTPUT);  //左モータB
5  pinMode(5, OUTPUT);  //右モータA
6  pinMode(3, OUTPUT);  //右モータB
7  pinMode(8, INPUT);  //スイッチ
8
9  //スタートボタンを押されるのを待つ
10  while(digitalRead(8)==0);
11  delay(1000);  //1秒待つ
12}
13
14void loop() {
15  //高速前進
16  analogWrite(6, 255);  //左A
17  analogWrite(9, 0);  //左B
18  analogWrite(5, 255);  //右A
19  analogWrite(3, 0);  //右B
20  delay(1000);
21
22  //ブレーキ
23  digitalWrite(6, LOW);  //左A
24  digitalWrite(9, LOW);  //左B
25  digitalWrite(5, LOW);  //右A
26  digitalWrite(3, LOW);  //右B
27  delay(1000);
28
29  //高速後退
30  analogWrite(6, 0);  //左A
31  analogWrite(9, 255);  //左B
32  analogWrite(5, 0);  //右A
33  analogWrite(3, 255);  //右B
34  delay(1000);
35
36  //ブレーキ
37  digitalWrite(6, LOW);  //左A
38  digitalWrite(9, LOW);  //左B
39  digitalWrite(5, LOW);  //右A
40  digitalWrite(3, LOW);  //右B
41  delay(1000);
42
43  //中速前進
44  analogWrite(6, 160);  //左A
45  analogWrite(9, 0);  //左B
46  analogWrite(5, 160);  //右A
47  analogWrite(3, 0);  //右B
48  delay(1000);
49
50  //ブレーキ
51  digitalWrite(6, LOW);  //左A
52  digitalWrite(9, LOW);  //左B
53  digitalWrite(5, LOW);  //右A
54  digitalWrite(3, LOW);  //右B
55  delay(1000);
56
57  //中速後退
58  analogWrite(6, 0);  //左A
59  analogWrite(9, 160);  //左B
60  analogWrite(5, 0);  //右A
61  analogWrite(3, 160);  //右B
62  delay(1000);
63
64  //ブレーキ
65  digitalWrite(6, LOW);  //左A
66  digitalWrite(9, LOW);  //左B
67  digitalWrite(5, LOW);  //右A
68  digitalWrite(3, LOW);  //右B
69  delay(1000);
70
71  //低速前進
72  analogWrite(6, 80);  //左A
73  analogWrite(9, 0);  //左B
74  analogWrite(5, 80);  //右A
75  analogWrite(3, 0);  //右B
76  delay(1000);
77
78  //ブレーキ
79  digitalWrite(6, LOW);  //左A
80  digitalWrite(9, LOW);  //左B
81  digitalWrite(5, LOW);  //右A
82  digitalWrite(3, LOW);  //右B
83  delay(1000);
84
85  //低速後退
86  analogWrite(6, 0);  //左A
87  analogWrite(9, 80);  //左B
88  analogWrite(5, 0);  //右A
89  analogWrite(3, 80);  //右B
90  delay(1000);
91
92  //ブレーキ
93  digitalWrite(6, LOW);  //左A
94  digitalWrite(9, LOW);  //左B
95  digitalWrite(5, LOW);  //右A
96  digitalWrite(3, LOW);  //右B
97  delay(1000);
98}

動作確認

このプログラムでロボットを動かすと、こんな感じで動くと思います!

(↓動作確認のところから再生されます)

まとめ: 【Arduino初級】ロボットの速度調整!analogWriteの使い方を解説!

今回の記事では、車輪型ロボットの移動速度を調整する方法として、analogWriteを紹介して、それを使ったプログラムと動作確認までを解説しました!

ON/OFFだけでなく、強〜弱を扱うことができるようになり、これまでより細かい動作を実現できるようになりますね!!

今回の記事で解説したこと
  • ロボットの速度を調整できるanalogWriteの紹介
  • デジタルとアナログの違い
  • analogWriteを使ったロボットの速度調整が可能なプログラム

最後まで読んでいただき、ありがとうございました!
以上、CHAでした!

スポンサーリンク
ABOUT ME
CHA
「勉強に自由を!」をスローガンに、学校に限らず、好きな時に、好きな場所で、好きなことをYouTubeで勉強できるようになればいいなと思って授業動画を作っています!
記事URLをコピーしました