一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5233|回复: 10

[DIY套件使用教程] 【社建电子原创】arduino zion图形编程示例2:呼吸灯

[复制链接]
发表于 2014-9-8 15:21 | 显示全部楼层 |阅读模式
本帖最后由 社建电子 于 2014-9-8 16:07 编辑

因为LED驱动方式是脉冲式(又称为PWM和占空比),灯全亮的时候输出占空比是100%,半亮的时候是50%,灭的时候是0%arduino zion内部使用2560~255)个数字来表示占空比大小,255时占空比100%128时占空比50%0时占空比0%,这里要使用一个新模块【当】(当条件满足时)执行相应输出,也就是当数字是128时灯半亮,当数字减小时,亮度变暗直到熄灭,当增大时亮度变亮直到全亮。
下面介绍步骤,首先【主程序】一定要第一个放入
A.JPG

点击【控制】选择【当】
B.JPG

C.JPG

设定条件,点击【常用计算】选择【大于】或者【<
D.JPG

E.JPG

点击【数字常数】选择【数值变量名】
F.JPG

G.JPG

点击【数字常数】选择【1
H.JPG
I.JPG

1改成255
J.JPG

K.JPG

点击【大于】模块上的小三角块
L.JPG


把大于改成小于<
M.JPG

N.JPG

点击【数字/常数】选择【给模拟量赋值】
O.JPG

P.JPG

变量名都得改成一样才行,这里改成呼吸灯拼音huxideng
R.JPG

点击【常用计算】选择【+
S.JPG

拖动模块嵌入
T.JPG

U.JPG

模块移动

嵌入【数值变量名】,改为一样
V.JPG

W.JPG

X.JPG

+0改为+1
Y.JPG

点击【DFRobot】选择【可调亮度LED模块】
Z.JPG

ZA.JPG

把引脚号改为48
ZB.JPG

拖动255这个模块,拖到左边框外面去,就删除了
ZC.JPG

ZD.JPG



Q.JPG
 楼主| 发表于 2014-9-8 15:27 | 显示全部楼层
本帖最后由 社建电子 于 2014-9-8 16:15 编辑

这个LED模块的亮度级别,要跟随变量
ZE.JPG

ZF.JPG

改名一致即可
ZG.JPG

插入一小段延迟【这么说好像别扭】
ZH.JPG

就这样,LED的亮度增加过程算是完成了,接下来是亮度减小过程












再嵌入个【当】
ZI.JPG

嵌入【大于】,这里跟上面相反才行
ZJ.JPG

嵌入变量并改名一致,嵌入数字并改为0
ZK.JPG

依次嵌入,需要的改名一致即可
ZL.JPG

末尾加个延迟,一次呼吸完成后停一会继续呼吸
ZM.JPG

鼠标右键点击此空白处可以增加说明标签 Add Comment
ZN.JPG

点击【?】可以关闭打开标签框
ZO.JPG

如果删除标签,鼠标右键点击选择Delete
ZW.JPG

在标签框内可以输入说明文字
ZP.JPG

如果标签框被挡住了,点击2下【?】可以显示上面了
ZR.JPG

ZS.JPG

标签也可以移动到空白处,免得挡住不好观看
移动方法,鼠标指针移动标签框上,在指针变为手时,

就可以拖动标签框了
ZT.JPG

【主程序】大模块也可以整体移动,方法同上

注意,如果有的模块没有放好,移动【主程序】大模块时,小模块会掉出,同时点击【下载到arduino】时也会出错
ZU.JPG

ZX.JPG

全部完成后点击【下载到arduino】就可以看到效果了。
ZV.JPG

本例结束
【待续】

回复

使用道具 举报

发表于 2014-9-8 15:37 | 显示全部楼层
给社建顶顶~~~~~~~~~~~中秋节快乐!
回复

使用道具 举报

发表于 2014-9-8 16:03 | 显示全部楼层
无图无真相~~
回复

使用道具 举报

发表于 2014-9-8 16:13 | 显示全部楼层
中秋节快乐!
回复

使用道具 举报

 楼主| 发表于 2014-9-8 16:17 | 显示全部楼层
arduino zion图形编程示例2.pdf

arduino zion图形编程示例2.pdf

1.29 MB, 下载次数: 346, 下载积分: 一乐金币 -1

回复

使用道具 举报

发表于 2014-9-8 18:35 | 显示全部楼层
这就是传说的图形编程,好复杂啊

点评

其实挺简单的,只是介绍的复杂了。  发表于 2014-9-8 19:41
回复

使用道具 举报

发表于 2014-9-8 19:44 | 显示全部楼层
社建兄好牛啊,开始玩编程了。
回复

使用道具 举报

发表于 2014-9-8 21:55 | 显示全部楼层
学写了个交通交互灯,感觉时间是一直累加的,必须要有人把按钮按下行人的绿灯才亮;下面是代码
//记录自上次变灯的时间
changeTime= millis();這句就是累加吗?加了个串口检测,看见一直是累加起走的,才学不是很懂,有知道的朋友请科普下,谢谢!!1s,3s,5s,7s,9s.......193s,195s,197s,199s


//-------------------------
int carRed=1;//指定机动车灯
int carYellow=2;//LED黄
int carGreen=3;//LED绿指定行人灯
int pedRed=4;
int pedGreen=5;
int button=6;//按钮
int crossTime=5000;//允许行人通过
unsigned long changeTime;//按钮按下时间

void setup(){
Serial.begin(9600);
pinMode(carRed,OUTPUT);
pinMode(carYellow,OUTPUT);
pinMode(carGreen,OUTPUT);
pinMode(pedRed,OUTPUT);
pinMode(pedGreen,OUTPUT);
pinMode(button,INPUT);
digitalWrite(carGreen,HIGH);
digitalWrite(pedRed,HIGH);
}
void loop(){
int state=digitalRead(button);
//检查按钮是否按下,并且是否距上次按下
//已经超过5秒
if(state==HIGH &&(millis()- changeTime)>5000){
//调用变灯函数
changeLights();
    }
}
//变灯函数
void changeLights(){
digitalWrite(carGreen,LOW);
digitalWrite(carYellow,HIGH);
delay(2000);

digitalWrite(carYellow,LOW);
digitalWrite(carRed,HIGH);
delay(1000);
digitalWrite(pedRed,LOW);//行人红灯灭
digitalWrite(pedGreen,HIGH);//行人 绿灯亮
delay(crossTime);
//闪烁行人绿灯
for(int x=0;x<10;x++){
digitalWrite(pedGreen,HIGH);
delay(250);
digitalWrite(pedGreen,LOW);
delay(250);
}
//行人红灯亮
digitalWrite(pedRed,HIGH);
delay(500);
digitalWrite(carYellow,HIGH);
digitalWrite(carRed,LOW);
delay(1000);
digitalWrite(carGreen,HIGH);
digitalWrite(carYellow,LOW);
//记录自上次变灯的时间
changeTime= millis();
Serial.print(changeTime/10000);
Serial.println("s");
}




//---------------------------

回复

使用道具 举报

发表于 2014-9-9 01:43 | 显示全部楼层
毁三观的图形编程
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-10-1 04:00 , Processed in 0.065843 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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