SoftwareSerialを実装してみたい
というわけで、簡単にRXを覗き見できたら良いのに・・・。
RXは、0番pinと接続されているので、
0番pinの立ち上がりを組み込みLED(たぶん13番pin)に反映すれば、
RXのLEDと同じ感じで点灯するのでは?
って思って書いたコードがこちら。
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); pinMode( 0, INPUT ); } // the loop function runs over and over again forever void loop() { int val = 0; while (1) { const int tmp = digitalRead(0); if ( val != tmp && tmp ) { digitalWrite(LED_BUILTIN, HIGH); delay(1); digitalWrite(LED_BUILTIN, LOW); delay(1); } val = tmp; } }
シリアルモニタでボーレートを300まで落として、
「@」だけの長い文字列を送ると、だいたい思った通りの結果が得られた。
「@」を選んだのは、0x40なら立ち上がりが少ないから分かりやすいかなって。
あとは、適当にタイマーを使って、
SoftwareSerialを実装することになるんだけど、
やりたいのはMIDIの送受信なので、いつになることやら・・・。
追記 2019/06/23
組み込みLEDの光り方を、もう少しRXに寄せようと思って調整しました。
立ち下がりで光るようにしたバージョンです。
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); pinMode( 0, INPUT ); } volatile int i; // the loop function runs over and over again forever void loop() { int val = 1; while (1) { const int tmp = digitalRead(0); if ( !tmp && val ) { digitalWrite(LED_BUILTIN, HIGH); for (i=0; i<768; i++) { int a = 0; } digitalWrite(LED_BUILTIN, LOW); } val = tmp; } }
volatile int i;
の位置、検討の余地ありありですね。
条件文の辺りも、もう少し何とかできそうだけど、この件はこれにて。
— ここまで —
おしまい。
Leave a Comment