この記事ではスイッチを使い動作確認を行います。 100kinSATには入力用にタクトスイッチが用意されています。 スイッチを押すとLEDが点灯、離すと消灯するプログラムを作成します。
CanSatは競技開始後、自立走行で目標地点へ走行しなくてはなりません。 そのため競技中はスイッチによる入力機能は必要としませんが、実験段階で各モード(状態遷移)を切り替えたり、ロケットや気球に搭載するタイミングで待機状態をオンにしたりするときに役立ちます。
また、パラシュート放出を検出するためのフライトピンも原理的にはスイッチと同様となっています。
スイッチのオンオフでLEDを制御
ソースコードの説明
スイッチとLEDのピンの変数をグローバル変数として宣言しています。
1
2
static const uint8_t button = 35; // スイッチと接続しているピン(35番ピン)
static const uint8_t led = 2; // LEDと接続しているピン(2番ピン)
setup
関数ではスイッチと接続しているピンを入力(INPUT)、LEDと接続しているピンを出力(OUTPUT)に設定しています。
1
2
3
4
5
void setup() {
pinMode(button, INPUT); // スイッチを入力モードに設定
pinMode(led, OUTPUT); // LEDを出力モードに設定
digitalWrite(led, LOW); // LEDへの出力をLOWにする(消灯)
}
loop
関数ではwhile
命令を使用してスイッチが押されている間、LEDを点灯する処理を書いています。 while
の外ではLEDへの出力をLOWにして消灯しています。
digitalRead
関数でスイッチの状態を知ることができます。 スイッチはプルアップ抵抗を接続しているため、押しているときにLOW、離しているときにHIGHとなります。
1
2
3
4
5
6
7
8
void loop() {
while (!digitalRead(button)) { // スイッチが押されている間
digitalWrite(led, HIGH); // LEDへの出力をHIGHにする(点灯)
}
digitalWrite(led, LOW); // LEDへの出力をLOWにする(消灯)
}