に投稿

リモコンを使う -はじめてシールド(11)

最後にリモコンを使ってみます。リモコンの信号を受信するのは左下の3本足の部品です。リモコンを使用する際にはボタン電池(CR2025)を入れてください。
リモコンを使うためにブロックを追加します。「ブロック設定」の黄色ボタンを押して「COG」にチェックを入れてください。リモコン関連のブロックは、「COG」> 「マイクロサウルス」のなかにあります。

作成するのはリモコンでLEDをON/OFFするプログラムです。”1″ボタンでON、”2″ボタンでOFFです。

「赤外リモコン受信チェック」ブロックで信号が来たかどうかをチェックし、受信があればそのデータが「受信データ」ブロックに入ります。
リモコンボタンに対するデータは下記のようになっています。
0: 22
1: 12
2: 24
3: 94
4: 8
5: 28
6: 90
7: 66
8: 82
9: 74

はじめてシールド チュートリアル(10) <=

に投稿

サーボを駆動する -はじめてシールド(10)

9.1 サーボの使い方

メカ部品を使ってみましょう。サーボ(RCサーボと呼ばれます)はラジコン飛行機や歩行ロボットなどに使われ、与えた信号に応じて指定した角度にアームを回してそこで保持してくれます。回転させたり、保持したりする力をトルクといいます。

サーボを基板にねじ止めして、コネクタを向きを間違えないように挿します。黒線(茶色の場合もあります)がGND側です。信号線はArduinoの3番端子に接続されています。また、サーボやその他のモーター類を使う場合はUSBケーブルでは電流が足りなくなりますので、Arduinoに外部電源を供給してください。ACアダプターや乾電池(6V以上)を使います。またサーボをコントロールする信号線はLEDで明るさを変えたときと同様にPWM信号を使いますので、3、5、6、9、10、11番端子のみが使用可能です。出力軸の動きがよく見えるようにアーム(サーボホーンと呼ばれる)を取り付けておいてください。

一般的なサーボは角度で90度の位置を中心としてプラスマイナス90度(0度~180度)の範囲で駆動できるとなっていますが、実際は20度から160度ぐらいと思っておいたほうが良いでしょう。
まずはサーボをセンターの90度の位置に駆動するプログラムです。「ワークスペースをクリア」して「サーボ」から「サーボセット」と「サーボ駆動」のブロックを配置してください。「サーボセット」のid#のドロップダウンリストで「servo1」などと名前を付けて、ピンに「3」を接続してください。合わせて「サーボ駆動」のブロックも「servo1」に変更します。

「サーボセット」は最初に1回だけ実施、「サーボ駆動」は繰り返し実行されます。Arduinoボードに書き込んで実行します。サーボのアームが90度の位置に駆動されて止まります。(新品のサーボを使った場合は最初から90度位置になっているので動かないこともあります。)止まった後もその位置を維持するように「サーボ駆動」ブロックが繰り返し実行されています。(少し指で押してみましょう。)

次はサーボアームの往復運動です。サーボ関連のブロックは右クリックで「横方向」に変更しています。

試しに「待つ」の時間を2000や3000に変えてみてください。動いて休んで、動いて休んでのようになったと思います。現状では「待ち」の時間に関係なく、サーボが最速で目標角度に到達しようとしているためです。プログラムを改造してサーボをゆっくり動かしてみましょう。
(5)でLEDの明るさを徐々に変化させたプログラムを再利用します。現在のワークスペースをそのままにして「プロジェクトを開く」ボタンで、第5章で保存した「ba05.B@」を開きます。「現在のブロックと置き換えますか」と出ますので「いいえ」を押します。

上図を元にして使わないブロックを削除しながら下図のように作り直してください。
サーボ角度は60~120の範囲に、「待つ」時間は50ミリ秒に変更しています。

うまくいきましたら「プロジェクトを保存」で「ba10-1.B@」として保存してください。

9.2 超音波センサーとサーボ

続いて超音波センサーとの連携です。サーボはモーターですから通常はいわゆる“力仕事”をするために使われますが、今回はセンサーの値を表示するメーターとして使ってみます。配線はそのままで、プログラムを改変します。サーボをゆっくり動かしたプログラムを表示した状態で、超音波センサーとLEDを連携したプログラム(ba08.B@)を開きます。「現在のブロックと置き換えますか」と出ますので「いいえ」を押します。

