不错!谢谢楼主分享。 |
请教一下楼主,我移植到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); } |
谢谢,有空试一下。 |
实际烧到单片机里运行,灯光效果很漂亮。 |
谢谢分享,学习一下 |
非常不错,感谢分享!!!! |
不错 学习一下 |
不闪动呀![]() |
谢谢分享,学习一下 |
正好在做这个,学习一下 |