|
一起来做 LED 连串接法的实验 (增加MCU来玩)
[复制链接]
|
|

楼主 |
发表于 13-4-2013 11:25 PM
|
显示全部楼层
小弟的灯里面有 4 种 灯泡 是给鱼缸灯使用的。。 重要目的达到大自然太阳颜色的变化...
因此 灯泡里面有微红色,微蓝色,微白色,光亮白 要顺序开灯 然后逆序关灯 达到大自然的生态

请大家帮帮忙找出这个电路的问题 ><
这个电路的运作是这样的 Vcc 12V 24 小时运作.. 不止是给灯供电 风扇, 温度记 之类也是需要 12V
电源供应采用了 高级 电脑 PSU 500w
左边到右边是 1 2 3 4
timer 是用 AC timer 稍微改装里面变成 12V 的 switch (不是问题别针对这个东西 )
电源接上..
relay 后面的电路是慢慢熄灯的电流 (不是重点)
灯在 7 AM ON 灯亮的次序 1 -> 2 -> 3 -> 4
灯在 7PM OFF 熄灯次序 4 -> 3 -> 2 -> 1
重复
1) All Lamp = ON AC timer = off
2) No.4 timer 555 delay 5 sec
3) No.4 timer 555 Delay 10 mins No.4 Relay ON ( lamp 4 关掉)
4) No.4 timer output turn NO No.3 Timer
5) No.3 Timer 555 Delay 10 mins No.3 relay ON ( lamp 3 关掉)
6) No.3 timer output Turn On No.2 Timer
7) No.2 timer 555 Delay 10 mins No.2 Relay ON ( lamp 2 关掉)
8) No.2 timer output Turn ON No.1 Timer
9) No.1 Timer 555 Delay 10 Mins No.1 relay ON ( lamp 1 关掉)
10) 7AM AC timer = ON
11) No.1 Timer Delay 5
12) No.1 timer delay 10 mins No.1 relay ON (lamp 1 ON)
13) No.1 timer output turn ON timer 2
14) No.2 timer delay 10 mins No.2 relay ON ( lamp 2 ON)
15) No.2 timer output turn ON timer 3
16) No.3 timer delay 10 mins No.3 relay ON (lamp 1 ON)
17) No.3 timer output turn ON timer 4
14) No.4 timer delay 10 mins No.4 relay ON ( lamp 2 ON)
15) 7PM AC timer = Off
16) All Lamp = ON AC timer = off
17) No.4 timer 555 delay 5 sec
18) No.4 timer 555 Delay 10 mins No.4 Relay ON ( lamp 4 关掉)
19) No.4 timer output turn NO No.3 Timer
20) No.3 Timer 555 Delay 10 mins No.3 relay ON ( lamp 3 关掉)
21) No.3 timer output Turn On No.2 Timer
22) No.2 timer 555 Delay 10 mins No.2 Relay ON ( lamp 2 关掉)
23) No.2 timer output Turn ON No.1 Timer
24) No.1 Timer 555 Delay 10 Mins No.1 relay ON ( lamp 1 关掉)
repeat n repeat
修正
所有 timer 555 的output 加上 2N2222 本帖最后由 angels1026 于 13-4-2013 11:29 PM 编辑
|
|
|
|
|
|
|
|
发表于 14-4-2013 02:27 PM
|
显示全部楼层
angels1026 发表于 13-4-2013 11:25 PM 
小弟的灯里面有 4 种 灯泡 是给鱼缸灯使用的。。 重要目的达到大自然太阳颜色的变化...
因此 灯泡里面有微 ...
电路很大问题呀!
555直接驱动继电器,555变了短命鬼。应该先连接一个晶体管,用晶体管驱动继电器。
都使用了继电器,干吗还要动用两个晶体管驱动灯炮?把2N2222和TIP32丢掉吧!
如果你会编程,建议使用Tiny Arduino

|
|
|
|
|
|
|
|
发表于 14-4-2013 02:32 PM
|
显示全部楼层
我看到555的输出短路了 |
|
|
|
|
|
|
|

