Arduino コードで Serial.read() コマンドに問題があります。LEDに接続された2つの74HC595のシフトレジスタに接続しています。
Serial データがあるかどうかを確認し、2 バイトを読み取ります。次に、これらのバイトを両方をシフトアウトするメソッドに渡します。Serial.printでバイトをチェックしてシリアルモニターに出力すると、たとえば取得できます
49
255
50
255
arduino.cc のドキュメントを読んだところ、2 つの 255 を取得したのはなぜですか。1 バイトしか読み取れないと書かれています。何か案は?
最終的な目標は、シリアル ラインで 2 バイトを読み取り、シフト レジスタの IE にシフト アウトすることです。10 進数の 5 と 6 のバイト値が渡されます。最初の 3 番目の LED が 1 つのシフト レジスタで点灯し、次に 2 番目と 3 番目がシフト レジスタで点灯します。その他のシフトレジスタ
const int dataPin = 8;
const int latchPin = 9;
const int clockPin = 10;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
byte low = Serial.read();
byte high = Serial.read();
Serial.println(low);
Serial.println(high);
sendBytes(low,high);
}
}
void sendBytes(byte l, byte h) {
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,l);
shiftOut(dataPin,clockPin,MSBFIRST,h);
digitalWrite(latchPin,HIGH);
}