サーボを往復運動させていた部分は「サーボ駆動」ブロックを1個残して削除、「PWMピンに書き込む」ブロックの代わりに「サーボ駆動」ブロックを配置します。さらに変数「isIncreasing」は使わないので初期化のブロックを削除、「pwmVal」の範囲を制限している部分は、「それ以外でもし」を追加して角度の範囲を20から160とします。

Arduinoボードに書き込んで実行してみましょう。障害物との距離によってサーボのアームが反応して動くことを確認してください。距離が遠い場合には不安定に動くこともありますが、これはセンサーの値自体が変動しているためです。
「ba010-2.B@」で保存しましょう。

はじめてシールド チュートリアル(9) <=
はじめてシールド チュートリアル(11) =>

に投稿 1件のコメント

ブザーを鳴らす -はじめてシールド(9)

8.1 ブザーで音階を鳴らす

ここまで各種の情報を表示するのにLEDを使ってきました。(9)ではブザーを使って音による表示を試します。ブザーには2種類あり、電圧を加えるだけで一定の音が鳴るタイプ(アクティブ)と、外部から音声信号を与えてその周波数に応じた音程を出すことができるタイプ(パッシブ)があります。今回使うのはパッシブタイプです。
+と刻印されているほうがArduinoの4番端子に、反対側がGNDに接続されています。

ブザーで単音を鳴らしてみます。「Arduino」> 「サウンド出力」のブロックを使います。ピンは「4」、周波数は「440」としてください。440Hz(ヘルツ)はドレミの「ラ」の音です。Arduinoボードに書き込んで実行すると、「ラ」の音が連続的になると思います。

周波数を変えて音を聞いてみましょう。数値が大きいほど高い音が鳴ります。880Hzが1オクターブ上の「ラ」です。例としてドレミの音階を鳴らしてみます。

「ドレミファソラシド」が繰り返し鳴ります。
また、ここで「配列」というものを紹介しておきます。上の例では「サウンド出力」~「待つ」を7回繰り返していて見た目が冗長です。周波数の値をひとつのまとまり(配列)として表現してみます。「配列」の中から「宣言」と「要素で作成」のブロックを使って図8-4のように配列(リスト)を作成してください。名前は「sndFreqList」としました。型は小数点があるので「Decimal(小数)」を選んでください。配列の要素は歯車マークで7個に増やします。要素には番号がふられていて、0番要素が261.626、… 6番要素が493.883となります。

音を鳴らす部分は、「繰り返し」のブロックを使います。周波数のところには、「配列」の中から「要素を取得」ブロックを持ってきて「sndFreqList」の「i」番目の要素を指定します。「i」は配列の要素番号を数えるための変数です。この繰り返しブロックの中のみで使われます。
前回同様にブザーが「ドレミファソラシド」を繰り返すことを確認してください。プログラムがかえってわかりにくくなった!と言われそうですが、もう少し複雑なプログラムになってきた場合、同じ処理(この場合「サウンド出力~待つ」)をプログラム中にだらだらと書かないように気を付けることが大切です。
「プロジェクト保存」ボタンで、「ba09-1.B@」として保存してください。

8.2 超音波センサーとブザー

それでは超音波センサーとブザーを連動させてみます。 いったん「ワークスペースをクリア」して「ドレミ」のプログラムを消してください。その後「プロジェクトを開く」ボタンで「bb08.B@」を開いてください。「PWMピンに書き込む」ブロックを削除して、代わりに「サウンド出力」ブロックを接続します。さらに、パルスを10で割っているところを「1」に変更、255でリミットをかけているところを削除してください。また変数名「pwmVal」の意味が違っていますので気になる方は新しく変数「sndFreq」を作って変更してください。

障害物との距離に応じて音程が変わることを確認してください。
 「プロジェクトを保存」ボタンで「ba09-2.B@」で保存してください。

はじめてシールド チュートリアル(8) <=
はじめてシールド チュートリアル(10) =>

に投稿 1件のコメント

