|
小车是DS版,无红外,有超声波。我在A2口接入了一枚LM35温度传感器,然后用论坛里给到的通过串口上传传感器信息的代码,进行数据上传。
具体程序是这样的:
void temperature_check() //温度监控
{
int n = analogRead(A2); //读取A2口的电压值
float t = n * (5.0/1023.0*100); //使用浮点数存储温度数据,温度数据由电压值换算得到
//此处后续加入十进制转十六进制代码
unsigned char hexdata[8] = {0xFF,0x63,0x00,t,0xFF};
Serial.write(hexdata, 8);
// Serial.println(t); //串口输出温度数据
delay(500); //等待0.5秒,控制刷新速度
}
然后在loop函数中加入这段代码:
void loop()
{
while(1)
{
Get_uartdata();
UartTimeoutCheck();
Cruising_Mod();
temperature_check();
}
}
完整的代码文件见附件
现在的情况是,温度能成功显示在上位机,但是小车接收不到指令,包括四轮和舵机都不动。一定概率还会出现不仅接受不到指令,温度也传不上来,同时一侧的轮子会跟随Arduino上的LED一起,亮(转)一秒,灭(停)一秒,如此往复的情况……猜测跟Delayed()函数有关。但不知道ledpin是如何影响到M2一侧的车轮电机的。
如果在loop()中将temperature_check(); 注释,即屏蔽这段代码,小车又能恢复正常。
wifi板使用的是5.0版的,根据http://www.wifi-robots.com/thread-2985-1-1.html这个帖子中的开通双向数据教程,打开/etc/inittab这个文件后,并没有ttyATH0::askfirst:/bin/ash --login这一行,有的是下面三行
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K shutdown
::askconsole:/bin/ash --login
前两行没变,第三行不一样。不知道wifi板的双向数据有没有开通呢。
现在的问题是,如何改动,才能达到在保留原来所有功能的同时,加入温度实时监控的功能呢?
这个改造跟我的毕业设计有关,希望各位大大能给予支持,帮助解决!非常感谢!!
wifi_robot_temperature_check.zip
(3.4 KB, 下载次数: 21)
|
|