はじめに「Arduinoでプログラミング入門」シリーズの概要を説明します。最近はいろいろなところでプログラミングが話題になっています。Arduinoとはこのシリーズで使用する「Arduino」について説明します。前回の記事で、Arduinoは「電子工作とプログラミングが簡単にできるシステム」と説明しましたが、今回はこのシステムについて詳しく説明します。プログラミングとはプログラミングについて説明します。今までの記事では「プログラミング」や「プログラム」という言葉を使ってきましたが、具体的な中身がよくわからないままでしたよね。必要なもの(アプリ・電子部品類)基礎編(パート1とパート2)で必要なものをまとめます。今回はプログラミングアプリと電子部品類を説明します。〜基礎編〜」で必要なものを説明します。必要なもの(工具類)基礎編(パート1&パート2)で必要なものをまとめます。今回は工具類を説明します。今回は工具類を説明しますが、持っているものは活用して、足りないものだけ購入するようにしましょう。買い物リスト必要なものを買い物リストとしてまとめます。第4回と第5回の記事で必要なものを一通り説明しました。今回は買い物リストとしてまとめておきます。買い物リストでは、参考として秋月電子通商の通販コードを記載しています。(1)初めての電子工作&プログラミングでは、1個のLEDを制御します。今回は、ArduinoにLEDを1個接続する電子工作の前半の説明です。電子工作は初めて、という方がほとんどだと思います。(2)電子工作の続きです。今回はArduinoにLEDを1個接続する電子工作をします。MicroにLEDを接続しますが、この記事で使用するLEDは「抵抗内蔵」で「12V用」になります。IDEをインストールします。IDEをPCにインストールします。最初のスケッチ(1)今回からいよいよスケッチの作成に入ります。それでは、これから初めてのスケッチ(プログラム)を作っていきます。最初のスケッチ(2)今回はArduinoの端子をスイッチ制御する命令を習得します。前回の記事で、12番ピンをスイッチ機能に設定しました。やり方は、setupのところでpinMode命令を使って設定したんですよね。今回はプログラミング言語について説明します。長い道のりでしたが、最初のスケッチを作成してArduinoを動作させてみました。今回はスケッチを見やすくします。第12回までの記事で、LEDを1秒ごとにつけたり消したりするスケッチを作成して、実際にArduinoを動作させてみました。インデント今回は別の観点でスケッチを見やすくします。今回の記事では、今まで謎にしていた以下の2つのことを解き明かします。ひとつはsetupとloopに出てくる「{」と「}」(中括弧)です。#define今回はLEDの点滅パターンを変更してみます。長い道のりでしたが、LEDを1秒ごとにつけたり消したりするスケッチがやっと完成しました。今回はLEDの点滅(てんめつ)パターンを変えてみたいと思います。今回は#defineの続きと、新しく算術演算子を習得します。前回のスケッチでは「delay(1000);」の1000の部分を#defineで定義しました。チャレンジ課題(1)今まで習得した知識を使って課題にチャレンジしてみます。このシリーズの最初のチャレンジ課題は、追加で緑色のLEDを接続して、そのLEDを前回のスケッチと同様に点滅制御する、という内容です。キッチンタイマーのスケッチやっと、、、キッチンタイマーのスケッチを作り始めます。スイッチを追加するブレッドボードにスイッチを追加します。前回の記事では青色LEDをピカッ、ピカッ、と光らせるスケッチを作成しました。このピカッ、ピカッ、と光る動作は、タイマーが動作しているとき用にします。Microの端子番号について補足します。前回の記事でスイッチを「23番端子」に接続しました。今回はpinMode命令の復習をして、スイッチの状態を読み取る命令を習得します。第10回の記事でpinMode命令を説明しましたが、その時はパラメータの「INPUT_PULLUP」を説明していませんでした。前回の記事では、digitalRead命令を使ってスイッチの状態を確認しました。while構文と比較演算子キッチンタイマーのスケッチを変更して、スイッチが押されたらLEDの点滅を開始するようにします。前回までの記事で、青色LEDを1秒に1回、ピカッ、ピカッ、と光らせることができました。今回は「式」と「式の評価」という考え方を習得して、while構文と比較演算子について理解を深めます。前回の記事では「何かと何かが等しい」などの比較をする記号を習得しました。変数の型と宣言タイマーの時間を計測する方法を検討します。前回までのスケッチで、スイッチを押すと、LEDを1秒に1回光らせる動作を実現することができました。これってタイマーではないですよね。時間を計測するスケッチを検討します。前回の記事では、C/C++言語に変数が用意されていることを説明しました。変数はメモ用紙のようなもので、ちょっと変わった感じのメモ用紙でした。一定回数の処理をwhile構文とは別の方法で実現してみます。前回の記事では、一定回数処理をするスケッチを、変数とwhile構文を使用して実現しました。〜変数のスコープ〜今回は変数について理解を深めます。今回の記事では、変数について理解を深めていきます。前回までの記事で、変数はこういうもので、スケッチではこのように書きます、と説明してきました。〜メモリ〜今回の記事では、Arduinoボードが変数をどのように処理しているのか習得して、変数の扱い方の理解を深めます。前回の記事で変数の性質についていろいろ習得しました。スピーカーを追加する今回はスピーカーを接続します。今まで製作したキッチンタイマーは、スイッチを押すとLEDが点滅を始めて時間の計測を開始しますが、設定時間になってもLEDの点滅が止まるだけです。音の仕組みと圧電スピーカーの仕組み今回は音の仕組みと圧電スピーカーの仕組みを理解して、Arduinoで音を鳴らしてみます。キッチンタイマーらしく、時間になったらアラーム音を鳴らすようにプログラミングしていきます。アラーム音を追加する今回はキッチンタイマーのスケッチにアラーム音を追加します。前回の記事では、digitalWrite命令とdelayMicroseconds命令を使って、ずいぶんと面倒なプログラミングをしました。LEDを追加する基本的なキッチンタイマーのスケッチができました。今回は残り時間の目安を表示するLEDを追加します。if文タイマーの残り時間に応じて、前回追加したLEDを制御します。前回追加した残り時間を表現するLEDは以下のように制御することにします。チャレンジ課題2それでは今まで習得した知識を使ってスケッチを変更してみましょう。タイマー時間と残り時間を以下のように書くと、いちいち残り時間の3分の2、3分の1を計算する必要があります。今回はタイマーの残り時間が少なくなったら動作を変える制御をします。前回の記事で「if文」を新しく習得しましたが、if文のように条件を判断して処理を変える制御構文を「条件判断文」と呼んでいます。アラーム音をメロディーに変更する今回はアラーム音をメロディに変更します。ここまでのプログラミングで、キッチンタイマーとしての動作はある程度完成しました。#include今回はスケッチを整理します。前回、アラーム音をメロディーに変えたのはいいですが、スケッチがなんだかずいぶん長くなってしまいましたよね。最初の#defineが長くなっています。今回はアラームメロディーを変更してみます。前々回の記事で、単調なアラーム音をメロディーに変更しましたが、今回はそのメロディーを変更してみます。現在のスケッチのメロディーを変更するのは簡単ですよね。3今までの知識を使ってスケッチを変更してみましょう。現在のスケッチでは、Arduinoにスケッチを送ると、しばらくしてキッチンタイマーとして動作を開始します。今回は残り時間を表現する3個のLEDの制御方法を変えてみます。製作したキッチンタイマーには、残り時間を表現するために3個のLEDを接続しています。今回は関数を変更してみます。前回の記事で、残り時間を表現する3個のLEDを制御する関数を作りました。今回もさらに関数を変更します。現在のスケッチでは、時間表示用LEDの制御用に以下の関数を作成しています。今回はメロディーのそれぞれの音の長さを変えられるように変更します。タイマー時間になったらメロディーを演奏していますが、このメロディーのそれぞれの音の長さは全て同じです。今回はメロディーデータの形式を変更します。前回の記事では2次元配列を使用して、メロディーデータを音階データと音の長さデータの組のようなデータ形式にしました。4プログラミングの基本が習得できましたので、最後にチャレンジ課題に挑戦してみます。前回までの記事で、プログラミングの基本的な部分は習得できました。#define今回から今まで説明した内容の補足説明です。この基礎編パート1では、プログラミングに必要な最低限の知識を説明しました。実際にプログラミングをする場合、もう少し補足の知識が必要になります。Microでシリアルモニタを使用する際の注意点を説明します。第21回の記事で「シリアルモニタ」の使い方を習得しました。今回は変数の扱いについて補足します。今までの記事で、変数の性質について詳しく説明していませんでしたので、この記事では変数についてもう少し掘り下げます。C/C++言語では以下の変数型が用意されていましたよね。typedef第42回で列挙型、第44回で構造体を習得しましたが、これらをもう少し使いやすくする手法を習得します。列挙型、構造体について忘れてしまっていたら、列挙型は第42回、構造体は第44回の記事を見返してみてください。基礎編パート1の最後にいくつかのチャレンジ課題に挑戦してみましょう。Microでキッチンタイマーを作りながらC/C++言語の基本的な内容を習得してきました。