2

シリアル接続を介して Processing から送信されたコマンドを読み取るために書き込もうとしている Arduino プログラムに小さな問題があります。処理は、Arduino へのシリアル接続を介して「H」または「L」のいずれかを送信することになっています。この値はプログラムに char として保存されますが、Serial.write("Value: %c",val) を実行しようとすると、「'const char*' から 'const uint8_t*' への変換が無効です」というエラーが発生します。誰かがこの問題を解決するのを手伝ってくれるなら、それは素晴らしいことです。プログラムを書き直すことができるように、この値が何であるかを理解する必要があります。ありがとう!

以下にコードを示します。

char val; // variable to receive data from the serial port

int ledpin = 8; // LED connected to pin 48 (on-board LED)

void setup() {
  pinMode(ledpin, OUTPUT);  // pin 48 (on-board LED) as OUTPUT
  Serial.begin(9600);       // start serial communication at 9600bps
}
void loop() {

  while (Serial.available()>0){

  val=Serial.read();
  }
  //Serial.write("Value: %c",(char)val);

  if( val == 'H' )               // if 'H' was received
  {
Serial.write("Setting Value to High \n");
digitalWrite(ledpin, HIGH);  // turn ON the LED
  } else { 
Serial.write("Setting Value to Low \n");
digitalWrite(ledpin, LOW);   // otherwise turn it OFF
  }
    Serial.flush();
        delay(100);                    // wait 100ms for next reading
}
4

2 に答える 2

3

Serial.writeそうではありませんprintf- フォーマット文字列を引数として取りません。ドキュメントを見てください。

于 2012-09-15T00:26:40.060 に答える
0

serial.write の代わりに使用: Serial.print または Serial.println (文字列の最後に表示されます \r\n)

于 2012-09-16T21:15:49.120 に答える