超音波距離センサーを使う -はじめてシールド(8)

(8)では超音波距離センサーを使います。超音波を発射してものに当たって跳ね返ってくるまでの時間を計って距離を知ります。自動車のバンパーについているものと同じ原理です。4本の端子の内2本はセンサーの電源(GND / VCC(5V))で、さらにTRIG(超音波の発射を指示する)とECHO(反射した超音波を受信して時間を計る)があります。TRIGはArduino端子をLOWからHIGHに変化させることで超音波発射のトリガーとなります。ECHOは超音波が発射されてから戻ってくるまでの間HIGHが出力されるようになっていますのでArduinoに入力してそのHIGH状態(パルス)の時間を計測します。TRIG:13番端子、ECHO:12番端子としています。

50ミリ秒ごとに超音波を発射してパルス幅を計測し、その結果でLEDの明るさを変えるプログラムです。距離が近いほど明るくなるようにしています。前半の「マイクロ秒経過後」は「Arduino」>「時間」の中にあるブロックを使います。このデジタルピン13をLOW > HIGH > LOWとしているところで超音波を発射していますが、やり方はセンサーの仕様で決まっていますのでここで悩まないようにお願いします。
その下の「パルス検出(us)」ブロックはECHOのパルス幅を計測してその結果が入ってきます。値が大きすぎるので10で割っています。計算方法も一応示しておきます。

 距離(cm) = 音速34500(cm/sec) x 時間(パルス幅(usec)/1000000)

10の値はLEDのPWM範囲0~255にうまく合致するように決めました。pwmValは255以上にならないようにリミットをかけています。「 > 」(より大きい)のブロックは「論理」の「 = 」(イコール)ブロックの記号を変更して使います。

プログラムをArduinoボードに書き込んで実行してみましょう。センサーの前に手をかざすと距離によってLEDの明るさが変わるはずです。超音波センサーがテーブルの反射を拾ってしまわないようにセンサーを少し上に向けるとよいでしょう。
「プロジェクトを保存」で名前(bb08.B@)を付けて保存します。

●練習問題
フルカラーLEDを使って、障害物との距離によって色が赤⇔緑に変化するようにしてください。
プログラム例

はじめてシールド チュートリアル(7) <=
はじめてシールド チュートリアル(9) =>

に投稿 1件のコメント

焦電センサーを使う -はじめてシールド(7)

焦電センサーは人体から発せられる赤外線の変化を検知するセンサーです。前を人が横切ったかどうかなどを知ることができます。また人体だけでなく、動物やその他の熱源等にも反応します。

使用するのはセンサー単体ではなく、周辺の回路が一体となったモジュールです。3つの端子があり、GND、センサー出力、電源(5V)となっています。センサー出力は通常LOW(0V)で、人体を検知すると数秒間HIGH(5V)となります。

●練習問題
人体を検知するとLEDが光るプログラムを作ってください。
基本的にタクトスイッチのときと同じです。
プログラム例

はじめてシールド チュートリアル(6) <=
はじめてシールド チュートリアル(8) =>

に投稿

センサーを使う -はじめてシールド(6)

(6)ではセンサーからのアナログ入力を扱います。Arduinoは直接的なアナログ出力はできませんが、アナログの入力はできます。AD(アナログ-デジタル)変換と呼ばれる方法で、A0~A5端子に加わった電圧を0-1023の値(10ビット)にして教えてくれます。0Vが0で、5Vが1023です。

6.1 可変抵抗の入力

センサーを使う前に可変抵抗(ボリューム)で実験します。可変抵抗の両端を0Vと5Vにつなぐと中央の端子にはつまみの位置に応じた電圧がでてきます。これをArduinoのA1端子に入れています。可変抵抗のつまみを回すとLEDの明るさが変わるようにしてみます。

アナログ入力の値は、「Arduino」 > 「入力」 > 「アナログ入力読み込み」を使います。本来ならこれを直接PWMの値として「PWMに書き込む」のブロックにいれたいところですが、PWMの値は0-255、アナログ入力値は0-1023ですので一度アナログ入力値を4で割ります。

Arduinoボードに書き込んで実行してみてください。ボリュームを回してLEDの明るさがきちんと変化すれば成功です。

