• 検索結果がありません。

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

N/A
N/A
Protected

Academic year: 2021

シェア "arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

arduino プログラミング課題集

( Ver.5.0 2017/06/01 ) arduino と各種ボードを組み合わせ、制御するためのプログラミングを学 ぼう!

1 入出力ポートの設定と利用方法

(1)「制御(コントロール)する」とは ・外部装置(ペリフェラル)が必要とする信号をマイコンから伝える ・外部装置の状態をマイコンで確認する ・信号の授受は「入出力ポート」経由で行う (2)入出力ポートとは? ・マイコンが外部装置とデータのやり取りをするための「くち」。 ・プログラムでやり取りする ・マイコンからデータ(信号)を外部装置へ送り出すことを「出力」と呼ぶ ・信号は基本的に「デジタル」 ON/OFF だけを伝えることができる (3)出力ポート ・マイコンから外部装置へ信号を送る ・出力ポートにデータをセットすると、コンピュータの外部に

(2)

それを送り出してくれる。 ・出力したデータはポート自体に保持される。 (他のデータを送り出さなければ変化しない) 出力ポート マイコン 外部装置 入力ポート マイコン 外部装置

(3)

(4)入力ポート ・外部装置からマイコンに信号を取り込む ・マイコンが周辺装置から受け取ったデータを入力ポートが記憶する。 そこから変数等に読み込んで処理を行う。

2 arduino のプログラミング

(1)開発環境 IDE ・マイコン、周辺装置を接続した状態にして、USB 経由で PC に接続して おく。 ・プロジェクトを「スケッチ」と呼ぶ。C 言語で記述する。 ・スケッチを作成したらコンパイルしてarduinoに書き込み、実行させる。 (2)arduino のプログラミング基本形 void setup() { 初期設定等を行う } void loop() { メインとなる処理 (無限ループ) } (3)入出力の初期化(イニシャライズ)

(4)

・arduino のポートは入力、出力のどちらにでも設定できる。 ・すべての処理に先立って、入力、出力のどちらかに設定をする。 通常、setup()の中に書いておく。

pinMode(ピン番号, OUTPUT または INPUT);

・ピン番号

pin2 - 13 自由に使えるデジタル入出力ピン 入力は digitalRead(ピン番号)

出力は digitalWrite(ピン番号, HIGH / LOW)

A0 -A5 アナログ入力ピン pin 14-20 としてデジタルでも使える pin0, 1 は PC との通信用 ・基本構成 次のように周辺装置と接続する 出力 pin9(MSB) - pin2(LSB) 入力 pin17(MSB) - pin10(LSB) ・ポート初期化プログラム void setup() { int i; // ポートの初期設定 for (i = 2; i <= 9; i++) pinMode(i, OUTPUT);

(5)

for (i = 10; i <= 17; i++) pinMode(i, INPUT); }

(4)出力

・特定のピンに HIGH または LOW を出力

digitalWrite(ピン番号, HIGH / LOW); (5)入力 ・特定のピンから信号を読み込む digitalRead(ピン番号); ・読み込んだデータを変数に記憶させるためには 変数名 = digitalRead(ピン番号); (6)変数の大きさ(ビット数)

・int 型 16bit (unsigned も同様) ・long 型 32bit (unsigned も同様) ・char 型 8bit (unsigned も同様)

(7)delay()関数

・時間待ちする(だけの関数) ・引数はミリ秒単位の数値

(6)

delay(1000); で約 1 秒待つ

実行中は何も操作を受け付けないので注意。

・より短いタイマーには delayMicroseconds() を使う ( )内は unsigned int (16bit)、単位は [μs]

3~16,000 ぐらいで正確に動作する。 (8)PC との通信(シリアル通信) ・USB を経由して arduino と PC との間で通信ができる。 Serial.begin(データ転送レート); Serial.print(表示データ [,フォーマット]); Serial.read(); ・データ転送レート (bps) 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 ・PC 側は IDE で「シリアルモニタ」を起動してデータを送受信する。 「ツール」→「シリアルモニタ」 ショートカットは Ctrl + Shift + M ・arduino 側の受信は、何も入力がないとき -1 になる。

2 arduino のプログラミング LED 制御

arduino 用マザーボードに LED ボードを接続して、点灯・消灯を制御す るプログラムを作成・動作させよう。

(7)

(プログラム1) LED を全部点灯させなさい。 ○○○○○○○○ (LED は負論理なので、8 ビットすべて0を出力すると点灯) (プログラム2) LED を全部消灯させなさい。 ●●●●●●●● (プログラム3) LED の上位 4 ビットを点灯、下位 4 ビットを消灯させなさい。 ○○○○●●●● (プログラム4) LED を交互に点灯/消灯させなさい。 ○●○●○●○● (プログラム5) LED 全部点灯/全部消灯を交互に繰り返しなさい。(0.3 秒間隔で) ○○○○○○○○ → ●●●●●●●● → ・・・ ※ポイント:時間を稼ぐ=ディレイを使う (プログラム6) LED 下位 4 ビットを使って、16 進カウンタを構成しなさい。 ●●●●●●●● → ●●●●●●●○ → ●●●●●●○● → ●●●●●●○○ → ●●●●●○●● ・・・ ・・・ → ●●●●○○○○ → ●●●●●●○● ・・・

