Arduinoを用いてマイコンのプログラミング、センサの使い方を学びます
Arduino(アルドゥイーノ もしくは アルデュイーノまたはアルディーノ)とは、(ハードウェアの)「Arduinoボード」、および(ソフトウェアの)「Arduino IDE」から構成されるシステムである。Arduinoボードは、AVRマイコン、入出力ポートを備えた基板であり、Arduino IDEはC言語風の「Arduino言語」によってプログラムを制作・コンパイル・デバッグ等し、それをArduinoボードに転送 等々するための「統合開発環境」と呼ばれる、PC上で作動させる一種のソフトウェアである。
また「Arduino」という名称は広義には、それらの開発・改良を行う一連のプロジェクトや、その結果生まれた会社、またその多くの開発者らによるコミュニティまでも指すことがある。
もともと2005年にイタリアで5人の人物によって、「もっとシンプルに、もっと安価に、技術者でない学生でもデジタルなものを作ることができるようにする」という目的を据えたプロジェクトとして「Arduinoプロジェクト」が立ち上がり、彼らが、きわめて安価で、テクノロジーには縁遠い人でも理解でき使えるほどシンプルで(simplicity)、オープンな ハードとソフトのまとまり、を生み出すことに成功し、それが人々に歓迎され、数年のうちに全世界に普及した。「Arduino IDE」の管理を行い開発コミュニティの窓口となる非営利団体Arduino Foundation、およびArduino関連品の販売の一元管理を行う営利団体Arduino Holdingが関わっている。
Arduino はワンボードマイコンの一種であり、I/Oポートを備え、インタラクティブな(つまりセンサ類を追加して外界の物理的変化を感知させたり、アクチュエータを追加して外界に物理的な変化を起こさせることが可能な)装置として用いることができるものである。スタンドアローン型で(つまり、Arduino単体で、一度設定・作動させ始めたら他のコンピュータは一切無しに)作動させることもでき、また他のコンピュータと常時連携させ、そこで動くソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、Pure Data、SuperCollider 等)をホスト役に設定して、それに従属しコントロールされる形などで用いることも可能なものである。
オープンソースハードウェアであり、オープンソースのごく簡単な規定を守りさえすれば誰でも自由に用いることができ、ハードウェア設計情報のEAGLEファイルは無料でネット上で公開されている。組み立て済みの基板を購入することもできるほか、誰でも(AVRのICや他の部品となる半導体素子やブレッドボードなどを電子部品店などで購入するなどして)自分自身の手で Arduinoのハードウェア を組み立てることもできる。Arduino が「オープンソースハードウェアという概念を広めるきっかけとなった」と評価する声もある。
Arduinoボードは入出力ポートの数、ボードの大きさなどが異なる様々なタイプが用意されており、それらの中から用途や好みに応じて選ぶことができる。
Arduino IDE
Arduino
Arduinoや各種センサーは研究室で用意しています
気になる事があれば、どんどん研究室に質問に来てください
Arduino IDE 公式ページから自分のPCにあった最新バージョンをインストールしてください。
https://www.arduino.cc/en/software
Arduino Language Reference(英語)
https://www.arduino.cc/reference/en/
日本語 リファレンス
http://www.musashinodenpa.com/arduino/ref/
ファイル 環境設定からフォントの大きさなど変更可能
Lチカ (LED点滅)
void setup() {
// 13番ピンを output として初期化
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // LEDをオン (電圧を HIGH に)
delay(1000); // 1000ms (1秒) 停止
digitalWrite(13, LOW); // 電圧をLOWにしてLEDをオフ
delay(1000); // 1000ms (1秒) 停止
// 以下無限ループ
}
(1) Arduino 課題
たくさんのLEDを制御してみよう。
信号機を作ってみよう。
青→黄色3回→赤→青に戻る
オリジナルの信号でもよい。
ブレッドボードで一色づつ点滅する5色の信号をつくってみよう。
青3回→黄色2回→赤3回→。。。。。 これを無限に繰り返す。for文を使います。
配線の方法やArduinoのピン配列はページ下部を参照
// hint 信号機を実装してみよう。青→黄色点滅→赤→青に戻る
int led_r=13;
int led_y=12;
int led_g=11;
void setup() {
pinMode(led_r, OUTPUT); // 必ずoutput指定をすること
// ...
}
void loop() {
digitalWrite(led_r, HIGH);
delay(1000);
digitalWrite(led_r, LOW);
// ...
}
delay() の罠
正確に定期実行したい場合には、 delay() は非推奨です。( delay() 以外の処理時間分ズレていくため)
例えば以下のように millis() を利用します。
https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay
millis() : https://www.arduino.cc/reference/en/language/functions/time/millis/
(日本語訳版: http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2524 )
const int intervalMillis = 1000;
unsigned long lastRunMillis = 0;
/* 中略 */
void loop() {
unsinged long currentMillis = millis();
if (currentMillis - lastRunMillis >= intervalMillis) {
// 実行したい処理をここに
lastRunMillis = currentMillis;
}
}
ブレッドボードとワイヤケーブルを使おう。
https://thunderblog.org/2019/03/bread_board.html
ブレッドボードはGNDマイナス(黒)は共通に結線されています。GND線は黒か青がおすすめ
a-eはスプリットまでは各番号独立して結線されています。
ブレッドボード
ブレッドボードの使い方
https://iot.keicode.com/electronics/what-is-breadboard.php
例:
13番pin-抵抗-色1のLED-GND
終わったら↓の5色の信号に挑戦
13番pin-抵抗-色1のLED-GND
12番pin-抵抗-色2のLED-GND
11番pin-抵抗-色3のLED-GND
10番pin-抵抗-色4のLED-GND
9番pin-抵抗-色5のLED-GND
抵抗は向きはありませんが茶色を左など揃えるとよいとおもいます。
↓図はあくまで参考の結線です。自分のコードのピン番号に合わせてください。GNDは二箇所どちらからとってもかまいません。
ピンは 13, 12, 11 がおすすめです。
抵抗入LEDの場合
上記2枚のような図は Fritzing ( https://fritzing.org/ ) で作成できます。
Arduinoの通信、演習(発展)