6.2 明るさセンサーを使う

明るさセンサー(CdSセルと呼ばれる)は周囲が暗いと抵抗値が大きく、周囲が明るいと抵抗値が小さくなるという性質をもったセンサーです。センサーと直列につながった抵抗は、センサーの抵抗値の変化を取り出すために必要です。(1KΩを使いました。) センサーの抵抗値と固定抵抗の値の比によって、センサーと抵抗の接点部の電圧が変化しますので、これを読み取ることで明るさを調べることができます。

ボリュームの時と同じプログラムで入力端子を実行してみましょう。センサーを手で隠して暗くするとLEDも暗くなり、手を離すとLEDが明るくなればOKです。

●練習問題
周囲が暗くなるとLEDが点灯するようにしてください。

PWMピンに書き込む値を「255 – pwmVal」で反転しています。
原理的に電圧を取り出しているところが0Vや5Vに近い電圧にはなりませんし、LEDがPWM = 128程度でかなり光ってしまいますので、思い通りの明るさで光らせたり消したりするのは難しいかもしれません。

はじめてシールド チュートリアル(5) <=
はじめてシールド チュートリアル(7) =>

に投稿

LEDの明るさを変える -はじめてシールド(5)

(4)までの実験では、LEDはついているか消えているかの2通りの状態のみをとることができました。(5)ではLEDの明るさを変える方法を学びます。LEDの明るさを変えたいとき、考えられるのは抵抗値を変える、電圧を変える、という方法が思いつきますが、プログラムで抵抗を変えることはできませんし、Arduinoには端子に好きな電圧を出力するという機能はありません。このような場合一般的にはPWM(Pulse Width Modulation)という方法を用います。5V(HIGH)と0V(LOW)を高速(1秒間に数百回)で切り替えて疑似的に中間の電圧を作り出しているように見せる、というものです。LEDの場合で言えば、HIGHとLOWの時間が同じなら原理的には2.5Vで光らせたのと同じ明るさになります。

5.1 PWMを使う

Arduino UNOでPWMを利用できる端子は決まっていて、基板に印刷されたピン番号の横に”~”(チルダ)マークがついている3,5,6,9,10,11端子のみとなります。5番端子のLEDを使います。

「Blockly@rduino」で、「ワークスペースをクリア」ボタンを押して表示されているブロックを削除してから、「Arduino」> 「出力」 > 「PWMピンに書き込む_値_」のブロックを配置します。ピンは「5」、値は「128」とします。値は0から255の間で設定することができます。128はおよそ半分です。255という数値は2の8乗 = 256から来ています。(詳しく知りたい人は「2進数」を調べてみましょう。)

Arduinoボードに書き込んでください。LEDが多少暗めに点灯したと思います。

●練習問題
PWMの値をいろいろと変えてLEDの明るさが変化することを確認してください。

5.2 LEDの明るさを徐々に変える

PWMの値を0から255に向かって徐々に増加させてみます。「繰り返し」のブロックと、PWMの値を保持する変数「pwmVal」を使います。新しい変数「pwmVal」を作って型は「Number(整数16bit長)」とします。「繰り返し」の中から下図に示したブロックを選んでiをpwmValに変更、数値を設定します。pwmValの値を0から255に1ずつ増加しつつ、実行部分に接続したブロックを実行していきます。PWMピンに書き込む値もpwmValに変更します。「待つ(ミリ秒)」は時間調整用です。数値を大きくすると明るさがゆっくりと変化します。Arduinoボードに書き込んで実行してみてください。LEDが徐々に明るくなってすぐに消灯、を繰り返します。

次にLEDの明るさが最大になってからその後徐々に暗くなるように変更してみます。明るさが増大中か減少中かを区別する変数を追加します。「isIncreasing」というBoolean変数を作って初期値を「真」(増加中)としてください。isIncreasingが真ならpwmValが増加するブロックを実行、isIncreasingが偽ならpwmValが減少するブロックを実行です。カウントが終わったらisIncreasingの値を反転します。
実行して動作を確認してください。

「プロジェクトを保存」で名前(例:bb05.B@)を付けて保存します。