(8)

(プログラム7) LED 下位 4 ビットを使って、10 進カウンタを構成しなさい。 ●●●●●●●● → ●●●●●●●○ → ●●●●●●○● → ・・・ → ●●●●○●●○ → ●●●●●●● ・・・ (プログラム8) 8進リングカウンタを構成しなさい。(シフト演算を使う) ●●●●●●●○ → ●●●●●●○● → ●●●●●○●● → ●●●●○●●● → ●●●○●●●● ・・・ (プログラム8) 8進リングカウンタ、逆方向を構成しなさい。(シフト演算を使う) ○●●●●●●● → ●○●●●●●● → ●●○●●●●● → ●●●○●●●● → ●●●●○●●● ・・・ (プログラム9) 上下4ビットずつ、4進のリングカウンタを構成しなさい。 ○●●●●●●○ → ●○●●●●○● → ●●○●●○●● → ●●●○○●●● → (最初へ戻る) (プログラム10) LED を高速に ON/OFF させ、輝度をコントロールしよう。 デューティー比(ON/OFF の割合)や周期を変えてテストしよう。 最終的には LED8個とも輝度が変わって、それが時間とともに変化しなが ら点灯することを目指す。

(9)

3 LED とプッシュスイッチの制御

arduino 用マザーボードに LED ボードとプッシュスイッチボードを接続 して制御プログラムを作ろう。 (プログラム1) スイッチの入力値をそのまま LED へ出力しなさい。 (スイッチ ON のビットのみ、対応する LED が点灯) (プログラム2) スイッチの入力値を論理反転して LED へ出力しなさい。 (OFF のビットのみ LED が点灯) (プログラム3)

スイッチの LSB の ON/OFF で、LED 全部を ON/OFF しなさい。

(プログラム4)

スイッチの MSB の ON/OFF で、LED を交互に ON/OFF しなさい。 (ON) ●○●○●○●○ (OFF) ○●○●○●○●

(プログラム5)

押しているスイッチの個数を LED に表示しなさい。

(例)0個 ●●●●●●●● 3個 ●●●●●●○○ 7個 ●●●●●○○○ 8個 ●●●●○●●●

(10)

(プログラム6) スイッチの LSB の ON/OFF の回数を LED に正論理で表示しなさい。 但し、タイマーでチャタリングの対策を行うこと。 (プログラム7) 256 進のバイナリカウンタを構成しなさい。 スイッチの LSB を押したらリセット(0)。カウントは停止。 スイッチの MSB を押したらカウント開始・停止。LSB を優先。 (プログラム8) リングカウンタを動作させなさい。(LSB→MSB の順にカウント) 但しスイッチの MSB を押したときカウント開始・停止。スイッチの LSB を押したらリセット、カウントは停止。LSB を優先。 (プログラム9) シフトカウンタを動作させなさい。 ●●●●●●●● → ●●●●●●●○ → ●●●●●●○○ → ・・・ ○○○○○○○ → ○○○○○○● → ○○○○○●● → ・・・ ○●●●●●●● 最初に戻る スイッチの条件はプログラム8と同様とする。

4 PC とのシリアル通信

入力にスチッチボード、出力に LED ボードを接続しておく。 データ転送速度は 9,600bps とする。

(11)

(プログラム1) LED を全部消灯し、通信の開始を知らせるメッセージを表示した後、1秒 刻みでモニタ画面に arduino! と表示させなさい。改行すること。 (プログラム2) LED を全部消灯し、通信の開始を知らせるメッセージを表示した後、1秒 刻みでモニタ画面に スイッチの状態を表示させなさい。 ON は 0、OFF は 1 で、 00001111 (改行) のように表示させること。 (プログラム3) LED を全部消灯し、通信の開始を知らせるメッセージを表示した後、 PC からデータ 'a' を受信したら LED を全部点灯、'd' を受信したら LED を全部消灯、'x' を受信したら点灯・消灯状態を逆転させなさい。

参照

関連したドキュメント

SVF Migration Tool の動作を制御するための設定を設定ファイルに記述します。Windows 環境 の場合は「SVF Migration Tool の動作設定 (p. 20)」を、UNIX/Linux

2021] .さらに対応するプログラミング言語も作

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

高(法 のり 肩と法 のり 尻との高低差をいい、擁壁を設置する場合は、法 のり 高と擁壁の高さとを合

・子会社の取締役等の職務の執行が効率的に行われることを確保するための体制を整備する

「養子縁組の実践:子どもの権利と福祉を向上させるために」という

討することに意義があると思われる︒ 具体的措置を考えておく必要があると思う︒

QRされた .ino ファイルを Arduino に‚き1む ことで、 GUI |}した ƒ+どおりに Arduino を/‡((スタンドアローン})させるこ とができます。. 1)