从"常量字符*"到"常量uint8_t*"的转换无效

Invalid Conversion from 'const char*' to 'const uint8_t*'

本文关键字:常量 转换 无效 字符 uint8      更新时间:2023-10-16

我在尝试编写的Arduino程序上遇到了一个小问题,以读取通过串行连接从Processing发送的命令。处理应该通过串行连接向Arduino发送"H"或"L"。此值作为字符存储在我的程序中,但是当我尝试执行 Serial.write("值:%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
}

Serial.write不是printf - 它不接受格式字符串作为参数。查看文档。

代替 serial.write: Serial.print 或 Serial.println(witch prints 在字符串 \r 的末尾)