一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

工程師鄧生 ? 來(lái)源:電子工程師小李 ? 作者:電子工程師小李 ? 2021-05-03 11:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

弄懂工作原理

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

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

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

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

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

準(zhǔn)備好元器件

本制作共用了9個(gè)元器件,備料清單見(jiàn)表23。

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

表23 元器件清單

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

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

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

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

制作與使用

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

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

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

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

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

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

    關(guān)注

    64

    文章

    6711

    瀏覽量

    102963
  • 開(kāi)關(guān)
    +關(guān)注

    關(guān)注

    19

    文章

    3282

    瀏覽量

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

    關(guān)注

    140

    文章

    5136

    瀏覽量

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

    關(guān)注

    35

    文章

    1109

    瀏覽量

    78636
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DMSG/020/W常閉磁性開(kāi)關(guān)與常開(kāi)磁性開(kāi)關(guān)有什么不同

    常閉磁性開(kāi)關(guān)與常開(kāi)磁性開(kāi)關(guān)的核心區(qū)別在于初始狀態(tài)與磁場(chǎng)觸發(fā)后的狀態(tài)變化,這一特性直接影響其在氣缸控制、安全保護(hù)等場(chǎng)景中的應(yīng)用邏輯。
    的頭像 發(fā)表于 07-07 09:25 ?220次閱讀

    新穎實(shí)用電子設(shè)計(jì)與制作

    本文以豐富、翔實(shí)的內(nèi)容詳細(xì)介紹了日常生活中使用的20多類100余種實(shí)用電子線路,內(nèi)容涉及報(bào)警、燈光、遙控、電話、充電、風(fēng)扇、電源、節(jié)能、驅(qū)蟲(chóng)、開(kāi)關(guān)等新穎電路。除闡述電路的結(jié)構(gòu)特點(diǎn)、制作方法、元器件
    發(fā)表于 05-27 16:12

    DCDC開(kāi)關(guān)電源原理-buck - boost (升降壓

    DCDC開(kāi)關(guān)電源原理-buck-boost(升降壓
    的頭像 發(fā)表于 05-06 15:40 ?2067次閱讀
    DCDC<b class='flag-5'>開(kāi)關(guān)</b>電源原理-buck - boost <b class='flag-5'>型</b>(升降壓<b class='flag-5'>型</b>)

    提高小電器功率建議

    如圖,此小電器(床頭燈)使用USB2.0協(xié)議,在公牛插座uu4203上工作時(shí)一段時(shí)間后斷電,經(jīng)測(cè)試,在其他插座下均可使用,初步推斷此電器功率過(guò)小觸發(fā)插座漏電保護(hù)機(jī)制。(原電壓約為2.6V,電流僅
    發(fā)表于 04-26 11:38

    開(kāi)關(guān)霍爾元件的特性有哪些

    開(kāi)關(guān)霍爾元件是一種基于霍爾效應(yīng)原理的電子開(kāi)關(guān)元件,它具有一系列獨(dú)特的特性,使得它在工業(yè)自動(dòng)化、汽車(chē)電子、醫(yī)療設(shè)備等領(lǐng)域得到廣泛應(yīng)用。
    的頭像 發(fā)表于 02-15 15:50 ?568次閱讀

    BLE MESH 智能開(kāi)關(guān)開(kāi)發(fā) 情景模式(睡眠、明亮) 藍(lán)牙m(xù)odel如何分配,如何配置model

    param都是一樣的,server模型接收到的param也是一樣的,就無(wú)法實(shí)現(xiàn)繼電器不同的狀態(tài)設(shè)定了(比如按下睡眠模式,床頭燈打開(kāi),窗簾關(guān)閉)。我現(xiàn)在唯一想的一個(gè)解決方案是通過(guò)vendor model
    發(fā)表于 02-12 23:54

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

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

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

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

    汽車(chē)頭燈燈具氣密性檢測(cè)儀:直壓法的實(shí)用性

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

    基于瑞薩FPB-RA4E2智能床頭燈項(xiàng)目——4 APP制作

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

    基于瑞薩FPB-RA4E2智能床頭燈項(xiàng)目——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通道 配置時(shí)鐘 生成配置文件 添加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智能床頭燈項(xiàng)目——2串口藍(lán)牙通訊

    配置串口相關(guān)參數(shù)stack 配置串口相關(guān)接口參數(shù) 配置串口硬件引腳 配置時(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ū)動(dòng)更改如下: 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)勢(shì)

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

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

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

    門(mén)頭燈定時(shí)器怎么調(diào)開(kāi)關(guān)時(shí)間

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