はじめてシールド チュートリアル(4) <=
はじめてシールド チュートリアル(6) =>

に投稿

スイッチを使う -はじめてシールド(4)

前回までは、Arduinoの端子に5V / 0V (HIGH / LOW)を出力してLEDを点けたり消したりしました。このような方法をデジタル出力と呼びます。有りか無しかの二通りしかありません。
今回は押しボタンスイッチ(タクトスイッチと呼ばれます)を使ってデジタル入力の実験をしてみます。Arduinoの端子に5Vが入ってくるか来ないかを調べて、その結果で何かをするというプログラムです。

4-1 スイッチを押している間LEDが点灯

スイッチは、図の上下方向は端子がつながっています。ボタンを押すと左右が導通します。
スイッチの回路(配線)は、5Vからスイッチ、抵抗(1KΩ)を介してGNDにつながっています。スイッチと抵抗の接点部分は、スイッチが押されていなければ電流が流れないので0V、スイッチが押されれば電流が流れて5Vと直結するので5Vとなります。これがArduinoのA3番端子につながっています。

それでは「Blockly@rduino」を開いてプログラムを作っていきます。内容としてはスイッチが押されてArduinoのA3番端子がHIGHならLEDを点灯、LOWならLEDを消すというものです。LEDは5番端子のものを使います。
このように何かの条件で実行内容を変えるような場合には、「論理」のなかの「もし~ 実行」ブロックを使います。「もし~ 実行」ブロックを配置したら、歯車マークをクリックして「それ以外」ブロックを「もし~」ブロックの下に接続し、また歯車マークをクリックして吹き出しを閉じます。

「もし~」のところには「A3番端子がHIGHなら」というフレーズが入り、「実行」には「デジタルピン5をHIGH」、「それ以外(A3番端子がHIGHではない)」には「デジタルピン5をLOW」を配置することになります。「A3番端子がHIGHなら」は「A3番端子の入力 = HIGH」ということで、「論理」の中から「 = 」のブロックを使います。2つの空白には、「Arduino」> 「入力」> 「デジタルピンの値を読む」(右側が凹になっているほう)ブロックと、「Arduino」> 「入力」> 「HIGH」ブロックが入ります。「デジタルピンの値を読む」ブロックの右側には、「数値」>「0」を接続して17と書き換えてください。A0~A5端子はアナログ入力ように用意されている端子ですが、デジタル入力としても用いることができます。その際A0=14、・・・A5=19として使ってください。

Arduino IDEにコードをコピーしてボードに書き込んで実行してみましょう。スイッチを押している間LEDが点灯すれば成功です。スイッチを押したり離したりすると一瞬でLEDが反応するのは図のブロックが非常に高速に繰り返し実行されているためです。

4-2 スイッチを押すとLEDのON/OFFが反転

続いては少し高度になります。LEDが消灯しているときにスイッチを押すと点灯し、点灯しているときにスイッチを押すと消灯する、というものです。(こういうのをトグル動作といいます。)LEDが点灯しているかどうかを覚えておけば良さそうです。このLEDの状態を入れておくために「変数」というものを使います。「Blockly@rduino」で「変数」から「変数を作成...」をクリックして「ledState」という名前をつけてください。(stateは状態の意味です。)「ledState」はその時々のLEDの状態(ON / OFF)を記憶しておくための書き換え可能なラベルのようなものです。

名前はなんでも構いませんがわかりやすいものにしてください。aとかbとかはダメです。あとでプログラムを見たときにわからなくなります。出てきたブロックの中から「変数を初期化_型_」と書かれたブロックをドラッグして配置します。

左側のドロップダウンリストで今作った変数名を選択、右側のドロップダウンリストで「Boolean(真偽値)」を選択します。Booleanは「真」と「偽」の2種類の状態を持つことができます。今回はLEDが点灯している状態を「真」、消灯している状態を「偽」とします。真と偽ですが、特に正しいとか間違っているとかの意味である必要はありません。右端には「論理」の中から「真」と書かれたブロックを持ってきて接続し、「偽」に変更して最初にLEDが消灯している状態にします。
なお、この「変数を初期化」のブロックは他のブロックとは接続せずに離しておく必要があります。最初に1回だけ実施すればよいからです。ここではわかりやすくするため「Arduino」の中の「初期設定_永久ループ」ブロックを使います。
次にLEDの点灯/消灯による場合分けをします。前回のブロックを再利用して「もしledStateが真なら」の部分を作ります。

