多彩LED水晶球
本帖最后由 ent173 于 2013-9-22 21:03 编辑亚克力水晶球,mega8主控,电脑蓝牙控制
http://v.youku.com/v_show/id_XNjExNzk4OTE2.html
内置3.7V 600mAh锂电池
供电电路和主控分离,两路供电,5V给主控,3.3V给蓝牙
供电电路和主控电路组合在一起
电池和电路组合在一起
加上水晶球支架
USB接口和开关特写
USBtinyISP通过软排线下载程序
加上水晶球熄灭的样子
水晶球发紫光的样子
代码稍后更新。。。
真漂亮哦,上面放的这个水晶球儿那里有卖? 绿林网页 发表于 2013-9-22 13:10 static/image/common/back.gif
真漂亮哦,上面放的这个水晶球儿那里有卖?
淘宝 大概20元一个 做的真好,技术、艺术,这是arduino极力倡导的。 棒极了,无限遐想,干得漂亮 程序呢,也传一下啊。 代码有bug,待完善int val = {
255, 255, 255,
255, 0, 0,
0, 255, 0,
0, 0, 255,
255, 255, 0,
0, 255, 255,
255, 0, 255,
127, 255, 0,
127, 0 , 255,
0, 127, 255,
255, 127, 0,
255, 0, 127,
0, 255, 127,
0, 0, 0
};
String data = "";
boolean isComplete = false;
int id = {0, 0, 0};
int rgb = {0, 0, 0};
int pins = {9, 10, 11};
int lts = 64;
int pointer = 0;
boolean isLoop = true;
void setup() {
Serial.begin(9600);
fade(0);
}
void loop() {
if(isComplete) {
if(data.length() > 15){
clearData();
} else if(data == "clear"){
clearData();
} else if(data == "fade"){
fade(0);
} else if(data == "continue"){
fade(pointer - 3);
} else if (data == "white") {
lightIndex(0);
} else if (data == "red") {
lightIndex(1);
} else if (data == "green") {
lightIndex(2);
} else if (data == "blue") {
lightIndex(3);
} else if (data == "yellow") {
lightIndex(4);
} else if (data == "cyan") {
lightIndex(5);
} else if (data == "purple") {
lightIndex(6);
} else if (data == "black") {
lightIndex(13);
} else{
parseData(0);
parseData(1);
parseData(2);
lightRgb(rgb, rgb, rgb);
}
clearData();
}
}
// clear data
void clearData() {
data = "";
isComplete = false;
}
void serialEvent() {
while(Serial.available()){
char c = (char)Serial.read();
Serial.print(c);
if(c == ',') {
isComplete = true;
} else {
data+=c;
}
if(data.length() > 15){
data = "";
isComplete = false;
}
}
}
// convert rgb string to integer
int parseData(int i) {
id = data.indexOf('r');
id = data.indexOf('g');
id = data.indexOf('b');
id = data.indexOf(',');
rgb = data.substring(id + 1, id).toInt();
return rgb;
}
void lightIndex(int i) {
rgb = val;
rgb = val;
rgb = val;
lightRgb(rgb, rgb, rgb);
}
// constrain rgb value and light rgb leds
void lightRgb(int r, int g, int b) {
// common vcc rgb led
analogWrite(pins, max(0, min(255, 255 - r)));
analogWrite(pins, max(0, min(255, 255 - g)));
analogWrite(pins, max(0, min(255, 255 - b)));
}
void fade(int i) {
int j=i;
data = "";
while(isLoop){
j+=3;
rgb = val;
rgb = val;
rgb = val;
for(int i=1; i<=lts; i++) {
serialEvent();
if(data == "pause") goto toPause;
lightRgb(rgb*i/lts, rgb*i/lts, rgb*i/lts);
delay(50);
}
for(int i=lts; i>=1; i--) {
serialEvent();
if(data == "pause") goto toPause;
lightRgb(rgb*i/lts, rgb*i/lts, rgb*i/lts);
delay(50);
}
if(j == 36)
j=0;
}
toPause:
{
isLoop == false;
pointer = j;
}
} 操作步骤:
1.MacOS 下打开蓝牙查找设备输入密码配对(第一次需要配对)
2.打开控制台终端 (Application->Other->Terminal 应用程序->其他->终端)
3.输入sudo cu -l /dev/tty.HC-05-DevB
4.输入密码,提示connected表示成功连接
5.输入操作命令
i. pause,暂停,用于从渐变发光模式切换为命令控制模式
ii. continue,继续,从当前暂停颜色继续发光
iii. fade, 渐变发光
iii. r255g255b255,rgb为颜色代码红绿蓝,后面是三色led发光数值,范围0-255
iv. 已设定几种简单颜色,分别为white, red, green, blue, yellow, cyan, purple, black,
v. 注意每个命令之后需要加英文逗号","
为什么用多重if而不用switch? 请教一下这个蓝牙是怎么和cheapduino连接的?什么型号的?
我最近刚刚上手cheapduino,苦于找不到也很小的蓝牙
页:
[1]