ピンの電圧が変化したときだけシリアルで送ろう【Arduino】【C言語】
はじめに
これはArduinoを使っている方への記事になります。
組込みプログラミングをやっているとピンの状態が欲しいときがありますね。
普通オシロスコープ等がないのであれば、シリアルポートに文字列としてデバッグ出力させると思うのですが、常にピンの状態を出力させていると他の情報がわからなくなる時がありますね。
そういう時はピンの状態が変化したときだけシリアルでの情報が欲しくなりますがどのようにプログラミングをすればよいのでしょうか。
必要なもの
・Arduino Uno(プログラミング書き込み設定がわかっていればなんでもいいです)
・ジャンプワイヤー 1本
回路
今回は組みません。GNDにジャンプワイヤーをさして、7ピンにつないでON,OFFします。
プログラム
考え方
今の入力ピンの値をとっておいて、あたらめて入力ピンの状態を取得したときに同じでなければシリアルポートからデータを出力すればいいだけです。
プログラム
//入力ピン番号
int inputPin = 7;
int currentValu = 0;
void setup()
{
pinMode(inputPin,INPUT_PULLUP);
Serial.begin(9800);
currentValue = 0;
}
void loop()
{
int pinValue = 0;
pinValue = digitalRead(inputPin);
//保存している前回以前の値と今の値が違ったら
if(currentValue != pinValue)
{
Serial.print("Pin7 = ");
Serial.println(pinValue);
currentValue = pinValue;
}
}
まとめ
組み込みはデバッグ手段が少なく、ちょっとしたテクニックで難易度が変わります。
電圧変化したときだけ情報が欲しいというのもよくあることですので、ぜひこの方法を覚えておいてください。
この情報はロボットコーダーズで組込みを勉強するときに教える内容です。興味のある方はロボットコーダーズ体験授業をぜひ(体験授業は各教室から申し込めます)