iOS设备与蓝牙4.0应用例程之 三色灯控制(PWM控制)
来源:互联网 发布:人工智能国际期刊 编辑:程序博客网 时间:2024/04/27 16:25
蓝牙4.0 技术交流讨论群 : 228014986
本节主要讲解蓝牙模块的AT指令,以及iOS设备通过调用at指令达到控制效果:
需要准备的硬件:
1. zbmodule 蓝牙4.0模块
2. Arduino开发板
3. BLE Shield 蓝牙4.0 背板
BLE Shield 蓝牙4.0 背板上除了能跟arduino通信外,还对ZBModule蓝牙4.0模块上接口作了扩展
包括3路pwm 用三色led灯链接 1路adc 用可调电阻链接 1个物理按键。
可以供我们更加直观的体会背板提供的扩展AT指令功能。
模块AT指令是模块自身的一些特色功能,对于一些简单的应用,可以不用增加单片机的情况下,
直接达到iOS设备对底层硬件控制的效果。ZBModule PWM AT指令:
首先先普及一下PWM的知识:http://baike.baidu.com/view/631384.htm?fromId=168039 百度百科介绍的很全,我就不复制粘贴了。PWM里面一个概念是占空比,就是高电平占据整个周期的时间。详见http://baike.baidu.com/view/201672.htm
它的用途很多,但是最常用的功能是调节“能量”大小:一个周期内,高电平(或者低电平)时间的长短,直接关系到后端电路导通(断开)的时间。
其表现就是灯光的强弱,马达转速的高低等等。
当然PWM还有很多其他的用法,之后也可以慢慢接触到。
ZBModule的PWM特性:
首先ZBModule 支持4路PWM AT指令控制
AT 指令格式: HEADER1 HEADER2 LENGTH CMD <n> CHK TAIL
HEADER1 HEADER2 包头
LENGTH 命令长度
CMD 命令字
<n> 为命令参数
CHK 为校验和 CHK=(CMD+PAYLOAD1+..PAYLOADn)&0xFF
TAIL 为包尾
实际命令:
0xA5 0xA3 0x02 0x02 0xnn 0xtt 0xchk 0x5a
其中 0xA5 0xA3 为包头 表明是at指令0x02 为长度
0x02 为命令
0xnn pwm通道号(1<=nn<=4)分别控制RGB三种颜色灯
0xtt pwm占空比(1<=tt<=99)值越大越亮
chk 为校验和
0x5a 为包尾
https://github.com/kitabc/TricolorLight
可执行app在QQ群共享里面
- - (IBAction)doLedSliderChanged:(id)sender { //滑条响应函数,在里面向下发送AT指令
- UISlider *mSlider = (UISlider*)sender;
- uint8_t cmdBuf[16] = {0};
- uint8_t channelNo = 0;
- uint8_t duty = 0;
- cmdBuf[0] = 0xa5;//HEADER1
- cmdBuf[1] = 0xa3;//HEADER3
- cmdBuf[2] = 0x02;//LENGTH
- cmdBuf[3] = 0x02;//CMD
- switch (mSlider.tag) {
- case 1001:
- //NSLog(@"R");
- channelNo = 3; //通道号
- duty = (uint8_t)(mSlider.value*99);
- break;
- case 1002:
- // NSLog(@"G");
- channelNo = 2;
- duty = (uint8_t)(mSlider.value*99);
- break;
- case 1003:
- // NSLog(@"B");
- channelNo = 4;
- duty = (uint8_t)(mSlider.value*99);
- break;
- default:
- break;
- }
- if(channelNo!= 0)
- {
- cmdBuf[4] = channelNo;//PWM channel
- cmdBuf[5] = duty;//PWM duty
- cmdBuf[6] = 0x00;
- cmdBuf[7] = 0x5a;//TAIL
- NSData *adata = [[NSData alloc] initWithBytes:cmdBuf length:16];
- if(t.activePeripheral != nil)
- {
- [t writeDataToSscomm:adata];
- }
- }
- }
代码基本跟之前的透传代码差不多,只是把之前的透明传输换成命令而已,
有了PWM我们以后就可以自己:控制灯光,遥控小车,控制舵机.........
蓝牙4.0 技术交流讨论群 : 228014986
- iOS设备与蓝牙4.0应用例程之 三色灯控制(PWM控制)
- Arduino蓝牙控制三色灯
- Arduino蓝牙控制三色灯
- iOS设备与蓝牙4.0应用例程之 透明透传
- [C#] 编程控制笔记本蓝牙与外部蓝牙设备通信
- [C#] 编程控制笔记本蓝牙与外部蓝牙设备通信
- 嵌入式驱动之PWM控制LED灯
- iOS蓝牙控制模型
- ios 简单蓝牙控制
- ios 蓝牙控制
- LCD背光控制的实现(PWM应用)(2)
- 嵌入式应用开发之基础设备控制
- 电机控制PWM(MCPWM)
- 【iOS与EV3混合机器人编程系列之7】通过蓝牙控制EV3
- iOS设备方向控制
- 【BLE】CC2541之PWM控制直流电机
- PX4飞控之PWM输出控制
- 智能家电之蓝牙控制
- PM的----心声
- dm-cache 与 bcache
- 国内主要语料库总汇
- ANSI Common Lisp 第二章答案
- JavaScript 目标装配式编程(Target Assemble Programming)
- iOS设备与蓝牙4.0应用例程之 三色灯控制(PWM控制)
- hdu 5611——Balls Rearrangement
- poj 3159 Candies(差分约束,dij+heap,spfa+stack)
- 将TataTable转换为json字符
- BLEduino XBEEduino 兼容 蓝牙4.0 BLE 的 Arduino Leonardo
- thinkpad x系列电脑安装iOS虚拟开发环境:mac os 10.8.4 xcode4.6.3 vmware9
- 堆排序
- 执行有输出参数的存储过程
- 设计模式之代理模式(Proxy)