The jonki

呼ばれて飛び出てじょじょじょじょーんき

【Arduino】タクトスイッチとシリアル通信

タクトスイッチを押すとLEDが光る簡単な仕組みですが、PC側でこのオン、オフが受け取るシリアル通信アプリを書いてみるよ。

ちなみにこの回路は下の本の35ページと一緒です。基本回路ですね。

Arduinoをはじめよう (Make:PROJECTS)

Arduinoをはじめよう (Make:PROJECTS)

シリアル通信はこちら様のサイトの「シリアル通信プログラム(受信専用)」を丸パクリ。ただボーレートは9600に、シリアルポートはデバイスマネージャからArduinoの接続ポートを確認して、対応したCOM番号に変更しておきましょう。
C 言語による RS-232C 通信プログラミング

で、Arduino側のプログラム。これも「Arduinoをはじめよう」のプログラムにSerial.beginとSerial.printlnを追加するだけ。超簡単ですね。

#define LED 13
#define BUTTON 7
int val = 0;

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);
  Serial.begin(9600);
}

void loop() {
  val = digitalRead(BUTTON);
  if(val == HIGH) {
    digitalWrite(LED, HIGH); 
    Serial.println(1);
  } 
  else {
    digitalWrite(LED, LOW);
    Serial.println(0); 
  }

  delay(300);
}

これでArduinoをPCとつなげた状態でCプログラムの方を動かすと、タクトスイッチを押した状態で1が、押してない状態で0がストリームで流れてきます。あとはこれを他のアプリにdllとして組み込んだりしてあげると、デモの時とかに大活躍しそうですね。スイッチも複数とか大きいやつとかを使ってあげれば更に活躍の場が広がりそう。