STC8H8K64U,驱动960颗16x60段WS2812,制作动感音频FFT
STC8H8K64U,驱动960颗16x60段WS2812,效果展示!{:4_174:}{:4_174:}{:4_174:}用自制的STC8H8K64U核心板加MIC也可以驱动 有兴趣欢迎沟通交流{:4_186:{:4_186:}{:4_186:} 颜色和动态效果都可以根据自己想法改进 6X150的音柱 VECENT_LIN 发表于 2024-2-3 15:32
6X150的音柱
谢谢! 这个有动感 380091044 发表于 2024-2-19 16:47
这个有动感
音频同步 VECENT_LIN 发表于 2024-2-19 16:48
音频同步
分享出来,大家一起玩,可玩出不同的花样来,与粉同乐, void showbar()
{
u16 i,j,f;
u8 i2,high;//,f2,f3;
for(i2=0;i2<16;i2++) //读取FFT转换数据
{
float t0=0;
t0=sqrt(pow((s.real+s.real),2)+pow((s.imag+s.imag),2))/2;
dis_rdata=(u8)t0;
}
///**************************************************************/
///*****************写入下屏,i:0~16,表示16列**************/
///***************************high:表示列的高度*********/
for (i=0;i<16;i++) //在显示下屏显存必须清0,后面有操作是或运算
{
for (j=0;j<60;j++)
{
dis_data=0;
}
}
for(i=0;i<16;i++)
{
high=dis_rdata;
// high=15;
if(high<4)high=0;//判断小于2时,为0/
if(high>60)high=56; //判断高于60时,为62***/
for(j=0;j<high;j++)
{
if(i==1||i==3||i==5||i==7||i==9||i==11||i==13||i==15)
{dis_data=dis_RGB;//0,2,4,6,8,10,12,14倒相
}
else
{dis_data=dis_RGB;
}
}
if(high>0)
{
switch(i)
{case 0:dis_data=0x00ff00;dis_data=0x00ff00;break;//R
case 1:dis_data=0x0000ff;dis_data=0x0000ff;break;//G
case 2:dis_data=0xff0000;dis_data=0xff0000;break;//B
case 3:dis_data=0xffff00;dis_data=0xffff00;break;//BR
case 4:dis_data=0xff00ff;dis_data=0xff00ff;break;//BG
case 5:dis_data=0x00ffff;dis_data=0x00ffff;break;//RG
case 6:dis_data=0xffffff;dis_data=0xffffff;break;//RGB
case 7:dis_data=0x00ff00;dis_data=0x00ff00;break;//R
case 8:dis_data=0x0000ff;dis_data=0x0000ff;break;//G
case 9:dis_data=0xff0000;dis_data=0xff0000;break;//B
case 10:dis_data=0x00ff00;dis_data=0x00ff00;break;//R
case 11:dis_data=0x0000ff;dis_data=0x0000ff;break;//G
case 12:dis_data=0xff0000;dis_data=0xff0000;break;//B
case 13:dis_data=0x00ff00;dis_data=0x00ff00;break;//R
case 14:dis_data=0x0000ff;dis_data=0x0000ff;break;//G
case 15:dis_data=0xff0000;dis_data=0x0000ff;break;//B
}
}
}
for(i=0;i<60;i++) //数据合并
{
data1=TC<<8|TC;
for (f1=0; f1<16; f1++)
{
if (data1&0x8000) // 发送数据
{
switch(f1)
{case 0:dis_data=dis_data|0x00ff00;break;//R
case 1:dis_data=dis_data|0x00ffff;break;//G
case 2:dis_data=dis_data|0x00ff00;break;//B
case 3:dis_data=dis_data|0x00ffff;break;//BR
case 4:dis_data=dis_data|0x00ff00;break;//BG
case 5:dis_data=dis_data|0x00ffff;break;//RG
case 6:dis_data=dis_data|0x00ff00;break;//RGB
case 7:dis_data=dis_data|0x00ffff;break;//R
case 8:dis_data=dis_data|0x00ff00;break;//G
case 9:dis_data=dis_data|0x00ffff;break;//B
case 10:dis_data=dis_data|0x00ff00;break;//R
case 11:dis_data=dis_data|0x00ffff;break;//G
case 12:dis_data=dis_data|0x00ff00;break;//B
case 13:dis_data=dis_data|0x00ffff;break;//R
case 14:dis_data=dis_data|0x00ff00;break;//G
case 15:dis_data=dis_data|0x00ffff;break;//B
}
}
data1=data1<<1;
}
//
//
}
for(i=0;i<60;i++) //数据合并
{
for(f3=0;f3<2;f3++)
{
data1=TC;
for (f1=0; f1<8; f1++)
{
f2=f3*8+f1;
if (data1&0x80) // 发送数据
{
if(f1==0||f1==2||f1==4||f1==6)
{
dis_data=dis_data|0x0000ff;//0,2,4,6倒相
}
else
{dis_data=dis_data|0x00ff00; //1,3,5,7
}
}
data1=data1<<1;
}
}
}
for(f=0;f<16;f++) //数据转存
{
for(i=0;i<60;i++)
{
DisP_Color( dis_data);
}
}
delay_ms(100);
reset();
} 380091044 发表于 2024-2-19 16:51
分享出来,大家一起玩,可玩出不同的花样来,与粉同乐,
分享显示子程序,硬件的接法都不一样,只能按你的原理图重新修改就好,用音频的FFT修改就好