叫卖小车

火车是国人长途旅行的首选工具,绿皮火车也是一代代中国人难忘的记忆。我上大学的时候,需要坐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发送上述语音一次

if
(millis()-starttime>10000UL) {

starttime=millis();

for (byte
index=0;index<sizeof(propagate);index++)

{

softSerial.write(propagate[index]);

}

}

最终效果如下(图中位置有转弯,小车会疯狂抖动):

工作视频:

https://www.zhihu.com/video/938455736557309952

发布于 2018-01-21

文章被以下专栏收录