スイッチが押されたら、のところも「もし~実行」のブロックを使います。このような構造を「入れ子」と呼びます。図を参考にしてブロックを完成させてください。

 スイッチが押されているか?
・押されている
LEDは点灯しているか?(ledStateは真か?)
  ・点灯している
> 消灯する & ledStateを偽に変更
  ・点灯していない
> 点灯する & ledStateを真に変更
 ・押されていない
   なにもしない

という感じです。
Arduinoボードにプログラムを書き込んで実行してみます。

どうでしょうか。うまくいかなかったのではないでしょうか。プログラムは非常に高速に繰り返し実行されるため、人間がスイッチを一瞬押したつもりでも「もし~」の部分が何度も実行されてLEDがついたり消えたりして、たまたま指を離したタイミングの結果が残ってしまうのです。

この対策として、もうひとつ「もし~実行」ブロックを外側につけてスイッチが押された瞬間をキャッチできるように変更します。スイッチが押されていない(端子2 = LOW)ことを確認して50ミリ秒後にスイッチが押されている(端子2 = HIGH)という事象をひろいます。50ミリ秒は短い印象ですが、プログラム実行中ほとんどの時間はここで待ち状態になっています。

プログラムを書き込んで実行してみましょう。ほぼ思い通りの動きをすると思います。今回の対策はかなり”雑”なもので、本来はもう少しきちんとしたプログラムを作る必要がありますが、とりあえずOKということにしましょう。

「プロジェクトを保存」ボタンで名前(ba04-2.B@)を付けて保存しておきましょう。

はじめてシールド チュートリアル(3) <=
はじめてシールド チュートリアル(5) =>

に投稿 1件のコメント

フルカラーLEDを光らせる -はじめてシールド(3)

フルカラーLEDを光らせてみます。フルカラーLEDの原理は単純で、R(赤)、G(緑)、B(青)3色のLEDをそれぞれ点灯、消灯させることでいろいろな色を表現します。ここでは3色のON/OFFで、2 x 2 x 2 = 8色を光らせてみます。

対応するArduinoの端子は、R(赤)#11、G(緑)#10、B(青)#9 となっています。プログラムは、8通りのすべての組み合わせを順番に実施しています。

8色(消灯を含む)が順番に光れば成功です。
ここでLEDとArduino端子の間に入っている抵抗について少し説明しておきます。これらの抵抗はLEDに流れる電流を制限(調節)するために入っています。抵抗がないと電流が流れすぎてLEDが破損してしまいます。本基板の場合、330Ωの抵抗がついています。

* 抵抗値の決め方(参考)
LEDと直列に入れる抵抗値を決めるには、電源電圧(5V)、LEDの順方向電圧(通常2V程度)、LEDに流す電流(10mAとします)からオームの法則で計算します。
電圧 = 抵抗 x 電流
5(V) = 2(V) + R(Ω) x 0.01(A)
R = 300

はじめてシールド チュートリアル(2) <=
はじめてシールド チュートリアル(4) =>

に投稿

LEDを光らせる -はじめてシールド(2)

ここからはいよいよ電子工作とプログラミングの世界に入っていきます。まず最初はLEDを光らせたり消したりをプログラミングしていきます。LED関連の回路(配線)を確認してください。LEDは抵抗(小さな黒い部品)をはさんでArduinoの端子(5~8)と、反対側はGNDにつながっています。GNDは乾電池のマイナス側と同じ意味で、プログラムでArduinoの端子に電圧がでるようにすると電流が流れてLEDが光ります。

プログラミングの準備をします。パソコンのブラウザで
 https://www.meuse.co.jp/Blockly-at-rduino/
にアクセスして「Blockly@rduino」の画面を開きます。
最初は英語の表記になっていますが難しくありませんので慣れていきましょう。

