You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino调用LiquidCrystal::write(String&)提示无匹配函数如何解决

问题原因与解决方案

报错原因

  • LiquidCrystal库提供的write()方法没有设计接收Arduino String类对象的重载,它仅支持以下几类输入参数:
    • 单个char类型的字符
    • const char*类型的C风格字符串
    • 指向字节数组的指针与长度参数
  • Arduino的String是封装后的字符串类,和原生C风格字符串是完全不同的类型,因此编译器找不到匹配的函数实现,直接抛出对应错误。

可行解决方案

方案1:改用支持String类型的print()方法(最简便)

LiquidCrystal库的print()方法原生支持String类型参数,直接将代码中所有lcd.write(s)替换为lcd.print(s)即可,修改后的完整代码如下:

void printOnLcd(String s){
  for (int i =0; i<2; i++){ 
    if( i % 2 == 0){ 
         for(int a=0; a<16; a++){ 
             lcd.setCursor(a,i);
             lcd.print(s);
             delay(200); 
             lcd.setCursor(a,i);
             lcd.write(" ");
         }
    } else {
       for(int a = 0; a<16; a++){
           lcd.setCursor(a,i);
           lcd.print(s);
           delay(200);
           lcd.setCursor(a,i);
           lcd.write(" ");
       }
    }
}

方案2:将String转换为C风格字符串后传入write()

如果需要保留write()调用,调用String类的c_str()方法即可获取其对应的const char*类型字符串,修改为lcd.write(s.c_str())即可。


内容的提问来源于stack exchange,提问作者Sebastiano Bortoletti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:24:03