楼主 |
发表于 14-4-2013 02:35 PM
|
显示全部楼层
西门庆33 发表于 14-4-2013 02:27 PM 
电路很大问题呀!
555直接驱动继电器,555变了短命鬼。应该先连接一个晶体管,用晶体管驱动继电器。
都 ...
修正
所有 timer 555 的output 加上 2N2222
2N2222 和 tip 31 可以 帮忙 慢慢关灯和慢慢开灯
|
|
|
|
|
|
|
|

楼主 |
发表于 14-4-2013 02:38 PM
|
显示全部楼层
koksoon980 发表于 14-4-2013 02:32 PM 
我看到555的输出短路了
那里那里
|
|
|
|
|
|
|
|
发表于 14-4-2013 02:38 PM
|
显示全部楼层
angels1026 发表于 14-4-2013 02:35 PM 
修正
所有 timer 555 的output 加上 2N2222
2N2222 和 tip 31 可以 帮忙 慢慢 ...
一个2N2222就可以驱动继电器了。丢掉TIP31吧。
|
|
|
|
|
|
|
|
发表于 14-4-2013 02:41 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 14-4-2013 02:47 PM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 14-4-2013 02:48 PM
|
显示全部楼层
koksoon980 发表于 14-4-2013 02:41 PM 
555输出通过1n4148短路去地了
应该是倒转接了 = = 电路运行的通吗 ?
|
|
|
|
|
|
|
|

楼主 |
发表于 14-4-2013 02:49 PM
|
显示全部楼层
西门庆33 发表于 14-4-2013 02:47 PM 
驱动灯炮方面
如果不是大功率灯炮,可以使用这电路

我想要做这个效果
|
|
|
|
|
|
|
|
发表于 14-4-2013 02:55 PM
|
显示全部楼层
angels1026 发表于 14-4-2013 02:49 PM 
我想要做这个效果
继电器只能开或关,不能使用在这种效果
|
|
|
|
|
|
|
|

楼主 |
发表于 14-4-2013 03:02 PM
|
显示全部楼层
西门庆33 发表于 14-4-2013 02:55 PM 
继电器只能开或关,不能使用在这种效果
relay 的出口接上这个电路
relay 只是用来做 switching 达到 1 2 3 4 4 3 2 1 效果
|
|
|
|
|
|
|
|

楼主 |
发表于 19-4-2013 12:46 PM
|
显示全部楼层
有时候我们人类要 upgrade 一下...
这次小弟改用了 MSP430
下面是小弟的源码 利用 analogWrite pwm 来控制亮度... 达到一粒一粒 LED 慢慢发亮- int LED1 = 13;
- int LED2 = 12;
- int LED3 =11;
- int i = 0;
- void setup(){
- pinMode(LED1, OUTPUT);
- pinMode(LED2, OUTPUT);
- pinMode(LED3, OUTPUT);
- }
- void loop(){
- for(i = 0; i < 255; i++)
- {
- analogWrite(LED1,i);
- delay(1000);
- }
- analogWrite(LED1,255);
- for(i = 0 ; i <255 ; i++ )
- {
- analogWrite(LED2,i);
- delay(1000);
- }
- analogWrite(LED2,255);
- for(i = 0 ; i <255 ; i++)
- {
- analogWrite(LED3,i);
- delay(1000);
- }
- analogWrite(LED3,255);
- }
复制代码 其实这个 code 是看了别人写的 然后自己改装一点
小弟不明白 (i=0 ; i < 255 ; i++)
小弟的看法是 i 变成 0 然后, 如果 i 小过 255 就 i 就会增加 1 直到 255 这个 loop 就 stop 不是很明白这里 希望有哪位大大可以讲解讲解
然后 (LED , i ) 就是 LED 亮度 = i
不过这个loop 会一直走 要添加什么东西 当 LED3 100% 亮 |
|
|
|
|
|
|
|
发表于 19-4-2013 06:38 PM
|
显示全部楼层
angels1026 发表于 19-4-2013 12:46 PM 
有时候我们人类要 upgrade 一下...
这次小弟改用了 MSP430
下面是小弟的源码 利用 analogWrite pwm 来控 ...
for(i = 0; i < 255; i++)意思是i的起始值是0,每loop一次,i将会增加一(i++),直至254才停止。
这个是从大到小
for(i = 254; i > 0; i--)
analogWrite(LEDx,254);已经是100%
analogWrite(LEDx,255) = digitalWrite(LEDx, HIGH)
本帖最后由 西门庆33 于 19-4-2013 07:01 PM 编辑
|
|
|
|
|
|
|
|
发表于 19-4-2013 06:43 PM
|
显示全部楼层
angels1026 发表于 19-4-2013 12:46 PM 
有时候我们人类要 upgrade 一下...
这次小弟改用了 MSP430
下面是小弟的源码 利用 analogWrite pwm 来控 ...
是不是开一个新帖子比较好?
|
|
|
|
|
|
|
|

