今回はタクトスイッチを使ってスイッチ入力をやっていきます。プルアップ、プルダウンの話が出てくるので理解できていない人は
このブログを先に見ましょう!!
今回使用するタクトスイッチ
回路図
1番の回路図を見ると10k抵抗を使ってプルダウンしています。しかし2番の回路図を見ると抵抗がどこにも見当たりません。あれ? と思う方がいるかもしれませんがこれで大丈夫です。Arduinoは「pinMode(SW_PIN,INPUT_PULLUP)」と宣言するとArduino内で勝手にプルアップしてくれます。これは便利ですね!!、外部抵抗を必要としないので回路を簡素化することができます。もちろん外部抵抗を使ってプルアップしてもいいですよ。
外部プルダウンさせた時のプログラム例
//タクトスイッチ外部プルダウンプログラム const int SW_PIN = 2; //20番ピン(D2)をSW_PINという名前に紐づけした。 void setup(){ pinMode(SW_PIN,INPUT); //SW_PIN(D2)を入力ピンに指定した。 Serial.begin( 9600 ); // シリアル通信速度9600bpsに設定して開始 } void loop() { if ( digitalRead( SW_PIN ) == HIGH ) { //digitalRead( SW_PIN )でSW_PINの状態を読み取ってくる。 //HIGHを読み取るとSerial.println("Switch is ON");を実行。 Serial.println("Switch is ON"); //シリアルモニタに表示させる } else { //ifが発動しないすなわちLOWを読み取ると //Serial.println("Switch is OFF");を実行。 Serial.println("Switch is OFF"); //シリアルモニタに表示させる } delay( 200 ); //0.2秒待機 }
内部プルアップさせた時のプログラム例
//タクトスイッチ内部プルアッププログラム const int SW_PIN = 2; //20番ピン(D2)をSW_PINという名前に紐づけした。 void setup(){ pinMode(SW_PIN,INPUT_PULLUP); //SW_PIN(D2)を入力ピンに指定した。 Serial.begin( 9600 ); // シリアル通信速度9600bpsに設定して開始 } void loop() { if ( digitalRead( SW_PIN ) == HIGH ) { //digitalRead( SW_PIN )でSW_PINの状態を読み取ってくる。 //HIGHを読み取るとSerial.println("Switch is ON");を実行。 Serial.println("Switch is OFF"); //シリアルモニタに表示させる } else { //ifが発動しないすなわちLOWを読み取ると //Serial.println("Switch is OFF");を実行。 Serial.println("Switch is ON"); //シリアルモニタに表示させる } delay( 200 ); //0.2秒待機 }
実際の接続画像
配線が完了するとプログラムをダウンロードしましょう。
ArduinoIDEのシリアル通信の速度設定をお忘れなく。
シリアルモニタを確認するとスイッチが押されたらSwitch is ONと表示されます。
これでタクトスイッチの使い方紹介は終わりです。お疲れ様でした。