まず全体の設定をします。「Project Setup」の赤いボタンを押して現れたウィンドウで「Language」をJapaneseに、「Board」で”Arduino/Genuino UNO”を選んでOKを押します。アラートがでたらまたOKを押します。表示が日本語になります。

もう一つ、プログラミングで使用するブロックの設定をします。左側の黄色のボタン「Configure Blocks」を押して開いたウィンドウで、上のドロップダウンリストから「アルデュイーノ全て」を選び、「配列」、「文字
」、「Arduino」と「サーボ」にチェックを入れて「OK」します。

以上で準備は終わりです。5番端子につながっているLED(LED5)を光らせるプログラムを作っていきましょう。左側のブロックの中から「Arduino」>「出力」>「デジタルピン__を設定__」のブロックを選んで右のエリアにドラッグ&ドロップします。ピンを5に、ドロップダウンリストからHIGHに設定します。


LEDを光らせるプログラムはこれだけです。デジタルピン5というのはLEDがつながっている5番端子のことで、HIGHはここに5Vの電圧を出す(出力する、と言います)という意味です。デジタル回路では、電圧(Arduino UNOの場合5V)がかかっている状態をHIGH、電圧がかかっていない状態をLOWと表現します。
それではArduinoボードにこのプログラムを書き込んでみましょう。デスクトップのアイコンをダブルクリックしてArduino IDEを開いてください。メニューの「ツール」のボードで「Arduino/Genuino Uno」を、シリアルポートでメイン基板がつながっているポートを選択します。

次に「Blockly@rduino」上で右上のメガネのマークをクリックして、生成されたソースコードを表示させます。

ソースコード画面の右角の黄色マークをクリックしてソースコードをコピーします。これをArduino IDEに持っていき、すべて上書きで貼り付けます。(Arduino IDE画面を一度クリックしてから、Ctrl+A(すべて選択)> Ctrl+V(貼り付け)でもOKです。)

Arduino IDEの右矢印ボタンでプログラムをArduinoボードに書き込みます。ファイルの保存について聞かれますので「myprogram」などの名前で保存してください。

LEDが点灯すれば成功です。今回デジタルピン5を「HIGH」に設定したところを「LOW」にすれば、5番ピンに電圧を出さない(0V)ということでLEDが消灯します。

ここでいったん中断する場合は、「Blockly@rduino」画面左側の「プロジェクトを保存」ボタンを押して「ba2-1.B@」と名前を付けて保存しておきましょう。「B@」という拡張子がつきます。次回開くときは、「プロジェクトを開く」ボタンです。

●練習問題
端子6、7、8をHIGHにして他のLEDを点灯させてください。

続いてLEDを点滅させてみましょう。少しプログラミングっぽくなってきました。前回の「デジタルピン_5_を設定_HIGH」にブロックを追加していきます。「Arduino」 > 「時間」 > 「待つ(ミリ秒)」ブロックをドラッグして「デジタルピン_5_を設定_HIGH」の下にくっつけます。

同様に続けて「デジタルピン_5_を設定_HIGH」〜「待つ(ミリ秒)」が2段重ねになるようにしてください。(ブロックを右クリックして「複製」でもOKです)
 最後に下の「デジタルピン_5_を設定_HIGH」の設定をLOWに設定します。以上が今回のプログラムです。ちなみにブロックを削除したいときは、右下のゴミ箱か、左のブロックのエリアにドラッグします。

前回と同じ方法でArduinoボードにプログラムを書き込んで実行してみてください。LEDが1秒おきに点滅すれば成功です。
「待つ(ミリ秒)」は数字で設定したミリ秒(1/1000秒)の間、何もしないで待つというブロックです。今回は数値が1000となっていますのでLEDが光っていれば1秒間光り続け、光っていなければ1秒間光らずにいます。
 ということでやっていることは、LEDを1秒間点灯しその後1秒間消灯する、ということになります。なお、ここで作ったプログラムは何もしなければ永遠に繰り返し実行されます。一番下のブロックを実行した後、また一番上のブロックに戻ります。

●練習問題
LEDを0.5秒おきに点滅させてください。

●練習問題
LEDの光が流れるようにしてください。
プログラム例

はじめてシールド チュートリアル(1) <=
はじめてシールド チュートリアル(3) =>