程序猿好圆 2022-03-09 03:10 采纳率: 40%
浏览 91
已结题

arduino编译出现以下问题

【1】arduino编译出现以下问题:
In function 'void setup()':
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

【代码如下】
#include <VoiceRecognition.h> //引入语音识别库文件
VoiceRecognition Voice; //实例化一个语音识别对象

#define RowA 3 //行信号,驱动138
#define RowB 5
#define RowC 6
#define RowD 7

boolean O;
volatile long lastTime;
byte offset=0; //应用流动显示变量
byte k=1,j=0; //k选择显示字体 j流动显示速度
byte HzNum; //总字节数

int chr; //存储语音识别模块返回的标签
int hc138en=8; //138 使能

int i,a;
#define STB 14 //595 刷新显示 SS

int latch = 14; //信号锁存
int srclk = 15; //信号时钟
int ser = 16; //信号输入

byte row=0; //扫描点阵屏16行

};
//刷新每一行
void hc138sacn(byte r){ //输出行线状态ABCD (A低,D高)
digitalWrite(RowA,(r & 0x01));
digitalWrite(RowB,(r & 0x02));
digitalWrite(RowC,(r & 0x04));
digitalWrite(RowD,(r & 0x08));
}

//把数据用串行转并行输出到595
void SendByte(unsigned char dat)//输出一个字节到595
{
static unsigned char i;

for(i=0;i<8;i++) //一个汉字两个字节
{
digitalWrite(ser,bitRead(dat,7-i));//这里也可以用arduino自带的函数操作,主用于595类型的输出。
digitalWrite(srclk,0);
digitalWrite(srclk,1);
}
}

//把数据用串行转并行输出到595
void SendByte2(unsigned char dat,byte offset)//输出小于1个字节的数据到595,应用流动显示
{
static unsigned char i;

for(i=0;i<offset;i++)
{
digitalWrite(ser,bitRead(dat,7-i));//这里也可以用arduino自带的函数操作,主用于595类型的输出。
digitalWrite(srclk,0);
digitalWrite(srclk,1);
}

}

void flow_xs(){
k=0;
lastTime = millis();
while (O){ //pgm_read_byte(&hz[k+4][row*2+1])
for ( int i=0;i<4;i++){//8片595
SendByte((hz[k+i][row*2])); //SPI
SendByte(
(hz[k+i][row*2+1])); //SPI
}
if(offset<8) //偏移量移动,1个汉字是2个字节需要判断是前半部分还是后半部分。
SendByte2((hz[k+4][row*2]),offset) ;
else
{
SendByte2(
(hz[k+4][row*2]),8) ;
SendByte2(~(hz[k+4][row*2+1]),offset-8) ;
}
j++;
if(j==30)//更改流动速度
{
j=0;
offset++;
if(offset==16)
{
offset=0;
k++;
if(k==HzNum)
k=0;
}
}
digitalWrite(hc138en, 1); //关闭显示
hc138sacn(row); //换行
digitalWrite(STB, 0); //595刷新
digitalWrite(STB, 1);
digitalWrite(hc138en, 0); //开启显示
row++;
if(row == 16){
row = 0;
}
if (millis() - lastTime > 7500){ //显示时间到了就熄灭
O=false;
}

}
}
//初始化函数
void setup () {
Serial.begin(9600); //串口波特率
HzNum=sizeof(hz)/32-4; //显示的字数
pinMode(RowA, OUTPUT);
pinMode(RowB, OUTPUT);
pinMode(RowC, OUTPUT);
pinMode(RowD, OUTPUT); //138片选
pinMode(hc138en, OUTPUT); //138 使能
pinMode(latch, OUTPUT);
pinMode(ser, OUTPUT);
pinMode(srclk, OUTPUT);
Voice.init();//初始化VoiceRecognition模块
Voice.addCommand("xing yun xin neng",1); //添加指令,参数1:指令内容,参数2:指令标签(可重复)
Voice.start();//开始识别
}
//loop循环函数
void loop () {
chr = Voice.read(); //读取语音识别返回的标签并保存在chr中
if(chr != -1){ //当chr不是-1时
if (chr = 1){ //当chr等于1时
O = true; //O赋值为true
flow_xs(); //调用显示函数
}
}
}

展开全部

  • 写回答

2条回答 默认 最新

  • 关注

    Voice.addCommand("xing yun xin neng",1);这里修改一下:

    char* p=(char*)"xing yun xin neng";
    Voice.addCommand(p,1);
    

    或者:

    const char* p="xing yun xin neng";
    Voice.addCommand(p,1);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

    如有帮助,望采纳,谢谢。

    img

    回复
    程序猿好圆 2022-03-09 05:40

    上面那一条代码是可以的,下面那条爆出了更多的警告。

    回复
    技术专家团-小桥流水 回复 程序猿好圆 2022-03-09 06:28

    哦哦,那就用上面那个

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月9日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部