楼主 |
发表于 19-4-2013 08:02 PM
|
显示全部楼层
西门庆33 发表于 19-4-2013 06:43 PM 
是不是开一个新帖子比较好?
等东西到了才开吧 有点期待
|
|
|
|
|
|
|
|

楼主 |
发表于 22-4-2013 01:24 PM
|
显示全部楼层
西门庆33 发表于 19-4-2013 06:38 PM 
for(i = 0; i < 255; i++)意思是i的起始值是0,每loop一次,i将会增加一(i++),直至254才停止。
小弟在这里想请问下大大 这个关于 switch case 的东东
小弟看了很久还是看不明白
这个是 arduino 的 example- const int sensorMin = 0; // sensor minimum, discovered through experiment
- const int sensorMax = 600; // sensor maximum, discovered through experiment
- void setup() {
- // initialize serial communication:
- Serial.begin(9600);
- }
- void loop() {
- // read the sensor:
- int sensorReading = analogRead(A0);
- // map the sensor range to a range of four options:
- int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
- // do something different depending on the
- // range value:
- switch (range) {
- case 0: // your hand is on the sensor
- Serial.println("dark");
- break;
- case 1: // your hand is close to the sensor
- Serial.println("dim");
- break;
- case 2: // your hand is a few inches from the sensor
- Serial.println("medium");
- break;
- case 3: // your hand is nowhere near the sensor
- Serial.println("bright");
- break;
- }
- delay(1); // delay in between reads for stability
- }
复制代码- void loop() {
- // read the sensor:
- int sensorReading = analogRead(A0);
- // map the sensor range to a range of four options:
- int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
- // do something different depending on the
- // range value:
- switch (range) {
- case 0: // your
复制代码 小弟不明白 map(), () 里面应该填写什么东西啊 小弟想要改换成 switch 按下去 LED 会 0++ 到 255 放开的时候 从 255++ 到回 0 猜想这个应该可帮到我吧
|
|
|
|
|
|
|
|
发表于 23-4-2013 11:39 AM
|
显示全部楼层
angels1026 发表于 22-4-2013 01:24 PM 
小弟在这里想请问下大大 这个关于 switch case 的东东
小弟看了很久还是看不明白
switch (range)是用来分析range的值,以便处理case
- range是0时,执行case 0
- range是1时,执行case 1
- 以此类推
int range = map(sensorReading, 0, 600, 0, 3)
sensorReading的值是介于0至600,间隔是600/4=150
4是从0至3得出来(0,1,2,3)
sensorReading=0,range则=0
sensorReading=120,range还是=0
sensorReading=160,range则=1
sensorReading=480,range则=2
sensorReading=500,range则=3
sensorReading=600,range还是=3
无论sensorReading是多少,range的值都是介于0至3
本帖最后由 西门庆33 于 23-4-2013 12:05 PM 编辑
|
|
|
|
|
|
|
|

楼主 |
发表于 23-4-2013 06:49 PM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|