初学Arduino,询问这段代码执行遇到的问题

   一直想尝试着给小车加一个无线通讯模块也在网上查了不少资料,但大部分都需要自己编写通讯处理程序看到资料里那好几页的讲解,“协议”、“帧”、“校验”、“指针”……我还是退却了:(

    前些天在网上偶然看到了DFRobot销售的一款APC220无线数传模块看了看使用例程,又上网查了查资料感觉使用还是很簡单的,正适合我这种没有什么编程基础的人:)于是果断拍下。

    昨天中午左右到货迫不及待地打开包装,将APC220与电脑接在一起安装驱动,开始设置问题开始出现了……

    感觉有点莫名奇妙,将APC220拔下重新插了一次,重复操作Error依然存在。将另一块模块换上还是一样。

不解之下通过淘宝旺旺联系了DFRobot的店主,并详细描述了问题之后,他给了我几个解决办法但我一一尝试后,问题还是存在……最后他建议我换台电脑试试看,果然换了一台台式机之后,问题迎刃而解:)成功设置好之后,在Arduino中写入一个小程序(Arduino发送PC接收),打开PC机的串口终于接收到了数据。

    晚上吃过饭后继续。这次又碰到麻烦了……

    在Arduino中写入程序后(PC发送Arduino接收),单片机怎么也收不到PC发出的信号上网查资料,检查折腾了一个多小时,还是不好使看来又得麻烦店主了……:(

    再次联系店主,说明情况;再次给建议再次尝试;再次不好使……

又半个小时后,问题终于查清了我的Arduino板子是在RobotBase买的,是原版的但是原版的Arduino和APC220的电平冲突,需要将TX和RX上串的1K电阻改为4.7K今天早晨早早跑去电子商店买了几个4.7K的贴片,回来将1K电阻卸下焊上4.7K,写程序上电,开串口助手发数据,终于看到Arduino板上的LED灯亮了起来:)

加载中,请稍候......

//0xEE 转为二进制数应该为;


结果在串ロ调试窗口显示的是

0x82 转为二井制数应该为

这样的结果根本不对我知道是我使用错了。请高手指点一下!!!在线等!!!


首先你要知道bitRead(X,N)这个函数的功能
bitRead()   读取一个数的位。bitRead(x, n) X:想要被读取的数 N:被读取的位0是最重要(最右边)的位    该位的值(0或1)。然后你的代码也是囿误的你for循环循环了9次,应该把判断条件改为i<=7或者i<8然后举例说明吧,比如0xE1读取出来的值是1000 故此符合N=0时从最右边开始读取。

十分感谢函数的工作原理弄明白了。接下来就好弄了

我要回帖

 

随机推荐