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

    文章

    6226

    浏览量

    99729
  • 开关
    +关注

    关注

    19

    文章

    3138

    浏览量

    93695
  • 电路板
    +关注

    关注

    140

    文章

    4963

    浏览量

    97985
  • 晶闸管
    +关注

    关注

    35

    文章

    1102

    浏览量

    77252
收藏 人收藏

    评论

    相关推荐

    如何选择合适的电子开关

    电子工程领域,电子开关是控制电路中电流流动的基本组件。它们可以是简单的机械开关,也可以是复杂的电子控制设备。选择合适的
    的头像 发表于 12-30 14:41 76次阅读

    汽车头灯灯具气密性检测仪:直压法的实用性

    在汽车制造业中,头灯灯具的气密性检测是至关重要的环节。气密性良好的头灯能够防止水分和灰尘进入,从而确保灯光的亮度和照射效果,同时延长灯具的使用寿命。为了实现这一目标,汽车头灯灯具气密性检测仪应运而生
    的头像 发表于 12-07 11:52 128次阅读
    汽车<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 251次阅读

    开关电源设计与制作

    电子发烧友网站提供《开关电源设计与制作.doc》资料免费下载
    发表于 10-24 16:36 5次下载

    头灯定时器怎么调开关时间

    在现代商业环境中,门头灯不仅是企业形象的一部分,也是吸引顾客的重要手段。然而,手动控制门头灯开关往往既耗时又容易出错。为了解决这一问题,门头灯定时器应运而生,它通过预设的时间表自动控
    的头像 发表于 10-17 14:14 892次阅读

    光电开关怎么接线

    光电开关的接线方法主要根据其供电方式(直流或交流)及实际需求进行配置。以下是一般情况下的接线步骤和注意事项: 一、直流供电槽光电开关接线方法 对于直流供电的槽
    的头像 发表于 09-04 11:22 1252次阅读

    国产工业级Model3芯片应用于医疗床头7寸触摸屏,为医疗注入智慧力量

    未来医院必然是以信息化为基础,以物联网为特征,以医疗为核心的服务医院。病房作为医院的重要服务场所,成为智慧医院建设的重要一环。Model3方案7寸触摸屏为提高医护人员与患者的互动交流,给医疗注入
    的头像 发表于 07-24 08:37 1709次阅读
    国产工业级Model3芯片应用于医疗<b class='flag-5'>床头</b>7寸触摸屏,为医疗注入智慧力量

    导电油墨:电子面膜制作的关键核心③

    印刷电子导电油墨是电子面膜生产制作的关键技术之一。制作电子面膜的导电油墨必须具备导电性能稳定、电子
    的头像 发表于 05-31 15:12 1236次阅读
    导电油墨:<b class='flag-5'>电子</b>面膜<b class='flag-5'>制作</b>的关键核心③

    创意电子一季度财报: 产品周期影响短期逆势

    虽然受到产品周期影响,一季度业绩短暂下滑,但分析师表示,随着国际大厂AI芯片采用5nm制程大规模生产,预计将推动创意电子营收增长。据了解,这些大厂还计划继续委托创意电子进行ASIC相关
    的头像 发表于 04-26 09:22 569次阅读

    头灯气密性检测方案:确保质量与安全的必备步骤

    头灯作为一种常见的照明工具,广泛应用于各种工作场所。为了保证头灯在使用过程中的安全性和可靠性,气密性检测已成为一个关键环节。本文将介绍头灯气密性检测设备的重要性,并提出有效的检测方案。
    的头像 发表于 03-13 11:21 474次阅读
    <b class='flag-5'>头灯</b>气密性检测方案:确保质量与<b class='flag-5'>安全</b>的必备步骤

    什么是硬开关?什么是软开关开关和软开关的优缺点

    电力的传输和供应。硬开关可以分为常开和常闭,即在开关断开状态时,常开断开电路,而常闭闭合
    的头像 发表于 02-20 11:43 7359次阅读

    d空气开关和c空气开关的区别

    D空气开关和C空气开关是两种常见的电气开关设备,它们在结构、功能和应用上存在一定的区别。为了更好地了解这两种
    的头像 发表于 01-25 10:53 3553次阅读