|
火车是国人长途旅行的首选工具,绿皮火车也是一代代中国人难忘的记忆。我上大学的时候,需要坐28小时50分钟的火车,转车后再继续乘坐20多小时的火车才能到家。火车上充斥着的各种味道记忆犹新。印象更深刻的是寒假里,恰逢春节,火车早已人满为患,座位上都会躺着人。偏偏总有列车售货员推着小车兜售食物饮料。仿佛拉锁一般,人潮在小车前面打开,又在小车后面闭合。通常还会有人跟在小车后面趁着小车拉开人流去上一趟厕所之类的。售货员的操着带有地方特色的吆喝声,会将每一个人从昏昏沉沉中拉回现实。
上次试验成功了语音模块,这次就把它装在小车上,让小车一边行进一遍吆喝。
硬件连接很简单,VCC/GND/外加D12当成串口输出即可。
简单起见,依然沿用寻线小车的代码,添加上我们的功能即可。
1. 语音模块使用的是串口,我们在头部加入软串口的声明:#include <SoftwareSerial.h>
2. 加入我们要他发出来的语音,已经包括了帧头控制命令和校验码这是“香烟啤酒矿泉水,花生瓜子鸡大腿,脚让一下”的 GBK 编码
const char propagate[]= {0xFD,0x00,0x2A,0x01,0x01,0xCF,0xE3,0xD1,0xCC,0xC6,0xA1,0xBE,0xC6,0xBF,0xF3,0xC8,0xAA,0xCB,0xAE,0x2C,
0xBB,0xA8,0xC9,0xFA,0xB9,0xCF,0xD7,0xD3,0xBC,0xA6,0xB4,0xF3,0xCD,0xC8,0xA3,0xAC,0xBD,0xC5,0xC8,0xC3,0xD2,0xBB,0xCF,0xC2,0x8C};
3. 我们使用一个时间变量做判断,每隔10s发送上述语音一次
[kenrobot_code]const char propagate[]=
{0xFD,0x00,0x2A,0x01,0x01,0xCF,0xE3,0xD1,0xCC,0xC6,0xA1,0xBE,0xC6,0xBF,0xF3,0xC8,0xAA,0xCB,0xAE,0x2C,
0xBB,0xA8,0xC9,0xFA,0xB9,0xCF,0xD7,0xD3,0xBC,0xA6,0xB4,0xF3,0xCD,0xC8,0xA3,0xAC,0xBD,0xC5,0xC8,0xC3,0xD2,0xBB,0xCF,0xC2,0x8C};
3. 我们使用一个时间变量做判断,每隔10s发送上述语音一次
if
(millis()-starttime>10000UL) {
starttime=millis();
for (byte
index=0;index<sizeof(propagate);index++)
{
softSerial.write(propagate[index]);
}
}[/kenrobot_code]
最终效果如下,那个位置有弯曲,小车会疯狂的抖动。
工作视频可以在 https://zhuanlan.zhihu.com/p/33151880 看到
完整代码下载
lfrcar.zip
(79.56 KB, 下载次数: 1)
|
|