Microduino 姿态台灯/zh
概述
原理通过体感控制,那就必须用到无线通讯,Microduino无线通信方案非常多:nRF24、smartRF、Zigbee、BT等,这里,我们使用采用nRF24无线通讯方案。Microduino姿态传感器(10DOF)获取姿态数据,经过量化成颜色值(0-255)再发送给彩色台灯,台灯接收到数据后,点亮彩灯。台灯采用单总线WS2812彩灯,每个灯内置控制IC芯片,能自由、简单控制。 材料清单
文档程序下载:mpu_ws2812 3D模型下载:文件:3D-Ball.zip 台灯制作
将所有模块无上下顺序叠加起来。
需要用到_99_LCD_NeoPixel库文件,参考安装Arduino IDE Microduino程序库支持包。安装好硬件支持包后,打开示例库中的strandtest程序。
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
PIN定义单总线灯的控制引脚,”60”定义了灯的数量,用户可根据自身情况更改。更改 编译通过后选择好板卡下载就行。下载成功后我们可以看到炫酷的效果。此时还没用到nRF24通讯模块。 体感遥控制作因为考虑到姿态是全方位的,所以考虑给它做个球形外壳,采用3D打印机打印。
将所有模块无上下顺序叠加起来。
根据搭建硬件电路的规格尺寸,采用SketchUp构建3D模型。
整体调试
解压程序,分别打开两个程序,一个是发送,一个接收。
发送端:"mpu.h"是姿态检测子程序,"nrf.h"是2.4G无线无线控制程序。 Microduino姿态传感器(10DOF)获取姿态数据,经过量化成颜色值(0-255)。 //=以下三行是用加速度计算三个轴和水平面坐标系之间的夹角
Angel_accX=atan(Ax/sqrt(Az*Az+Ay*Ay))*180/3.14;
Angel_accY=atan(Ay/sqrt(Ax*Ax+Az*Az))*180/3.14;
Angel_accZ=atan(Az/sqrt(Ax*Ax+Ay*Ay))*180/3.14;
Angel_accX_send=map(abs(Angel_accX),0,90,0,255);
Angel_accY_send=map(abs(Angel_accY),0,90,0,255);
Angel_accZ_send=map(abs(Angel_accZ),0,90,0,255);
接收端:接收到数据后,点亮彩灯。 Angel_accX=rec.rf_x; //接收请求时序赋值
Angel_accY=rec.rf_y;
Angel_accZ=rec.rf_z;
Serial.print(Angel_accX);
Serial.print(",");
Serial.print(Angel_accY);
Serial.print(",");
Serial.print(Angel_accZ);
Serial.println("");
colorWipe(strip.Color(Angel_accX, Angel_accY, Angel_accZ), 10);
2S内没接收到nrf的数据将关闭彩灯。 if(safe_ms>millis()) safe_ms=millis();
if(millis()-safe_ms>2000)
{
colorWipe(strip.Color(0, 0, 0), 50);
}
分别将下载到对应的硬件。在BM模块中接上电池,打开BM上的电源开关,若电池没电,直接插上MicroUSB就可以给电池充电,注意:BM更换电池后若不能启动电源,需要插上USB启动BM。滚动小球观察台灯变化。 注意问题
|