当前位置: 首页 > news >正文

网站维护及更新方案做网站公司关键词

网站维护及更新方案,做网站公司关键词,cos-html-cache – wordpress静态化插件,周口seo开源一个可以调灯的小灯棒子。 主控用的STC8G1K08A-SOP8#xff0c;RGB三色灯是WS2812B。 开源到立创开源广场了#xff0c;可以直接进入下方链接#xff0c;那边可以直接查看原理图和PCB。 一个可调RGB三色的小灯棒子 - 立创开源硬件平台一个可调RGB三色的小灯棒子https… 开源一个可以调灯的小灯棒子。 主控用的STC8G1K08A-SOP8RGB三色灯是WS2812B。 开源到立创开源广场了可以直接进入下方链接那边可以直接查看原理图和PCB。 一个可调RGB三色的小灯棒子 - 立创开源硬件平台一个可调RGB三色的小灯棒子https://oshwhub.com/zctnb/diao-guang-deng 通过观察板子下面三个灯来调整板子上两排的灯的颜色下面三个灯分别表示RGB并且也只亮对应的颜色比如说最左边的灯只有红色的亮度蓝和绿的亮度都是0。 这边可以稍微讲解一下WS2812B是通过调整RGB三色的亮度来完成任意颜色的表示的。 关于WS2812B如何控制的可以看看我之前的文章不过里面的代码恐怕没法直接使用因为我最近发现了时钟频率好像当时没调对不过理论部分都是正确的严格说起来代码也是没问题的只不过烧录程序的时候频率要选成11.0592。 今天我们不点LED我们点WS2812B_为什么用点灯blinker调ws2812第一灯闪-CSDN博客文章浏览阅读1.1k次点赞10次收藏22次。这也难不倒我经过我一顿操作和计算STC8G1K08A的主频为24MHz一个_nop_()大概耗时是63ns其实我计算的结果应该是44ns因为1/24 000 000 约等于是40ns但是我拿着40一个_nop_()的结果去写代码发现好像不对劲最后定位在了一个_nop_()大概耗时是60ns。1码和0码差不多高低电平是顺序一样都是先高电平后低电平不一样的是持续时间持续时间其实也差不多就是高低电平的时间反过来所以我们1码的高电平时间定为0.6us低电平时间定为0.3us。_为什么用点灯blinker调ws2812第一灯闪https://blog.csdn.net/m0_63235356/article/details/144155464?spm1001.2014.3001.5501 一共有三个按钮从左到右按照顺序我姑且叫做A、B、C。 当按下A之后会切换模式模式一共是五种按照切换顺序是灯全灭初始模式调节红灯调节绿灯调节蓝灯灭调节灯。 调节红灯的时候上面两排主灯亮下面三个灯只亮最左边一个灯并且只亮红光这时候按下B可以增加红光的值按下C可以减少红光的值如果是双击的话那么就是增加减少10满数值是255。调节的结果会实时反应在两排主灯上。 调节绿灯蓝灯也是一样的道理灭调节灯模式就是三个调节灯灭两排主灯亮此时按下B和C没有效果。 原理图画了两版咱就聊聊第二版吧因为第一版确实没设计好三个按钮光加上拉电阻没加电容然后烧录留的接触点第一版原理图里也没有我记得放了但是没有不过PCB是没问题的 主控用的STC8G1K08A-SOP8外围电路仅需在VCC和GND之间接俩电容就行。 按键我接了P32、P33、P55分别是外部中断0、1、3。 P54接WS2812B并且是可以串联多个的。 充电管理芯片用的TP4056买的国产高端平替一个一毛多一下子屯多了大家可以自行更换成自己手上有的芯片。 Type-C只是用来充电的所以也是可以自己换成别的型号的。 代码如下注释都已经写好了也不难应该是可以看的懂的。 #include STC8G_H_Delay.h #include STC8G_H_Exti.h #include STC8G_H_GPIO.h #include STC8G_H_NVIC.h #include STC8G_H_Timer.h // RGB灯和按键的引脚 #define WS2812B_IN P54 #define KEY1_GPIO P32 #define KEY2_GPIO P33 #define KEY3_GPIO P55// G、R、B uint16 color[3] {10, 10, 10}; uint8 timer0_open 0, timer0_over 0; // 定时器0开启 结束标志 uint8 timer1_open 0, timer1_over 0; // 定时器1开始 结束标志 uint8 key1_down 0, key2_down 0, key3_down 0; // 三个按键是否按下的标志 uint8 key1_count 0, key2_count 0, key3_count 0; // 三个按键按下次数 // 0全关,1调R,2调G,3调B,4关调色, uint8 mode 0;void Timer0_ISR_Handler (void) interrupt TMR0_VECTOR{static uint8 i 0;if(i 5){ // 定时10秒消除抖动ET0 0; // 关闭定时器0timer0_open 0; // 修改标志timer0_over 1;i 0;} }void Timer1_ISR_Handler (void) interrupt TMR1_VECTOR{static count 0;if(count 250){ // 定时500ms来记录期间按下按键的次数ET1 0; // 关闭定时器1timer1_open 0; // 修改标志timer1_over 1;count 0;} }// 复位 void WS2812B_SendReset(void) {unsigned char data i, j;WS2812B_IN 0; // 拉低80usi 2;j 219;do {while (--j);} while (--i); }// 发送1码 void WS2812B_SendOne(void) {WS2812B_IN 1; // 拉高延时0.6us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();WS2812B_IN 0; // 拉低延时0.3us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); }// 发送0码 void WS2812B_SendZero(void) {WS2812B_IN 1; // 拉高延时0.3us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();WS2812B_IN 0; // 拉低延时0.6us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); }// 发送自定义RGB颜色 void WS2812B_SendColor(void) {uint8 i, j;for (i 0; i 3; i) {for (j 0; j 8; j) { if (color[i] (0x80 j)) // 高位在前WS2812B_SendOne();elseWS2812B_SendZero();}} }// 初始化GPIO void GPIO_Init(void) {P5_MODE_OUT_PP(GPIO_Pin_4);P3_MODE_IN_HIZ(GPIO_Pin_3);P3_PULL_UP_ENABLE(GPIO_Pin_3);P3_MODE_IN_HIZ(GPIO_Pin_2);P3_PULL_UP_ENABLE(GPIO_Pin_2);P5_MODE_IN_HIZ(GPIO_Pin_5);P5_PULL_UP_ENABLE(GPIO_Pin_5); }// 中断初始化 void Exti_Init(void) {EXTI_InitTypeDef Exti_InitStructure;Exti_InitStructure.EXTI_Mode EXT_MODE_Fall;Ext_Inilize(EXT_INT0, Exti_InitStructure);NVIC_INT0_Init(ENABLE, Priority_1);Exti_InitStructure.EXTI_Mode EXT_MODE_Fall;Ext_Inilize(EXT_INT1, Exti_InitStructure);NVIC_INT1_Init(ENABLE, Priority_1);Exti_InitStructure.EXTI_Mode EXT_MODE_Fall;Ext_Inilize(EXT_INT3, Exti_InitStructure);NVIC_INT3_Init(ENABLE, Priority_1); }// 定时器初始化 void Timer_Init(void){TIM_InitTypeDef initer;initer.TIM_Mode TIM_16BitAutoReload; // 模式0,16位自动重装载寄存器.initer.TIM_ClkOut DISABLE; // 失能可编程时钟输出initer.TIM_ClkSource TIM_CLOCK_1T; // 1T工作模式initer.TIM_Value 17536; // 延时2ms initer.TIM_Run ENABLE; Timer_Inilize(Timer0, initer);Timer_Inilize(Timer1, initer);NVIC_Timer0_Init(DISABLE, Priority_2);NVIC_Timer1_Init(DISABLE, Priority_2); }// 当进入外部中断之后的处理逻辑 void when_key_down(uint8 what_key){WakeUpSource 0;if(timer0_open 0){ // 如果定时器0没有打开,那么进入处理逻辑;否则判定为抖动,不予理会timer0_open 1; ET0 1; // 打开定时器0// 记录按下的按键if(what_key 1) key1_down 1;else if(what_key 2) key2_down 1;else if(what_key 3) key3_down 1;if(timer1_open 0){ // 如果定时器1没打开,那么打开timer1_open 1;ET1 1;}} }// 切换模式 void change_mode(void){uint16 i 0;uint8 j 0;if(mode 0){ // 所有灯灭 给所有灯发送0x00 0x00 0x00WS2812B_SendReset();for(i 0; i 360; i) WS2812B_SendZero();}else if(mode 1){ // 调R,前三个灯只亮第一个且只亮红灯WS2812B_SendReset();for(j 0; j 8; j) WS2812B_SendZero();for(j 0; j 8; j){if (color[1] (0x80 j)) WS2812B_SendOne();else WS2812B_SendZero();}for(j 0; j 56; j) WS2812B_SendZero();}else if(mode 2){ // 调G,前三个灯只亮第二个且只亮绿灯WS2812B_SendReset();for(j 0; j 24; j) WS2812B_SendZero();for(j 0; j 8; j){if (color[0] (0x80 j)) WS2812B_SendOne();else WS2812B_SendZero();}for(j 0; j 40; j) WS2812B_SendZero();}else if(mode 3){ // 调B,前三个灯只亮第三个且只亮蓝灯WS2812B_SendReset();for(j 0; j 64; j) WS2812B_SendZero();for(j 0; j 8; j){if (color[2] (0x80 j)) WS2812B_SendOne();else WS2812B_SendZero();}}else if(mode 4){ // 前三个灯全灭WS2812B_SendReset();for(i 0; i 72; i) WS2812B_SendZero();}if(mode ! 0){ // 当模式不为全灭时,需要更新后面的RGB灯for(i 0; i 12; i){WS2812B_SendColor();}} }void main(void) {EAXSFR(); // 扩展SFR(XFR)访问使能GPIO_Init();Exti_Init();Timer_Init();EA 1; // 开启中断while (1) {if(WakeUpSource 1){when_key_down(1);}else if(WakeUpSource 2){when_key_down(2);}else if(WakeUpSource 4){when_key_down(3);}// 当定时器0结束运行if(timer0_over 1){timer0_over 0;// 增加按键按下次数if(key1_down 1){key1_down 0;if(KEY1_GPIO 0) key1_count;}else if(key2_down 1){key2_down 0;if(KEY2_GPIO 0) key2_count;}else if(key3_down 1){key3_down 0;if(KEY3_GPIO 0) key3_count;}}// 当定时器1结束运行if(timer1_over 1){timer1_over 0;// 根据按键按下的次数分别对RGB的数值进行处理if(key1_count ! 0){if(mode 4) mode 0;}else if(key2_count 1){if(mode 1) color[1];else if(mode 2) color[0];else if(mode 3) color[2];}else if(key3_count 1){if(mode 1) color[1]--;else if(mode 2) color[0]--;else if(mode 3) color[2]--;}else if(key2_count 2){if(mode 1) color[1] 10;else if(mode 2) color[0] 10;else if(mode 3) color[2] 10;}else if(key3_count 2){if(mode 1) color[1] - 10;else if(mode 2) color[0] - 10;else if(mode 3) color[2] - 10;}change_mode();key1_count key2_count key3_count 0; // 清空}} }我用的是STC的库函数不懂使用的小伙伴可以看看我往期的文章有教学系列文章。 https://blog.csdn.net/m0_63235356/category_12853526.html?spm1001.2014.3001.5482https://blog.csdn.net/m0_63235356/category_12853526.html?spm1001.2014.3001.5482
http://www.hkea.cn/news/14339197/

