0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

創(chuàng)意電子小制作之安全型床頭燈開關(guān)

工程師鄧生 ? 來源:電子工程師小李 ? 作者:電子工程師小李 ? 2021-05-03 11:33 ? 次閱讀

床頭燈開關(guān)以其使用靈活、方便,而受到許多家庭歡迎。但普通的床頭燈開關(guān)由于直接與市電相通,使用時不十分安全,尤其是有小孩的家庭更讓家長擔(dān)憂!這里介紹的安全型床頭燈開關(guān)簡單易制,可有效解決這一問題。

弄懂工作原理

安全型床頭燈開關(guān)的電路如圖23-1虛線右邊所示。整流二極管VD1~VD4和單向晶閘管VS組成交流開關(guān)主回路,高阻值的電阻器R1、R2(阻值均為1.5MΩ)和手動開關(guān)SA組成開關(guān)的控制回路。

創(chuàng)意電子小制作之安全型床頭燈開關(guān)

圖23-1安全型床頭燈開關(guān)電路

閉合手動開關(guān)SA,單向晶閘管VS通過電阻器R1、R2獲得觸發(fā)電流而導(dǎo)通,被控電燈H即獲得全波交流電正常發(fā)光;斷開SA,VS在交流電過零時截止,H熄滅。由此可見,這里的“開燈”與“關(guān)燈”操作,與普通床頭燈開關(guān)沒有什么兩樣。但是連接SA的電線回路中串聯(lián)有高阻值的保安電阻器R1和R2,有著較好的市電隔離特性,所以無論小孩用嘴咬破開關(guān)引線的絕緣皮層,還是將開關(guān)塞進(jìn)口里,均可免遭電擊危害。

電路中,電容器C的作用是吸收單向晶閘管VS的控制極(門極)的干擾脈沖,可防止手動開關(guān)SA引線過長時外界感應(yīng)雜波造成的VS頻繁通斷。

準(zhǔn)備好元器件

本制作共用了9個元器件,備料清單見表23。

創(chuàng)意電子小制作之安全型床頭燈開關(guān)

表23 元器件清單

VS宜采用控制極觸發(fā)電流I GT ≤20μA的小型塑封單向晶閘管,如MCR100-8(額定正向平均電流0.8A、額定工作電壓600V)、BT169D(1A、400V)、CR1AM6(1A、400V)型等。這類塑封單向晶閘管的外形如同普通塑料封裝的小功率三極管,其實物外形和管腳排列參見本書前面圖11-2。

VD1~VD4均用1N4004(最大整流電流1A、最高反向工作電壓400V)硅整流二極管。如用常見的1N4007(1A、1000V)型硅整流二極管,則效果更佳。

C用CT1型瓷介電容器,標(biāo)稱容量為0.01μF。R1和R2均用RTX-1/4W型、標(biāo)稱阻值是1.5MΩ的碳膜電阻器,注意:R1、R2對人體安全非常重要,其阻值不得低于1.5MΩ。要特別留意不要誤用成1.5kΩ或1.5Ω的低阻值電阻器。

SA為交流220V普通床頭專用引線式船形開關(guān)。

制作與使用

圖23-2所示為該安全型床頭燈開關(guān)的印制電路板接線圖。印制電路板最好采用環(huán)氧基質(zhì)單面銅箔板,其實際尺寸約為40mm×25mm,可用刀刻法加工制作,既不需要專用藥水腐蝕,也不必鉆孔。

創(chuàng)意電子小制作之安全型床頭燈開關(guān)

圖23-2 安全型床頭燈開關(guān)印制電路板圖

將元器件全部焊接在自制的電路板銅箔面上,并選擇或自制一個體積合適的絕緣小盒,將手動開關(guān)SA除外的電路板裝固在小盒內(nèi)。只要元器件質(zhì)量有保證、焊接無誤,電路不用任何調(diào)試便可正常工作。

