----------开头篇----------
在一个寒冷的夜晚,楼梯口的LED照明灯就下岗了。
下班回家发现楼道口一片漆黑。
就是这种垃圾灯,还用不到半个月。拆开后发现驱动整个烧坏了。(忘拍照了)
可是灯的外壳是完好的啊。改造~~坚决改造。
想你想你想我。。。
可以改造个床头灯, 应急灯, 充电宝,跳蛋....污污~
(开玩笑)
应急灯这个可以有,还可以带10级调光,晚上开灯不刺眼。可以带无线集群遥控,长按集群键5秒,所有同接收版都亮灯,停电非常好用。也可以做充电宝。
那么问题来了,我不会写程序啊。
叮~百度去。。。
--------------------制作篇--------------------
-切割底部-
-钻孔-用洞洞板焊开关-
-焊单片机-
-放进壳体看看效果,还行-
-忽然想起没装充电板-装上-还有电量显示-
-翻箱倒柜找来以前买的18500锂电池1800mAh-
-组装-
-还行。就是暴力了些
没办法,空间有限。
-装灯-
-整体-
视频:
flash: http://player.youku.com/player.php/sid/XMzUzNDA5ODE2NA==/v.swf -最后没图片了只能发些制作中试验图-
电路图
后来发展无线程序失灵了。导致第一次可以控制灯亮灭,第二次失灵。算了反正目前用不到。
我这个失败的程序就不发了,发些百度到的。
调光
/***************************************************
****************************************************
名称:台灯
MCU:STC15F104W
日期:2014 /9/1
*****************************************************
****************************************************/
#include <REG52.H>
#include "intrins.h"
#define Uint unsigned int //宏定义
#define Uchar unsigned char
sfr INT_CLKO = 0x8f; //外部中断与时钟输出控制寄存器
sfr AUXR = 0x8e;
sbit KEY1=P3^0; //亮度减
sbit KEY2=P3^1; //开机/关机/待机
sbit KEY3=P3^2; //亮度加
sbit NPN=P3^3; //控制端
sbit IR=P3^5; //红外线
sbit LED=P3^4; //指示灯
Uchar Gears; //20级档位
Uchar PWM;
void KEY();
void Delay(Uchar a);
/****************************************************
********主函数:调用子函数**************************/
void main()
{
Gears=0;
AUXR &= 0x7f; //定时器0为12T模式
// AUXR |= 0x80; //定时器0为1T模式
TMOD=0x02; //定时器0 模式2
TH0=TL0=131; //定时器0赋初值
ET0=1; //打开定时器0中断
EA=1; //打开总中断
TR0=1; //定时器0启动
while(1)
{
KEY();
}
}
/*****************************************************
********子函数:按键函数****************************/
void KEY()
{
//======================
if(KEY1==0)
{
Delay(19);
if(KEY1==0)
{
if(Gears==0)
{
Gears=0;
}
else
{
Gears--;
}
while(!KEY1);
}
}
else
if(KEY2==0)
{
Delay();
if(KEY2==0)
{
}
}
else
if(KEY3==0)
{
Delay(19);
if(KEY3==0)
{
Gears++;
if(Gears>20)
{
Gears=20;
}
while(!KEY3);
}
}
}
/****************************************************
********子函数:延时函数***************************/
void Delay(Uchar a)
{
Uint b,c;
for(b=a;b>0;b--)
for(c=1000;c>0;c--);
}
/****************************************************
********子函数:定时器中断函数*********************/
void T0_time() interrupt 1
{
PWM++;
if(PWM>Gears)
{
NPN=0;
}
else
{
NPN=1;
}
if(PWM>20)
{
PWM=0;
}
}