相关文章:

  • 做微课的网站有哪些方面怎么快速建网站
  • 国外网站设计欣赏分析五大跨境电商平台对比分析
  • 怎么做网站教程图片长春网络推广seo
  • 中国建设银行电话95533seo网站推广怎么收费
  • linux下网站搭建北京餐饮网络营销公司
  • 定制网站案例深圳做网站佰达科技三十
  • 做网站宿迁软件工程师报考条件
  • 网站界面模板下载关于jsp网站开发的最新书籍
  • 北京电商网站排行seo关键字怎么优化
  • 前端做网站需要psd to wordpress
  • 山东网站建设哪里好网站做多久
  • 南宁网站快速排名提升众筹 wordpress
  • 国际站wap端流量建设网站需要营业执照吗
  • 网站建设询价嘉兴网站公司
  • 付费资料网站开发罗村建网站
  • 邯郸网站制chrome打开建设银行网站 个人网上银行怎么不能查询明细
  • 如何建电子商务网站平台网站建设报价
  • 建设工程交易中心网站收费标准学会网站建设三方协议
  • 属于自己的网站哪个网站注册域名
  • 北京品牌网站建设公司哪家好公司官网开发
  • 安徽建设银行招聘网站fm网站开发
  • 柳州建设厅官方网站中国工程建设信息网官网查询
  • 邢台做网站石家庄企业logo设计
  • 网站建设与运营固定资产最好的企业网站源码
  • 有哪些外贸公司网站做的比较好邢台网站维护
  • 网站管理员登陆不了网站建设中所涉及的所有链接建设
  • 昆明婚恋网站价格内蒙古做网站的公司
  • 三合一网站一般多少钱网站设计费用志
  • 网站上做网页怎么改图片公司名称大全四个字
  • 织梦网站怎么做安全措施微网站获取访客手机