| 谢谢楼主 我学习先 |
| 不错!谢谢楼主分享。 |
| 请教一下楼主,我移植到51单片机上,只有白色,不知道是什么原因 |
| 乐此不疲!乐此不疲!感谢分享! |
| 谢谢分享,学习一下!学习这个有瘾! |
| 1毛钱的应广单片机PMS150G驱动WS2812代码写完了。 |
|
漂亮,这种算法有乘除法运算,运行效率和储存空间都是挑战,对于成本较低的MCU,就... 有没有高手来完善一下 |
| 主循环用个大DELAY,还让不让其他进程活?改天给你们写个,估计都还是大学生。 |
| 感谢楼主,我去抽点时间学习一下 。 |
| 正用到这款做机器人控制灯用,学习下! |
| 很漂亮,帅啊 |
| 不错,不错有空研究一下 |
| 用过SPI,试试PWM的。 |
| 牛呀,才学习就可以写出这样的程序不简单 |
| 先记录下来,后面学习一下 |
| 改到ESP-12F上试了一下,发现只有8个灯数量太少变化就不明显,等有空改长了试试 |
|
大家用的是什么型号芯片? |
|
点亮了很好看 |
| Thankjs share nice colorful effect |
| 点亮了很好看 |
| 有8266的驱动程序没 |
| 请问使用PWM方式的话不使用DMA怎么实现呢,因为有的单片机是没有DMA控制器的 |
| 看看能不能移植到esp8266 谢谢楼主 |
| 正好手里有一个ws2812,也想做这个,学习一下 |
|
点亮了很好看 |
| 点亮了很好看 |
孙少 发表于 2020-12-30 11:28 vcc+gnd+signal=三根线 ![]() |
| 我有一条晚上2812灯带是三根线的,引脚怎么去接 |
| 正好在做这个,学习一下 |
| 感谢分享,学习一下,非SPI方式。 |
| 非常感谢,值得学习一下,非常好 |
|
感谢楼主分享,下载到板子里可以正常工作,我尝试吧TIM2换成TIM1就不能亮了,这是为什么呢? 是我哪里漏修改了么? void WS2812B_TIM_init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; GPIO_InitTypeDef GPIO_InitStructure; DMA_InitTypeDef DMA_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /* GPIOA Configuration: TIM2 Channel 1 as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); /* Compute the prescaler value */ //PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1; /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = 89; // 800kHz TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_RepetitionCounter=0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* PWM1 Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM1, &TIM_OCInitStructure); /* configure DMA */ /* DMA clock enable */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /* DMA1 Channel6 Config */ DMA_DeInit(DMA1_Channel2); DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&TIM1->CCR1; // physical address of Timer 3 CCR1 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)LED_BYTE_Buffer; // this is the buffer memory DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; // data shifted from memory to peripheral DMA_InitStructure.DMA_BufferSize = 24; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; // automatically increase buffer index DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; // stop DMA feed after buffer size is reached DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel2, &DMA_InitStructure); /* TIM3 CC1 DMA Request enable */ /* 只能使用通道1 TIMx_UP */ TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); } |
| 谢谢,有空试一下。 |
| 实际烧到单片机里运行,灯光效果很漂亮。 |
|
谢谢分享,学习一下 |
| 非常不错,感谢分享!!!! |
| 不错 学习一下 |
不闪动呀![]() |
| 谢谢分享,学习一下 |
| 正好在做这个,学习一下 |