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