极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 34926|回复: 26

新人求助,多次测试无解。希望论坛的各位大神指点

[复制链接]
发表于 2013-7-15 09:49:22 | 显示全部楼层 |阅读模式
我在做arduino与蓝牙模块之间的通信连接试验,但是试了很久都不能成功。
我做的是通过手机蓝牙与arduino连接,实现点亮LED的试验。以下是代码:
char val;
int ledpin=8;
void setup()
{
  Serial.begin(9600);
  pinMode(ledpin,OUTPUT);
}

void loop()
{
  val=Serial.read();
  if(val=='q')
  {
    digitalWrite(ledpin,HIGH);
    Serial.println("LED ON!");
  }else if(val=='w'){
    digitalWrite(ledpin,LOW);
    Serial.println("LED OFF!");
  }
}

试验结果如下


手机的发送是正常的,但是arduino那边没有信息返回。

用串口工具直接给arduino发信息时,结果如下

手机端收到了arduino的信息,而且LED也被点亮。

但是直接用手机给arduino发信息,LED不被点亮,而且没有信息返回。
希望各位能抽些时间给小弟看看。先谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2013-7-15 11:39:48 | 显示全部楼层
求助,求助啊
回复 支持 反对

使用道具 举报

发表于 2013-7-15 13:18:31 | 显示全部楼层
只有arduino的发射程序,没有看见接收程序.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 13:26:34 | 显示全部楼层
林定祥 发表于 2013-7-15 13:18
只有arduino的发射程序,没有看见接收程序.

你指的是那个arduino板上的代码?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 17:02:48 | 显示全部楼层
求助求助...
回复 支持 反对

使用道具 举报

发表于 2013-7-15 17:03:04 | 显示全部楼层
本帖最后由 拾瑞 于 2013-7-15 17:23 编辑

LOOP里面加点DELAY试试!

9600的速度,相对于LOOP里面的代码速度太慢了,或者说对不上拍吧;

另外,你得用Serial.available() 做判断,串口是否有信息到来啊........

while(Serial.available())
    {  
     rcvByte += char(Serial.read());
     delay(2);
   
    }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 17:53:18 | 显示全部楼层
拾瑞 发表于 2013-7-15 17:03
LOOP里面加点DELAY试试!

9600的速度,相对于LOOP里面的代码速度太慢了,或者说对不上拍吧;

这个会是代码的问题吗?网上也有人用同样的代码成功试验啊。我现在都觉得是蓝牙模块这边的问题。它上面还有KEY和NC这两个针脚,不知道有没有联系
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 20:54:04 | 显示全部楼层

求助求助...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 23:10:22 | 显示全部楼层
唉,好悲催啊...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-16 09:21:56 | 显示全部楼层
继续求求助....
回复 支持 反对

使用道具 举报

发表于 2013-7-16 19:34:34 | 显示全部楼层
是不是手机上的串口软件发送的字符格式不对,用arduino打印一下接收到的东西看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-16 20:51:03 | 显示全部楼层
wisology 发表于 2013-7-16 19:34
是不是手机上的串口软件发送的字符格式不对,用arduino打印一下接收到的东西看看。

在电脑上可以打印到他的值吗?
回复 支持 反对

使用道具 举报

发表于 2013-7-17 21:13:52 | 显示全部楼层
Angel.Nearly 发表于 2013-7-16 20:51
在电脑上可以打印到他的值吗?

可以,你都可以打印“LED ON”这些。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-18 09:06:28 | 显示全部楼层
wisology 发表于 2013-7-17 21:13
可以,你都可以打印“LED ON”这些。
  1. char val;

  2. void setup(){
  3.   Serial.begin(9600);
  4. }

  5. void loop(){
  6.   val=Serial.read();
  7.   Serial.println(val);
  8.   if(val=='q'){
  9.     Serial.println("OK");
  10.   }
  11. }
复制代码
这样写没问题吧

但是这样在蓝牙无论有没有连接上都是这样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-7-18 15:40:22 | 显示全部楼层
你用的UNO吧?是不是只有一个串口?兰牙模块是不是接在这唯一的串口上了?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-6-3 23:53 , Processed in 0.055203 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表