こんにちは、「メカのりまき」です。
この記事では、「Arduino IDE」でスケッチ(プログラム)を作成し、ボード内にあるLEDを点滅させるということを行いたいと思います。
まだ、「Arduino IDE」をインストールしていないという方は、前回の記事でインストール方法を説明していますので、是非、ご覧になってください。
目次
本記事で使用するもの
本記事で私が使用している物は以下の通りです。
- 「Arduino IDE2.2.1」をインストールしたPC(Windows11)
- USBケーブル
- Arduino Uno R3(ELEGOO UNO R3でも可)
「Arduino IDEのバージョンやOSの違いによって、画面構成や手順が異なる部分が出てくると思われますので、ご注意ください。
また、「Arduino Uno R3」の互換ボードであれば、「ELEGOO UNO R3」以外のボードでも、本記事と同様な手順で動作可能だと思われますが、動作検証はしていないので、その点はご了承ください。
スケッチ(プログラム)の役割
「Arduino Uno R3」を見ると回路や部品を繋げるための穴が沢山あり、その中には0~13の数字やA0~A5と書かれたものがあると思います。
「Arduino Uno R3」では、脇に0~13の数字が書かれたものを「デジタル入出力ピン」、A0~A5と書かれたものを「アナログ入力ピン」と呼び、これらのピンの入出力を制御することで、外部の部品を動かしたり、データを読み取ったりすることができます。
そして、それらのピンの入出力を制御するのが、スケッチ(プラグラム)です。
また、スケッチをArduinoボードに転送することを、スケッチを書き込むと言います。
ボード内のLEDを点滅させる
上記の説明の通り、スケッチはピンの入出力を制御するものです。
なので、基本的に、ピンと外部の部品を接続していなければ、スケッチを書き込んでも、変化を見ることはできません。
しかし、「Arduino Uno R3」の、デジタル入出力ピン13にはLEDが搭載されていて、外部の部品と接続しなくても、LEDの点灯で動作確認をすることができます。
今回はこの13番ピンの出力を制御するスケッチを書き込むことで、以下の動画のように、ボード内のLEDを点滅させるということを行いたいと思います。
(ボードによっては、すでにスケッチが書き込まれており、LEDがゆっくり点滅している場合があります。)
Arduinoボードを接続する
Arduinoボードにスケッチを書き込むには、しっかりとPCに接続されていることが必須なので、まずは、接続方法について説明します。
まず、スケッチを作成し書き込むためのソフトである「Arduino IDE」を起動させます。
その後、ArduinoボードとPCを下の写真のように、接続します。
すると、Arduinoボード上のONと書かれたLEDが点灯します。
この時点で、LEDが点灯していない場合は、USBケーブルがしっかりと接続されているか、確認してみてください。
次に、「Arduino IDE」の画面で上のほうにある「ボードを選択」の部分をクリックします。
ここで、「Arduino Uno」,「COM~」という表示があればそれを選択します。
これで、Arduinoボードの接続は完了です。
上記の表示がない場合
以下に書いてあることを試してみてください。
一度、Arduinoボードを抜いた後、上記と同じように「ボードを選択」の部分をクリックし表示を確認します。
次に、もう一度、Arduinoボードを接続した後、同じ部分をクリックし表示を確認します。
このとき、「不明」,「COM~」という表示が追加された場合は、以下の手順で書き込みができる可能性があります。
(以下の方法は、接続しているボードが「Arduino Uno R3」の互換ボードであることを前提としています)
先ほど表示された「不明」、「COM~」の部分をクリックすると以下の画面が表示されるため、ボードの部分を「Arduino Uno」と選択し、「OK」ボタンをクリックします。
一応これで、接続完了のはずです。
なお、上記の手順で、何も表示が追加されず、ArduinoボードのLEDが点灯している場合は、PCがボードを認識するための「ドライバ」というものが、インストールされていない可能性があります。
適切な「ドライバ」のインストールはボードによって異なるため、この記事で解決方法を記述することはできませんが、「ボードの名前 ドライバ 認識しない」などと調べれば、解決策が見つかるかもしれません。
スケッチの作成をする
次に、スケッチの作成方法について説明したいと思います。
以下のスケッチを「Arduino IDE」の画面内に入力していきます。(コピー&ペーストでも可)
ここで、文を入力する際は基本的に全角文字を使用せず、半角文字を使用します。
ただし、「/*」、「*/」で囲まれた文や、頭に「//」と付いた文については、全角文字を使用することができます。
それ以外の場合で、全角文字があった場合は、エラーの原因になってしまうので注意してください。
全角スペースがあった場合も、エラーになってしまいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/* Arduinoで遊ぼう(3,スケッチ); 2023/11/01 blink_test スケッチの詳細はこちら↓ https://mecha-norimaki.com/arduino_start_03/ 2023/11/01 コメントを追加しました。 */ //Arduinoが起動した後、一度だけ実行される void setup() { //13番ピンを出力ピンとして設定する(LEDを点灯させるための準備) pinMode(13,OUTPUT); } //Arduinoが起動している間、繰り返し実行される void loop() { //13番ピンの出力を「HIGH」にする(LEDが点灯) digitalWrite(13,HIGH); //200ミリ秒(0.2秒)待機する delay(200); //13番ピンの出力を「LOW」にする(LEDが消灯) digitalWrite(13,LOW); //200ミリ秒(0.2秒)待機する delay(200); } |
上記のスケッチの入力が終わりましたら、画面左上にあるチェックのアイコンをクリックします。
ここでは、スケッチの内容をArduinoボードが理解できるように、機械の言葉に翻訳する作業「コンパイル」が行われます。
少し待機すると、画面下に出力画面が現れ、文字が追加されます。
ここで、下の写真のように、白い文字が表示されていれば、正しいスケッチが書けており、スケッチを書き込むことができる状態です。
もし、赤い文字が表示された場合は、スケッチが正しく書けておらず、スケッチが書き込めない状態です。
以下にエラーの例を示すので、確認してスケッチを直してください。
スケッチを書く上でのルールについても、少しだけ説明しているので、今回エラーが表示されなかった方も一緒に見ておくことをお勧めします。
スペルのミス
Arduinoのスケッチでは、あらかじめ決められた文以外のものを書いてしまうとエラーが発生します。
下の写真は23行目の「digitalWrite」を「degitalWrite」と書き間違えたときの例です。
エラーの行が赤く表示され、出力画面には、「そんな文字宣言されてないよ」と表示されます。
単純なスペルのミスだけではなく、大文字、小文字の違いも、このようなエラーが出るので気を付けてください。
セミコロン( ; )が抜けている
Arduinoのスケッチでは、一つの文の最後にセミコロン( ; )を付けるというルールがあります。
下の写真は23行目の「digitalWrite」の後のセミコロン( ; )を抜いたときの例です。
エラーの下の行が赤くなり、出力画面ではセミコロン( ; )が抜けているのではないかと表示されます。
今回の場合、エラーの行ではなく、エラーの下の行が赤く表示されました。
このような、例はとても多いので、エラーが起きたときは、赤くなっている行だけではなく、その付近の行、特にエラーの上を確認すると直すべき箇所が見つかるかもしれません。
複数のエラー表示
下の写真は20行目の「void loop()」の後の「 { 」を抜いたときのエラーです。
この例では、一行しかミスをしていないのに複数の行が赤く表示されました。
単純にすべての行が間違っていることもありますが、このような場合は、エラーの文をカッコで囲っている文や、赤く表示された行の中で一番上の行付近を確認すると直すべき箇所が見つかるかもしれません。
「arduino:avr」が見つからない
「arduino:avr」は「Arduino IDE」を最初に立ち上げた際に、インストールされるはずなので、このエラーが起きることはあまりないと思いますが、エラーが起きた際の対策を説明しておきます。
まず、画面左の方にあるボードのアイコンをクリックします。
すると「ボードマネージャ」というものが開くので、その中から「Arduino AVR Boards」を探してインストールをクリックします。
ここで、インストールをクリックすると管理者権限が求められます。
自分がPCの管理者でない場合は、管理者の人と一緒にやるかパスワードを聞いておいてください。
インストールが終わりましたら、もう一度ボードのアイコンをクリックして「ボードマネージャ」を閉じます。
無事インストールができれば、もう一度コンパイルをした際に、「arduino:avr」が見つからないというエラーはなくなります。
スケッチを書き込む
スケッチのコンパイルが成功しましたら、次はいよいよボードへの書き込みを行います。
画面左上にある矢印のアイコンをクリックします。
このアイコンをクリックすると、スケッチをコンパイルした後、ボードへの書き込みが行われます。
ボードに書き込みを行う前に、コンパイルを行ってくれるので、この矢印アイコンだけでエラーのチェックとスケッチの書き込みを行うことができます。
なので、ボードに書き込みをしないで、エラーのチェックだけを行いたいときはチェックのアイコン、エラーのチェックの後ボードへの書き込みを行いたいときは矢印アイコンというふうに使い分けることができます。
矢印アイコンをクリックした後、右下に書き込み完了というポップアップが表示されれば、スケッチの書き込みは完了です。
書き込みができない場合は、もう一度接続を確認してみてください。
正しいスケッチが書き込めた場合、先程の動画のように、13番のLEDが素早く点滅するのが確認できると思います。
スケッチの書き込みが成功したのに、LEDが点滅していない場合は、「13」という数字が間違っていないか、「digitalWrite」の中身が二つとも「HIGH」または「LOW」になっていないか、「delay」が二つあり中の数値が「200」になっているかどうかなどを確認してみてください。
スケッチの解説
では、今回書いたスケッチがどのような役割を果たしているか一つ一つ説明していきたいと思います。
コメント
スケッチの中に、「/*」、「*/」で囲まれた文や、頭に「//」と付いた文がいくつか存在していると思います。
1 2 3 4 5 6 7 8 9 10 11 12 |
/* Arduinoで遊ぼう(3,スケッチ); 2023/11/01 blink_test スケッチの詳細はこちら↓ https://mecha-norimaki.com/arduino_start_03/ 2023/11/01 コメントを追加しました。 */ //Arduinoが起動した後、一度だけ実行される |
それらは、「コメント」というもので、Arduinoの動作に影響を及ぼさない文です。
なので、一生懸命書いてくれた人には申し訳ないのですが、これらの文を消したとしてもArduinoの動作は変わりません。
「コメント」は今回のようにスケッチにメモを残したいときによく使用されます。
一人でスケッチを書く場合は、別に書かなくても良いと思うかもしれませんが、昔書いたスケッチで、なんでこんな処理をやっていたか思いだせないということは結構あるので、こまめにコメントを残しておくとそういう時に助かります。
「コメント」を使用したいときは、今回のスケッチのように、文を「/*」、「*/」で囲ったり、文の頭に「//」を付けたりします。
コメントとして書いた文は、全角文字を使用していてもエラーは起きないので、日本語を扱うことが出来ます。
void setup()
スケッチの13行目に、「void setup()」という文と、その後に「 { 」、「 } 」で囲まれた文があります。
12 13 14 15 16 17 |
//Arduinoが起動した後、一度だけ実行される void setup() { //13番ピンを出力ピンとして設定する(LEDを点灯させるための準備) pinMode(13,OUTPUT); } |
この「void setup()」の後の「 { 」、「 } 」で囲まれた文(上記の例だと「pinMode(13,OUTPUT)」)は、Arduinoの電源をいれるか、リセットされた際、初めに一回だけ実行されます。
今回は、「 { 」、「 } 」で囲まれた文が、「pinMode(13,OUTPUT)」の一つしかありませんが、囲まれた文が、複数ある場合は上から順番に処理が行われます。
この「void setup()」はArduinoの処理に必須であり、これがないとコンパイル時にエラーが起きます。
(「 { 」、「 } 」の間が空の場合、エラーは起きません)
pinMode()
先程の「void setup()」の中に、「pinMode(13,OUTPUT)」という文があります。
15 16 |
//13番ピンを出力ピンとして設定する(LEDを点灯させるための準備) pinMode(13,OUTPUT); |
この文は、13番ピンを出力ピン(電圧信号を出すピン)として、設定するということを行っています。
「void setup()」の中に、書かれているため、一番初めに13番ピンの設定を行い、それ以降は実行されないようになっています。
void loop()
スケッチの20行目には、「void loop()」という文と、その後に「 { 」、「 } 」で囲まれた文があります。
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
//Arduinoが起動している間、繰り返し実行される void loop() { //13番ピンの出力を「HIGH」にする(LEDが点灯) digitalWrite(13,HIGH); //200ミリ秒(0.2秒)待機する delay(200); //13番ピンの出力を「LOW」にする(LEDが消灯) digitalWrite(13,LOW); //200ミリ秒(0.2秒)待機する delay(200); } |
この「void loop()」の後の「 { 」、「 } 」で囲まれた文は、上記で説明した「void setup()」の後、上から順番に実行されます。
そして、一番下の文(上記の例だと「delay(200)」)が実行されると、一番上の文(上記の例だと「digitalWrite(13,HIGH)」)に戻り、Arduinoの電源が入っている間、ずっと処理を繰り返します。
こちらも「void setup()」と同じく、Arduinoの処理に必須でこれがないとエラーが起きます。
(「 { 」、「 } 」の間が空の場合、エラーは起きません)
digitalWrite()
先程の「void loop()」の中に、「digitalWrite(13,HIGH)」、「digitalWrite(13,LOW)」という文があります。
22 23 |
//13番ピンの出力を「HIGH」にする(LEDが点灯) digitalWrite(13,HIGH); |
28 29 |
//13番ピンの出力を「LOW」にする(LEDが消灯) digitalWrite(13,LOW); |
「digitalWrite(13,HIGH)」は、13番ピンの出力(電圧)をHIGHにするというものです。
これにより、13番のLEDを点灯させることができます。
また、「digitalWrite(13,LOW)」は、13番ピンの出力(電圧)をLOWにするというものです。
これにより、13番のLEDを消灯させることができます。
delay()
先程の「void loop()」の中に、「delay(200)」という文が2つあります。
1 2 |
//200ミリ秒(0.2秒)待機する delay(200); |
この文は、()内の秒数の間、Arduinoを待機させることができます。
単位はミリ秒となっていて、()の中身が1000で1秒待機させることができます。
よって、今回の場合は、「delay(200)」なので、0.2秒待機するということになります。
まとめ
上記では一つ一つの処理の説明をしました。
そして、今回のスケッチを図でまとめると以下のような感じになります。
スケッチの説明は以上となります。
スケッチの保存
最後に作成したスケッチの保存について、説明します。
保存方法
「ファイル」タブをクリックした後、「Save」または「名前を付けて保存」をクリックしてください。
(もしくは、ショートカットキー「ctrl + S」)
その後、ファイルの名前を入力し保存します。
保存の設定
デフォルトの設定では、一度保存したスケッチに変更を加えると自動的に上書き保存されるようになっています。
任意のタイミングで、保存したい場合は以下の設定を行ってください。
「ファイル」タブをクリックした後、「基本設定」をクリックしてください。
「自動保存」のチェックを外して、「OK」をクリックします。
また、デフォルトの保存先はWindowsの場合、「ドキュメント」内の「Arduino」というフォルダになっています。
特に理由がない場合は、このフォルダ内に保存することをお勧めしますが、何らかの理由で保存先の設定を変更したい場合は、先ほどの「基本設定」で以下の赤枠部分で保存先を指定して「OK」をクリックすると変更することができます。
終わりに
今回のスケッチについて、ご理解いただけたでしょうか。
今回あまり理解いただけなかった方も、何回かスケッチを書いていく内にルールを理解していけば、問題ありません。
これからの「メカのりまき」の記事を読み、理解を深めていただければ幸いです。
余裕のある方は、delay(200)の中の数値を変えてみてください。
すると、待機時間が変更され、LEDの点滅速度が変化するといった現象をみることができます。
次回の記事では、PCとArduinoボード間で通信を行う際に利用する「シリアル通信」について説明したいと思います。
本記事はここまでです。ご清覧ありがとうございました。
広告
楽天モーションウィジェットとGoogleアドセンス広告です。
気になる商品がございましたら、チェックをしてみてください。