部品解説

このセクションでは各部品について、その動作や制御方法を解説します

部品解説のサブセクション

出力部品

このセクションでは出力部品について、その動作や制御方法を解説します

出力部品のサブセクション

7セグメント

説明

7つのセグメント(棒)と小数点の点灯を切り替えることで、数字や文字を表示することができます

制御対象基盤には2つ取り付けてあり、指定のピンに信号を送ることで各7セグメントの表示のON/OFFを切り替えることができます

制御方法

各セグメントには9つのピンがあり、2つ合計で18個のピンを使用します

9つのうち1つは表示の切り替え(ON/OFF)に使用し、残りの8つで各セグメントと小数点のON/OFFを切り替えます

セグメントのピン配置は一番上の横棒、右上、右下と時計回りに配置されており、最後は中央横棒、小数点となっています

ステッピングモーターと同じように、二次元配列にパターンを格納することを推奨します

// パターン例
const int SEG_PTN[][7] = {
    {1,1,1,1,1,1,0}, // 0
    {0,1,1,0,0,0,0}, // 1
    {1,1,0,1,1,0,1}, // 2
    // 省略
    {1,1,1,1,0,1,1}, // 9
    {0,0,0,0,0,0,0} // リセット
};
// リセットを入れると便利

DCモーター

説明

DCモーターは回る、止まるの動作のみをする基本的なモーターです

プログラムで、回転する方向、速度、停止の素早さを制御できます

制御方法

2つのピンとクロックで制御します

ピン1ピン2動作
LOWLOW緩やかな停止
HIGHHIGH急停止
HIGHLOW回転
LOWHIGH逆回転

ステッピングモーター

説明

ステッピングモーターは回転する角度を調節できるモーターです

プログラムで、回転する方向、角度、速度を調節することができます

制御方法

4つのピンとクロックで制御します

ピン1ピン2ピン3ピン4
HIGHHIGHLOWLOW
LOWHIGHHIGHLOW
LOWLOWHIGHHIGH
HIGHLOWLOWHIGH

パターンを二次元配列に格納して for 文などで値を取り出すと簡潔なプログラムにすることができます

ブザー

説明

ブザーは一定の周波数の音を鳴らすことができます

プログラムで周波数、音を鳴らす長さを指定することができます

制御方法

Arduino言語に含まれている tone 関数を使用することで周波数、音を鳴らす秒数を指定することができます

また、 noTone 関数を使用することで音を消すこともできます

入力部品

このセクションでは入力部品について、その動作や制御方法を解説します

入力部品のサブセクション

タクトスイッチ

説明

押している間のみ通電する、最も単純なスイッチです
入力基盤によって、プルアップ・プルダウンがあるので注意しましょう

使用方法

digitalRead 関数を用いて値を読み取ります

サンプルコード

if (digitalRead(ピン番号) == HIGH) {
    // HIGHの時の処理
} else {
    // LOWの時の処理
}

ホトカプラ

説明

明るさを読み取ることができるセンサーです

使用方法

digitalRead 関数を使用すると HIGH / LOW で値を読み取ることができます

analogRead 関数を使用するとアナログ値で読み取ることができます

明るさの具合で処理を変更する問題は出題されないので、 digitalRead 関数を使用することが一般的です

サンプルコード

if (digitalRead(ピン番号) == HIGH) {
    // HIGHの時の処理
} else {
    // LOWの時の処理
}

可変抵抗

説明

軸がどれだけ回転されられたかを読み取ることができます

出力値は、0から1023の1024段階で出力されます

使用方法

digitalRead 関数を使用すると HIGH / LOW で値を読み取ることができます

analogRead 関数を使用するとアナログ値で読み取ることができます

あまりHIGH/LOWで読み取るような問題は出題されないので analogRead 関数を使用することが一般的です

サンプルコード

int volume = analogRead(ピン番号);

if (volume <= 500) {
    // 中央より下の値のときの処理
} else if(volume <= 524) {
    // 中央付近のときの処理
} else {
    // 中央より上の値のときの処理
}