色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

創意電子小制作之安全型床頭燈開關

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

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

弄懂工作原理

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

創意電子小制作之安全型床頭燈開關

圖23-1安全型床頭燈開關電路

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

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

準備好元器件

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

創意電子小制作之安全型床頭燈開關

表23 元器件清單

VS宜采用控制極觸發電流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型瓷介電容器,標稱容量為0.01μF。R1和R2均用RTX-1/4W型、標稱阻值是1.5MΩ的碳膜電阻器,注意:R1、R2對人體安全非常重要,其阻值不得低于1.5MΩ。要特別留意不要誤用成1.5kΩ或1.5Ω的低阻值電阻器。

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

制作與使用

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

創意電子小制作之安全型床頭燈開關

圖23-2 安全型床頭燈開關印制電路板圖

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電容器
    +關注

    關注

    64

    文章

    6228

    瀏覽量

    99846
  • 開關
    +關注

    關注

    19

    文章

    3139

    瀏覽量

    93733
  • 電路板
    +關注

    關注

    140

    文章

    4967

    瀏覽量

    98196
  • 晶閘管
    +關注

    關注

    35

    文章

    1103

    瀏覽量

    77295
收藏 人收藏

    評論

    相關推薦

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

    礦用本安位置傳感器的制作過程需要嚴格遵守相關的安全規范和標準,確保傳感器的安全性和可靠性。同時,在生產過程中還需要注意環境保護和節能減排等要求。具體的
    的頭像 發表于 01-07 10:18 ?33次閱讀

    如何選擇合適的電子開關

    電子工程領域,電子開關是控制電路中電流流動的基本組件。它們可以是簡單的機械開關,也可以是復雜的電子控制設備。選擇合適的
    的頭像 發表于 12-30 14:41 ?108次閱讀

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

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

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

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

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

    效果演示: 添加ADC函數 bsp_adc.c #include\"bsp_adc.h\" //ADC轉換完成標志位 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); } /* 進行ADC采集,讀取ADC數據并轉換結果 */ doubleRead_ADC_Voltage_Value(void) { uint16_tadc_data; doublea0; (void)R_ADC_ScanStart(&g_adc0_ctrl); while(!scan_complete_flag)//等待轉換完成標志 { ; } scan_complete_flag = false;//重新清除標志位 /* 讀取通道0數據 */ R_ADC_Read(&g_adc0_ctrl,ADC_CHANNEL_0,&adc_data); /* ADC原始數據轉換為電壓值(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函數映像 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
    發表于 11-29 20:10

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

    配置串口相關參數stack 配置串口相關接口參數 配置串口硬件引腳 配置時鐘 增加串口函數處理 bsp_debug_uart.c #include\"bsp_debug_uart.h\" #include\"ws2812LED/bsp_ws2812LED.h\" /* 調試串口 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); } /* 發送完成標志 */ volatile bool uart_send_complete_flag = false; /* 串口中斷回調 */ voiddebug_uart9_callback(uart_callback_args_t*p_args) { switch(p_args->event) { caseUART_EVENT_RX_CHAR: { /* 根據字符指令控制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驅動更改如下: 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數據緩存 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數據解析成SPI數據 for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat[iLED].R, gWs2812bDat[iLED].G, gWs2812bDat[iLED].B); } //總線輸出數據 /* 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數據解析成SPI數據 for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat1[iLED].R, gWs2812bDat1[iLED].G, gWs2812bDat1[iLED].B); } //總線輸出數據 /* 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數據解析成SPI數據 for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat2[iLED].R, gWs2812bDat2[iLED].G, gWs2812bDat2[iLED].B); } //總線輸出數據 /* 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數據解析成SPI數據 for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat3[iLED].R, gWs2812bDat3[iLED].G, gWs2812bDat3[iLED].B); } //總線輸出數據 /* 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數據解析成SPI數據 for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat4[iLED].R, gWs2812bDat4[iLED].G, gWs2812bDat4[iLED].B); } //總線輸出數據 /* 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數據解析成SPI數據 for(uint8_t iLED = 0; iLED < WS2812B_AMOUNT; iLED++) { WS2812b_Set(iLED, gWs2812bDat5[iLED].R, gWs2812bDat5[iLED].G, gWs2812bDat5[iLED].B); } //總線輸出數據 /* 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燈珠數量*/ #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_ */ 主函數如下: 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
    發表于 11-22 22:13

    亮鉆IS-A133主板應用于智慧床頭終端的優勢

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

    開關電源設計與制作

    電子發燒友網站提供《開關電源設計與制作.doc》資料免費下載
    發表于 10-24 16:36 ?6次下載

    頭燈定時器怎么調開關時間

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

    光電開關怎么接線

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

    導電油墨:電子面膜制作的關鍵核心③

    印刷電子導電油墨是電子面膜生產制作的關鍵技術之一。制作電子面膜的導電油墨必須具備導電性能穩定、電子
    的頭像 發表于 05-31 15:12 ?1245次閱讀
    導電油墨:<b class='flag-5'>電子</b>面膜<b class='flag-5'>制作</b>的關鍵核心③

    創意電子一季度財報: 產品周期影響短期逆勢

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

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

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

    什么是硬開關?什么是軟開關開關和軟開關的優缺點

    電力的傳輸和供應。硬開關可以分為常開和常閉,即在開關斷開狀態時,常開斷開電路,而常閉閉合
    的頭像 發表于 02-20 11:43 ?7550次閱讀

    d空氣開關和c空氣開關的區別

    D空氣開關和C空氣開關是兩種常見的電氣開關設備,它們在結構、功能和應用上存在一定的區別。為了更好地了解這兩種
    的頭像 發表于 01-25 10:53 ?3597次閱讀
    主站蜘蛛池模板: 国产成人在线免费观看| 红杏俱乐部| 成人伦理影院| 国产精品久久久久久精品... | 亚洲精品国产专区91在线| 在线 国产 欧美 亚洲 天堂| 99精品视频在线免费观看| 国产 亚洲 另类 欧美 在线| 久久99精国产一区二区三区四区 | 国产在线精彩视频| 男人到天堂a在538线| 天天躁日日躁狠狠躁午夜剧场| 一色屋精品亚洲香蕉网站| 成年人免费观看的视频| 精品一品国产午夜福利视频| 秋霞电影伦网理最新在线看片| 亚洲欧美精品一中文字幕| chinese情侣自拍啪hd| 果冻传媒妈妈要儿子| 秋霞av伦理片在线观看| 伊人国产在线播放| 儿子操妈妈视频| 美女被触手注入精子强制受孕漫画 | 东北足疗店妓女在线观看| 九九热视频免费观看| 日韩欧美一区二区三区免费看| 一个人免费完整观看日本| 工口肉肉彩色不遮挡| 美女丝袜夹b| 亚洲国产在线观看免费视频| 成人AV精品视频| 伦理片qvod| 亚洲男人天堂网| 国产成人免费a在线资源| 蜜臀久久99精品久久久久久做爰| 亚洲精品第一综合99久久| 穿着丝袜被男生强行啪啪| 美女直播喷水| 一道本av免费不卡播放| 国产精品人妻无码99999| 欧美日韩高清一区|