0

シリアルから情報を読み取り、バイナリ値を 6 個の LED に書き込むこのプログラムを作成しました。それが最も簡単で最速の方法だとは思いませんが、それこそが私が本当に求めているものです。私のコードは次のようになります。

boolean enable = false;

void setup()
{
  for (int i = 2; i < 8; i++)
  {
    pinMode(i, OUTPUT);
  }
}

void loop()
{
  if (Serial.available() > 0)
  {
    enable = true;
  }
  if (enable)
  {
    while (Serial.available() > 0)
    {
      byte b = Serial.parseInt();
      b = constrain(b, 0, 63);
      byte val = b;
      for (int i = 7; i >= 2; i--)
      {
        if (pow(2, (i-2)) <= val)
        {
          digitalWrite(i, HIGH);
          val -= pow(2, (i-2));
        }
        else
        {
          digitalWrite(i, LOW);
        }
      }
    }
    enable = false;
  }
  delay(100);
}

有効なコード例はいいでしょう。PORTD を使用してみましたが、機能しません。

4

1 に答える 1

1

二項演算を使用する

for(int i = 0 ; i < 8 ; i++ ) {
   val = ( b >> i ) & 0x1;
   digitalWrite(i, val == 1 ? HIGH : LOW );
}

深刻なシリアル通信を計画している場合は、私が作成したライブラリを調べてください https://github.com/lukaszkujawa/arduino-serial-helper

于 2013-02-28T09:09:22.243 に答える