LED燈管的改造
2022-03-24由 略略略GaGa 發表于 農業
日光燈管怎麼改成led燈
今日閒得發慌,無事可做[吐舌]。發呆[呆無辜]間看到桌子邊上自己平時照明使用的LED燈管(類似於某寶的這種)
想到平時上床睡覺經常忘記關燈,不得不跑下來關燈,就想著能不能動手改造下這燈管,放個遙控器在床邊,這樣忘記關燈時就可以直接用遙控器把燈管關了,不用再麻煩跑下床關燈。[呆無辜]
說幹就幹![機智]
首先是先確認需求
對於我來說,在平時的使用中,LED燈管的開啟,我可以動手開啟按鍵開關,對這裡不需要再去改進。主要改動在關LED燈這個步驟,我需要增加一個功能,能夠透過遙控器來對LED燈管進行斷電操作。
接著就是需求分析並確認方案
對於上述需求的分析,考慮到自己手頭閒置很久模組物料的最大化的利用(主要是為了省錢[看])
,最終定下來的方案如下(使用模組基本都是以前自學使用的,後面基本都閒置了[黑臉]):
主控晶片:
STC90C516RD+
遙控:
紅外遙控器+紅外接收模組
通斷電:
繼電器開關模組
啟動開關:
無鎖開關
東西都準備好了,接下來需要進行原理圖的設計和各模組之間的連線。原理圖大致如下(不會畫原理圖,所以有點潦草[看][看][看])
模組連線圖如下所示:
簡要分析
我們將繼電器的控制腳接到MCU的P0。0腳,再無鎖開關按下後,微控制器通電工作的時候,開啟繼電器,使得A B點由常開變為常閉,這個時候LED燈可以正常點亮。將紅外接收模組連線到MCU的P3。2腳,當紅外模組接收到遙控器傳送的訊號時,則MCU將繼電器斷開,從而斷開了LED燈的通電。
程式設計及燒錄
根據以上分析編寫微控制器程式,將程式編譯成。hex 檔案燒錄到MCU中。程式碼如下:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit relay = P0^0;
sbit IRIN = P3^2;
uchar IR_value[6];
uint t = 0;
uint ir_recv = 0;
//函式宣告
void init();
void delayms(uchar j);
void Delay(int del);
void IR_init(void)
{
IE |= 0x81;
TCON |= 0x01;
IRIN = 1;
}
void IR_Delay(uchar t1) // t1*0。15ms
{
uchar t2;
while(t1——)
for(t2=0;t2<13;t2++);
}
void IR_Get(void)
{
uchar i,j,k=0;
IR_Delay(5);
if(IRIN == 1) return;
while(!IRIN);
while(IRIN);
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
while(!IRIN);
while(IRIN)
{
IR_Delay(1);
k++;
if(k>=30)
{
k=0;
return;
}
}
IR_value[i] = IR_value[i] >> 1;
if(k>=8)
IR_value[i] = IR_value[i] | 0x80;
k=0;
}
}
}
void main()
{
relay = 1;
IR_init();
while(1){
}
}
void IR_ISR(void) interrupt 0
{
EX0 = 0;
IR_value[0] = IR_value[1] = IR_value[2] = IR_value[3] = 0 ;
IR_Get();
if(IR_value[0]==~IR_value[1] && IR_value[2]==~IR_value[3]){
IR_value[5] = IR_value[2];
IR_value[4] = IR_value[0];
}
relay = 0;
IE0 = 0;
EX0 = 1;
}
實現效果
最後,LED燈管改進的效果如下
影片載入中。。。
效果基本可以滿足需要[奸笑][奸笑][奸笑]