极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 40091|回复: 33

蓝牙控制LED灯的亮度问题

[复制链接]
发表于 2014-1-22 15:13:07 | 显示全部楼层 |阅读模式
本帖最后由 活着就是幸福 于 2014-1-22 15:34 编辑

我用APPINVENTOR写了个android客户端,用一个slider滑动控制led灯的亮度,android端已经上传,以下是arduino端代码,有个问题,这样调节的结果灯闪一下就灭,除了通过增加delay时间,还有其它办法吗?

  1. #include <SoftwareSerial.h>
  2. SoftwareSerial mySerial(2,3);//Define RX,TX
  3. int pinLED=11;
  4. //int val=0;
  5. void setup(){
  6.    Serial.begin(9600); //define the bounds rate
  7.    mySerial.begin(9600); //define bt bounds rate
  8.    pinMode(pinLED,OUTPUT);
  9. }

  10. void loop(){
  11.   //read the signal from bt

  12.    if(mySerial.available()>0){
  13.         int val=mySerial.read();
  14.         Serial.println(val);
  15.         analogWrite(pinLED,val);
  16.    delay(200);
  17.    }
  18. }
复制代码

察看监视器得到的数据是slider数据后紧跟一个0,不知道怎么回事,是不是因为蓝牙通道没数据传来时默认0?但是程序里已经设定没蓝牙数据时不应该有赋值的呀?哪位能帮忙一下,谢谢先!

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-1-22 15:39:57 | 显示全部楼层
准备回家过年了,嘿嘿,顺便给你点提示:1.看看上位机发出的信号,最后那个0或许是上位机发出的,这需要改上位机程序。
2,把你程序里的if改成while,loop里边加上analogWrite(pinLED,val);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-22 15:46:30 | 显示全部楼层
谢谢邵兄,用while测试过,结果一样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-22 15:50:11 | 显示全部楼层
153
0
224
0
130
0
191
0
247
0
128
0
56
0
140
0
199
0
monitor窗口显示的反馈,这个0不知道怎么来的。
回复 支持 反对

使用道具 举报

发表于 2014-1-22 15:56:39 | 显示全部楼层
//int val=0;两个//去掉试试
我觉得应该是发送端的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-22 16:05:21 | 显示全部楼层
这个验证过的,应该没有关系。放在前面申明和后面申明应该效果是一样的。是不是上位机的问题,我得再确认一下inventor。
回复 支持 反对

使用道具 举报

发表于 2014-1-22 16:07:45 | 显示全部楼层
是不是发送端有数据就发一遍,没数据就发0.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-22 16:20:25 | 显示全部楼层
我也是这么猜测,有解决办法吗?
回复 支持 反对

使用道具 举报

发表于 2014-1-22 16:22:53 | 显示全部楼层
活着就是幸福 发表于 2014-1-22 16:20
我也是这么猜测,有解决办法吗?

你先试试在代码中如果收到0就忽略之......

看看情况如何
回复 支持 反对

使用道具 举报

发表于 2014-1-22 16:27:10 | 显示全部楼层
活着就是幸福 发表于 2014-1-22 16:20
我也是这么猜测,有解决办法吗?

if跟while不會有差別,錯誤是在Android程式裡喔。
回复 支持 反对

使用道具 举报

发表于 2014-1-22 16:29:51 | 显示全部楼层
活着就是幸福 发表于 2014-1-22 16:20
我也是这么猜测,有解决办法吗?

有可能是您的Android程式會發送一次後就重置一次,導致傳出初始的0,要再檢查一下。
回复 支持 反对

使用道具 举报

发表于 2014-1-22 16:34:45 | 显示全部楼层
活着就是幸福 发表于 2014-1-22 16:20
我也是这么猜测,有解决办法吗?

還有,int val=0; 也不會造成您現在的錯誤。
回复 支持 反对

使用道具 举报

发表于 2014-1-22 16:35:02 | 显示全部楼层
活着就是幸福 发表于 2014-1-22 16:20
我也是这么猜测,有解决办法吗?

還有,int val=0; 也不會造成您現在的錯誤。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-22 16:37:59 | 显示全部楼层
C:\Users\jezhong\Desktop\1.jpg
C:\Users\jezhong\Desktop\2.jpg
C:\Users\jezhong\Desktop\3.jpg
C:\Users\jezhong\Desktop\4.jpg
C:\Users\jezhong\Desktop\5.jpg
按理说程序很简单, 有谁熟悉appinventor的,帮我也看看上位机的程序,哪里有错?
另外,这个0是个问题,还有我需要调节到一个值时,灯可以常亮,而不是亮一下就灭。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-22 16:38:31 | 显示全部楼层
怎么发图?
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 12:26 , Processed in 0.049890 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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