實際應(yīng)用時,將開關(guān)小盒固定在被控制照明燈H的附近或燈座腔內(nèi),其a、b兩根引線頭不分順序串入被控制照明燈的相線(火線)回路中去,手動開關(guān)SA則通過雙股塑皮電線引到床頭處去即可。注意:被控電燈泡的總功率不宜超過120W。另外,在加裝開關(guān)小盒之前,必須先斷開220V交流電的入戶總開關(guān),謹(jǐn)防觸電!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電容器
    +關(guān)注

    關(guān)注

    64

    文章

    6245

    瀏覽量

    99962
  • 開關(guān)
    +關(guān)注

    關(guān)注

    19

    文章

    3142

    瀏覽量

    93770
  • 電路板
    +關(guān)注

    關(guān)注

    140

    文章

    4980

    瀏覽量

    98413
  • 晶閘管
    +關(guān)注

    關(guān)注

    35

    文章

    1103

    瀏覽量

    77342
收藏 人收藏

    評論

    相關(guān)推薦

    GUC65(A)礦用本安位置傳感器制作過程

    礦用本安位置傳感器的制作過程需要嚴(yán)格遵守相關(guān)的安全規(guī)范和標(biāo)準(zhǔn),確保傳感器的安全性和可靠性。同時,在生產(chǎn)過程中還需要注意環(huán)境保護(hù)和節(jié)能減排等要求。具體的
    的頭像 發(fā)表于 01-07 10:18 ?70次閱讀

    如何選擇合適的電子開關(guān)

    電子工程領(lǐng)域,電子開關(guān)是控制電路中電流流動的基本組件。它們可以是簡單的機(jī)械開關(guān),也可以是復(fù)雜的電子控制設(shè)備。選擇合適的
    的頭像 發(fā)表于 12-30 14:41 ?156次閱讀

    汽車頭燈燈具氣密性檢測儀:直壓法的實用性

    在汽車制造業(yè)中,頭燈燈具的氣密性檢測是至關(guān)重要的環(huán)節(jié)。氣密性良好的頭燈能夠防止水分和灰塵進(jìn)入,從而確保燈光的亮度和照射效果,同時延長燈具的使用壽命。為了實現(xiàn)這一目標(biāo),汽車頭燈燈具氣密性檢測儀應(yīng)運(yùn)而生
    的頭像 發(fā)表于 12-07 11:52 ?157次閱讀
    汽車<b class='flag-5'>頭燈</b>燈具氣密性檢測儀:直壓法的實用性

    基于瑞薩FPB-RA4E2智能床頭燈項目——4 APP制作

    App Inventor是一款由Google開發(fā)的在線移動應(yīng)用開發(fā)平臺,主要用于開發(fā)Android應(yīng)用程序。它通過可視化編程方式,允許用戶使用拖放和連接編程塊來創(chuàng)建應(yīng)用程序,無需編寫復(fù)雜代碼。App Inventor最初是為Android系統(tǒng)設(shè)計的,但最新版本已經(jīng)支持iOS系統(tǒng)。該平臺適合初學(xué)者和非專業(yè)開發(fā)者,降低了移動應(yīng)用開發(fā)的門檻。用戶可以通過瀏覽器訪問App Inventor,并將項目保存在云服務(wù)器中,方便跨設(shè)備開發(fā) APP界面 APP代碼: 項目演示
    發(fā)表于 11-29 22:38

    基于瑞薩FPB-RA4E2智能床頭燈項目——3ADC采樣

    效果演示: 添加ADC函數(shù) bsp_adc.c #include\"bsp_adc.h\" //ADC轉(zhuǎn)換完成標(biāo)志位 volatile bool scan_complete_flag = false; voidadc_callback(adc_callback_args_t*p_args) { FSP_PARAMETER_NOT_USED(p_args); scan_complete_flag = true; } voidADC_Init(void) { fsp_err_terr; err=R_ADC_Open(&g_adc0_ctrl,&g_adc0_cfg); err=R_ADC_ScanCfg(&g_adc0_ctrl,&g_adc0_channel_cfg); assert(FSP_SUCCESS==err); } /* 進(jìn)行ADC采集,讀取ADC數(shù)據(jù)并轉(zhuǎn)換結(jié)果 */ doubleRead_ADC_Voltage_Value(void) { uint16_tadc_data; doublea0; (void)R_ADC_ScanStart(&g_adc0_ctrl); while(!scan_complete_flag)//等待轉(zhuǎn)換完成標(biāo)志 { ; } scan_complete_flag = false;//重新清除標(biāo)志位 /* 讀取通道0數(shù)據(jù) */ R_ADC_Read(&g_adc0_ctrl,ADC_CHANNEL_0,&adc_data); /* ADC原始數(shù)據(jù)轉(zhuǎn)換為電壓值(ADC參考電壓為3.3V) */ a0=(double)(adc_data*3.3/4095); returna0; } bsp_adc.h文件 #ifndef __BSP_ADC_H #define__BSP_ADC_H #include\"hal_data.h\" voidADC_Init(void); doubleRead_ADC_Voltage_Value(void); #endif 添加ADC 配置ADC 配置ADC通道 配置時鐘 生成配置文件 添加print函數(shù)映像 printf_redirect.c文件 #include\"hal_data.h\" #include\"stdio.h\" #include<sys/stat.h> #include<errno.h> #undef errno externinterrno; int_write(intfile,char*ptr,intlen); int_close(intfile); int_fstat(intfile,structstat*st); int_isatty(intfile); int_read(intfile,char*ptr,intlen); int_lseek(intfile,intptr,intdir); #defineDEBUG_SERIAL_TIMEOUT 2000/portTICK_PERIOD_MS externuint8_t uart_send_complete_flag; int_write(intfile,char*ptr,intlen) { fsp_err_terr=FSP_SUCCESS; FSP_PARAMETER_NOT_USED(file); static bool uart_open= false; if(false ==uart_open) { err=R_SCI_UART_Open(&g_uart9_ctrl,&g_uart9_cfg); } if(FSP_SUCCESS==err) { err=R_SCI_UART_Write(&g_uart9_ctrl,(uint8_t*)ptr,(uint32_t)len); } if(FSP_SUCCESS!=err) { len=-1; } while(uart_send_complete_flag ==0) { R_BSP_SoftwareDelay(10,BSP_DELAY_UNITS_MILLISECONDS); } uart_send_complete_flag =0; returnlen; } int_close(intfile) { FSP_PARAMETER_NOT_USED(file); return-1; } int_fstat(intfile,structstat*st) { FSP_PARAMETER_NOT_USED(file); st->st_mode= S_IFCHR; return0; } int_isatty(intfile) { FSP_PARAMETER_NOT_USED(file); return1; } int_lseek(intfile,intptr,intdir) { FSP_PARAMETER_NOT_USED(file); FSP_PARAMETER_NOT_USED(ptr); FSP_PARAMETER_NOT_USED(dir); return0; } int_read(intfile,char*ptr,intlen) { FSP_PARAMETER_NOT_USED(file); FSP_PARAMETER_NOT_USED(ptr); FSP_PARAMETER_NOT_USED(len); return0; } 程序代碼:*附件:ws2812.zip
    發(fā)表于 11-29 20:10

    基于瑞薩FPB-RA4E2智能床頭燈項目——2串口藍(lán)牙通訊

    配置串口相關(guān)參數(shù)stack 配置串口相關(guān)接口參數(shù) 配置串口硬件引腳 配置時鐘 增加串口函數(shù)處理 bsp_debug_uart.c #include\"bsp_debug_uart.h\" #include\"ws2812LED/bsp_ws2812LED.h\" /* 調(diào)試串口 UART0 初始化 */ voidDebug_UART9_Init(void) { fsp_err_terr=FSP_SUCCESS; err=R_SCI_UART_Open(&g_uart9_ctrl,&g_uart9_cfg); assert(FSP_SUCCESS==err); } /* 發(fā)送完成標(biāo)志 */ volatile bool uart_send_complete_flag = false; /* 串口中斷回調(diào) */ voiddebug_uart9_callback(uart_callback_args_t*p_args) { switch(p_args->event) { caseUART_EVENT_RX_CHAR: { /* 根據(jù)字符指令控制RGB彩燈顏色 */ switch(p_args->data) { case\'1\': WS2812B_Task1(); break; case\'2\': WS2812B_Task2(); break; case\'3\': WS2812B_Task3(); break; case\'4\': WS2812B_Task4(); break; case\'5\': WS2812B_Task5(); break; default: break; } break; } caseUART_EVENT_TX_COMPLETE: { uart_send_complete_flag = true; break; } default: break; } } /* 重定向 printf 輸出 */ #if defined __GNUC__ && !defined __clang__ int_write(intfd,char*pBuffer,intsize);//防止編譯警告 int_write(intfd,char*pBuffer,intsize) { (void)fd; R_SCI_UART_Write(&g_uart9_ctrl,(uint8_t*)pBuffer,(uint32_t)size); while(uart_send_complete_flag == false); uart_send_complete_flag = false; returnsize; } #else int fputc(int ch, FILE *f) { (void)f; R_SCI_UART_Write(&g_uart0_ctrl,(uint8_t *)&ch,1); while(uart_send_complete_flag == false); uart_send_complete_flag = false; return ch; } #endif bsp_debug_uart.h #ifndef __BSP_DEBUG_UART_H #define__BSP_DEBUG_UART_H #include\"hal_data.h\" #include\"stdio.h\" voidDebug_UART9_Init(void); #endif ws2812驅(qū)動更改如下: bsp_ws2812LED.c /* * ws2812.c * *Created on: 2023年10月31日 *Author: Administrator */ #include \"bsp_ws2812LED.h\" #include \"hal_data.h\" extern fsp_err_t err ; extern volatile bool g_transfer_complete ; //燈條顯存SPI數(shù)據(jù)緩存 uint8_t gWs2812bDat_SPI[WS2812B_AMOUNT * 24+88] = {0}; //燈條顯存 tWs2812bCache_TypeDef gWs2812bDat[WS2812B_AMOUNT] = { //R GB 0XFF, 0X00, 0X00,//0 0X00, 0XFF, 0X00,//1 0X00, 0X00, 0XFF,//2 0X00, 0XFF, 0XFF,//3 0XFF, 0X00, 0XFF,//4 0XFF, 0XFF, 0X00,//5 0XFF, 0XFF, 0XFF,//6 0X0F, 0X0F, 0X0F,//7 0XFF, 0X00, 0X00,//0 0X00, 0XFF, 0X00,//1 0X00, 0X00, 0XFF,//2 0X00, 0XFF, 0XFF,//3 0XFF, 0X00, 0XFF,//4 0XFF, 0XFF, 0X00,//5 0XFF, 0XFF, 0XFF,//6 0X0F, 0X0F, 0X0F,//7 }; //紅色燈條顯存 tWs2812bCache_TypeDef gWs2812bDat1[WS2812B_AMOUNT] = { //R GB 0XFF, 0X00, 0X00,//0 0XFF, 0X00, 0X00,//1 0XFF, 0X00, 0X00,//2 0XFF, 0X00, 0X00,//3 0XFF, 0X00, 0X00,//4 0XFF, 0X00, 0X00,//5 0XFF, 0X00, 0X00,//6 0XFF, 0X00, 0X00,//7 0XFF, 0X00, 0X00,//0 0XFF, 0X00, 0X00,//1 0XFF, 0X00, 0X00,//2 0XFF, 0X00, 0X00,//3 0XFF, 0X00, 0X00,//4 0XFF, 0X00, 0X00,//5 0XFF, 0X00, 0X00,//6 0XFF, 0X00, 0X00,//7 }; //黃色燈條顯存 tWs2812bCache_TypeDef gWs2812bDat2[WS2812B_AMOUNT] = { //R GB 0XFF, 0XFF, 0X00,//0 0XFF, 0XFF, 0X00,//1 0XFF, 0XFF, 0X00,//2 0XFF, 0XFF, 0X00,//3 0XFF, 0XFF, 0X00,//4 0XFF, 0XFF, 0X00,//5 0XFF, 0XFF, 0X00,//6 0XFF, 0XFF, 0X00,//7 0XFF, 0XFF, 0X00,//0 0XFF, 0XFF, 0X00,//1 0XFF, 0XFF, 0X00,//2 0XFF, 0XFF, 0X00,//3 0XFF, 0XFF, 0X00,//4 0XFF, 0XFF, 0X00,//5 0XFF, 0XFF, 0X00,//6 0XFF, 0XFF, 0X00,//7 }; //綠色燈條顯存 tWs2812bCache_TypeDef gWs2812bDat3[WS2812B_AMOUNT] = { //R GB 0X00, 0XFF, 0X00,//0 0X00, 0XFF, 0X00,//1 0X00, 0XFF, 0X00,//2 0X00, 0XFF, 0X00,//3 0X00, 0XFF, 0X00,//4 0X00, 0XFF, 0X00,//5 0X00, 0XFF, 0X00,//6 0X00, 0XFF, 0X00,//7 0X00, 0XFF, 0X00,//0 0X00, 0XFF, 0X00,//1 0X00, 0XFF, 0X00,//2 0X00, 0XFF, 0X00,//3 0X00, 0XFF, 0X00,//4 0X00, 0XFF, 0X00,//5 0X00, 0XFF, 0X00,//6 0X00, 0XFF, 0X00,//7 }; //青綠色燈條顯存 tWs2812bCache_TypeDef gWs2812bDat4[WS2812B_AMOUNT] = { //R GB 0X00, 0XFF, 0XFF,//0 0X00, 0XFF, 0XFF,//1 0X00, 0XFF, 0XFF,//2 0X00, 0XFF, 0XFF,//3 0X00, 0XFF, 0XFF,//4 0X00, 0XFF, 0XFF,//5 0X00, 0XFF, 0XFF,//6 0X00, 0XFF, 0XFF,//7 0X00, 0XFF, 0XFF,//0 0X00, 0XFF, 0XFF,//1 0X00, 0XFF, 0XFF,//2 0X00, 0XFF, 0XFF,//3 0X00, 0XFF, 0XFF,//4 0X00, 0XFF, 0XFF,//5 0X00, 0XFF, 0XFF,//6 0X00, 0XFF, 0XFF,//7 }; //滅燈燈條顯存 tWs2812bCache_TypeDef gWs2812bDat5[WS2812B_AMOUNT] = { //R GB 0X00, 0X00, 0X00,//0 0X00, 0X00, 0X00,//1 0X00, 0X00, 0X00,//2 0X00, 0X00, 0X00,//3 0X00, 0X00, 0X00,//4 0X00, 0X00, 0X00,//5 0X00, 0X00, 0X00,//6 0X00, 0X00, 0X00,//7 0X00, 0X00, 0X00,//0 0X00, 0X00, 0X00,//1 0X00, 0X00, 0X00,//2 0X00, 0X00, 0X00,//3 0X00, 0X00, 0X00,//4 0X00, 0X00, 0X00,//5 0X00, 0X00, 0X00,//6 0X00, 0X00, 0X00,//7 }; void WS2812b_Set(uint16_t Ws2b812b_NUM, uint8_t r,uint8_t g,uint8_t b) { uint8_t *pR = &gWs2812bDat_SPI[88+(Ws2b812b_NUM) * 24 + 8]; uint8_t *pG = &gWs2812bDat_SPI[88+(Ws2b812b_NUM) * 24]; uint8_t *pB = &gWs2812bDat_SPI[88+(Ws2b812b_NUM) * 24 + 16]; for(uint8_t i = 0; i <8; i++) { if(g & 0x80) { *pG = CODE_1; } else { *pG = CODE_0; } if(r & 0x80) { *pR = CODE_1; } else { *pR = CODE_0; } if(b & 0x80) { *pB = CODE_1; } else { *pB = CODE_0; } r <<= 1; g <<= 1; b <<= 1; pR++; pG++; pB++; } } void WS2812B_Task(void) { uint8_t dat = 0; for(int i=0;i<88;i++) { gWs2812bDat_SPI[i]=0; } //將gWs2812bDat數(shù)據(jù)解析成SPI數(shù)據(jù) for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat[iLED].R, gWs2812bDat[iLED].G, gWs2812bDat[iLED].B); } //總線輸出數(shù)據(jù) /* Send the reset command */ g_transfer_complete = false; err = R_SCI_SPI_Write(&g_spi0_ctrl, gWs2812bDat_SPI, sizeof(gWs2812bDat_SPI), SPI_BIT_WIDTH_8_BITS); assert(FSP_SUCCESS == err); /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ while (g_transfer_complete==false) { ; } R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); } void WS2812B_Task1(void) { uint8_t dat = 0; for(int i=0;i<88;i++) { gWs2812bDat_SPI[i]=0; } //將gWs2812bDat數(shù)據(jù)解析成SPI數(shù)據(jù) for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat1[iLED].R, gWs2812bDat1[iLED].G, gWs2812bDat1[iLED].B); } //總線輸出數(shù)據(jù) /* Send the reset command */ g_transfer_complete = false; err = R_SCI_SPI_Write(&g_spi0_ctrl, gWs2812bDat_SPI, sizeof(gWs2812bDat_SPI), SPI_BIT_WIDTH_8_BITS); assert(FSP_SUCCESS == err); /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ // R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); } void WS2812B_Task2(void) { uint8_t dat = 0; for(int i=0;i<88;i++) { gWs2812bDat_SPI[i]=0; } //將gWs2812bDat數(shù)據(jù)解析成SPI數(shù)據(jù) for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat2[iLED].R, gWs2812bDat2[iLED].G, gWs2812bDat2[iLED].B); } //總線輸出數(shù)據(jù) /* Send the reset command */ g_transfer_complete = false; err = R_SCI_SPI_Write(&g_spi0_ctrl, gWs2812bDat_SPI, sizeof(gWs2812bDat_SPI), SPI_BIT_WIDTH_8_BITS); assert(FSP_SUCCESS == err); /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ //R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); } void WS2812B_Task3(void) { uint8_t dat = 0; for(int i=0;i<88;i++) { gWs2812bDat_SPI[i]=0; } //將gWs2812bDat數(shù)據(jù)解析成SPI數(shù)據(jù) for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat3[iLED].R, gWs2812bDat3[iLED].G, gWs2812bDat3[iLED].B); } //總線輸出數(shù)據(jù) /* Send the reset command */ g_transfer_complete = false; err = R_SCI_SPI_Write(&g_spi0_ctrl, gWs2812bDat_SPI, sizeof(gWs2812bDat_SPI), SPI_BIT_WIDTH_8_BITS); assert(FSP_SUCCESS == err); /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ // R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); } void WS2812B_Task4(void) { uint8_t dat = 0; for(int i=0;i<88;i++) { gWs2812bDat_SPI[i]=0; } //將gWs2812bDat數(shù)據(jù)解析成SPI數(shù)據(jù) for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat4[iLED].R, gWs2812bDat4[iLED].G, gWs2812bDat4[iLED].B); } //總線輸出數(shù)據(jù) /* Send the reset command */ g_transfer_complete = false; err = R_SCI_SPI_Write(&g_spi0_ctrl, gWs2812bDat_SPI, sizeof(gWs2812bDat_SPI), SPI_BIT_WIDTH_8_BITS); assert(FSP_SUCCESS == err); /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ // R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); } void WS2812B_Task5(void) { uint8_t dat = 0; for(int i=0;i<88;i++) { gWs2812bDat_SPI[i]=0; } //將gWs2812bDat數(shù)據(jù)解析成SPI數(shù)據(jù) for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat5[iLED].R, gWs2812bDat5[iLED].G, gWs2812bDat5[iLED].B); } //總線輸出數(shù)據(jù) /* Send the reset command */ g_transfer_complete = false; err = R_SCI_SPI_Write(&g_spi0_ctrl, gWs2812bDat_SPI, sizeof(gWs2812bDat_SPI), SPI_BIT_WIDTH_8_BITS); assert(FSP_SUCCESS == err); /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ // R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); } bsp_ws2812LED.h #ifndef BSP_WS2812LED_H_ #defineBSP_WS2812LED_H_ #include<stdint.h> //編碼 0 : 11000000 #defineCODE_00xc0 //編碼 1 : 11111000 #defineCODE_10xF8 /*ws2812b燈珠數(shù)量*/ #defineWS2812B_AMOUNT16 typedefstruct { uint8_tR; uint8_tG; uint8_tB; }tWs2812bCache_TypeDef; externtWs2812bCache_TypeDef gWs2812bDat[WS2812B_AMOUNT]; externtWs2812bCache_TypeDef gWs2812bDat1[WS2812B_AMOUNT]; externtWs2812bCache_TypeDef gWs2812bDat2[WS2812B_AMOUNT]; externtWs2812bCache_TypeDef gWs2812bDat3[WS2812B_AMOUNT]; externtWs2812bCache_TypeDef gWs2812bDat4[WS2812B_AMOUNT]; externtWs2812bCache_TypeDef gWs2812bDat5[WS2812B_AMOUNT]; voidWS2812b_Set(uint16_tWs2b812b_NUM,uint8_tr,uint8_tg,uint8_tb); voidWS2812B_Task(void); voidWS2812B_Task1(void); voidWS2812B_Task2(void); voidWS2812B_Task3(void); voidWS2812B_Task4(void); voidWS2812B_Task5(void); #endif/* WS2812_H_ */ 主函數(shù)如下: hal_entry.c #include \"hal_data.h\" #include \"ws2812LED/bsp_ws2812LED.h\" #include \"debug_uart/bsp_debug_uart.h\" FSP_CPP_HEADER void R_BSP_WarmStart(bsp_warm_start_event_t event); FSP_CPP_FOOTER fsp_err_t err = FSP_SUCCESS; volatile bool g_transfer_complete = false; void sci_spi_callback (spi_callback_args_t * p_args) { if (SPI_EVENT_TRANSFER_COMPLETE == p_args->event) { g_transfer_complete = true; } } extern tWs2812bCache_TypeDef gWs2812bDat[WS2812B_AMOUNT]; void move_Front() { uint8_t i; uint8_t temp[3]; temp[0] = gWs2812bDat[0].R; temp[1] = gWs2812bDat[0].G; temp[2] = gWs2812bDat[0].B; for (i = 0; i < WS2812B_AMOUNT-1; i++) { gWs2812bDat[i].R = gWs2812bDat[i+1].R; gWs2812bDat[i].G = gWs2812bDat[i+1].G; gWs2812bDat[i].B = gWs2812bDat[i+1].B; } gWs2812bDat[15].R = temp[0]; gWs2812bDat[15].G = temp[1]; gWs2812bDat[15].B = temp[2]; } /*******************************************************************************************************************//** * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.This function * is called by main() when no RTOS is used. **********************************************************************************************************************/ void hal_entry(void) { /* TODO: add your own code here */ err = R_SCI_SPI_Open(&g_spi0_ctrl, &g_spi0_cfg); assert(FSP_SUCCESS == err); sci_spi_extended_cfg_t sci_spi_extended_cfg_t1; WS2812B_Task(); R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); Debug_UART9_Init(); while (1) { } #if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter(); #endif } /*******************************************************************************************************************//** * This function is called at various points during the startup process.This implementation uses the event that is * called right before main() to set up the pins. * * @param[in]event Where at in the start up process the code is currently at **********************************************************************************************************************/ void R_BSP_WarmStart(bsp_warm_start_event_t event) { if (BSP_WARM_START_RESET == event) { #if BSP_FEATURE_FLASH_LP_VERSION != 0 /* Enable reading from data flash. */ R_FACI_LP->DFLCTL = 1U; /* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and * C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */ #endif } if (BSP_WARM_START_POST_C == event) { /* C runtime environment and system clocks are setup. */ /* Configure pins. */ R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg); } } #if BSP_TZ_SECURE_BUILD FSP_CPP_HEADER BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable (); /* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */ BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable () { } FSP_CPP_FOOTER #endif 附件為工程文件*附件:ws2812.zip
    發(fā)表于 11-22 22:13

    亮鉆IS-A133主板應(yīng)用于智慧床頭終端的優(yōu)勢

    傳統(tǒng)的紙質(zhì)床頭卡在病房管理中有很多局限,信息展示單一,更新全靠人工,不僅費(fèi)時費(fèi)力,還容易出錯,患者也無法方便地獲取信息。
    的頭像 發(fā)表于 11-09 14:05 ?277次閱讀

    開關(guān)電源設(shè)計與制作

    電子發(fā)燒友網(wǎng)站提供《開關(guān)電源設(shè)計與制作.doc》資料免費(fèi)下載
    發(fā)表于 10-24 16:36 ?6次下載

    頭燈定時器怎么調(diào)開關(guān)時間

    在現(xiàn)代商業(yè)環(huán)境中,門頭燈不僅是企業(yè)形象的一部分,也是吸引顧客的重要手段。然而,手動控制門頭燈開關(guān)往往既耗時又容易出錯。為了解決這一問題,門頭燈定時器應(yīng)運(yùn)而生,它通過預(yù)設(shè)的時間表自動控
    的頭像 發(fā)表于 10-17 14:14 ?1082次閱讀

    光電開關(guān)怎么接線

    光電開關(guān)的接線方法主要根據(jù)其供電方式(直流或交流)及實際需求進(jìn)行配置。以下是一般情況下的接線步驟和注意事項: 一、直流供電槽光電開關(guān)接線方法 對于直流供電的槽
    的頭像 發(fā)表于 09-04 11:22 ?1386次閱讀

    導(dǎo)電油墨:電子面膜制作的關(guān)鍵核心③

    印刷電子導(dǎo)電油墨是電子面膜生產(chǎn)制作的關(guān)鍵技術(shù)之一。制作電子面膜的導(dǎo)電油墨必須具備導(dǎo)電性能穩(wěn)定、電子
    的頭像 發(fā)表于 05-31 15:12 ?1254次閱讀
    導(dǎo)電油墨:<b class='flag-5'>電子</b>面膜<b class='flag-5'>制作</b>的關(guān)鍵核心③

    創(chuàng)意電子一季度財報: 產(chǎn)品周期影響短期逆勢

    雖然受到產(chǎn)品周期影響,一季度業(yè)績短暫下滑,但分析師表示,隨著國際大廠AI芯片采用5nm制程大規(guī)模生產(chǎn),預(yù)計將推動創(chuàng)意電子營收增長。據(jù)了解,這些大廠還計劃繼續(xù)委托創(chuàng)意電子進(jìn)行ASIC相關(guān)
    的頭像 發(fā)表于 04-26 09:22 ?597次閱讀

    頭燈氣密性檢測方案:確保質(zhì)量與安全的必備步驟

    頭燈作為一種常見的照明工具,廣泛應(yīng)用于各種工作場所。為了保證頭燈在使用過程中的安全性和可靠性,氣密性檢測已成為一個關(guān)鍵環(huán)節(jié)。本文將介紹頭燈氣密性檢測設(shè)備的重要性,并提出有效的檢測方案。
    的頭像 發(fā)表于 03-13 11:21 ?501次閱讀
    <b class='flag-5'>頭燈</b>氣密性檢測方案:確保質(zhì)量與<b class='flag-5'>安全</b>的必備步驟

    什么是硬開關(guān)?什么是軟開關(guān)開關(guān)和軟開關(guān)的優(yōu)缺點(diǎn)

    電力的傳輸和供應(yīng)。硬開關(guān)可以分為常開和常閉,即在開關(guān)斷開狀態(tài)時,常開斷開電路,而常閉閉合
    的頭像 發(fā)表于 02-20 11:43 ?7696次閱讀

    d空氣開關(guān)和c空氣開關(guān)的區(qū)別

    D空氣開關(guān)和C空氣開關(guān)是兩種常見的電氣開關(guān)設(shè)備,它們在結(jié)構(gòu)、功能和應(yīng)用上存在一定的區(qū)別。為了更好地了解這兩種
    的頭像 發(fā)表于 01-25 10:53 ?3764次閱讀