一、前言 光立方顾名思义就是会发光的立方体,光立方的基本原理是利用人眼的暂留效应,利用单片机控制led灯快速的闪烁,显示出一个完整的图案。光立方原理相对简单只是制作过程较为耗时。
二、oled模块介绍 1、介绍 本设计的光立方采用的是循环点亮的方法,通过循环将led灯层层点亮,从而达到想要的效果。这个和数码管的动态扫描一个道理,当点亮第一层时对应一个图形,第二层对应一个图形,当扫描速度加快时,看上去就成为一个图形了。
2、驱动 本设计由于光立方小所以使用9013 npn三极管进行驱动,目的是为led灯提供足够大的电压电流,npn三极管作为驱动电路使用时,在基极需串联电阻以保护三极管不被烧坏。三极管集电极与发射极一端接led灯的负极一端接gnd。
三、硬件连接 1、实物图 正面
侧面
背面
2、 原理图 最小单片机系统
驱动电路
led灯连接
p0、p1控制每一层点亮的led灯,连接控制led灯三极管的基级。
p24、p25、p26、p27控制点亮的层数,同样使用三极管进行控制。
四、软件代码 main主函数
调用想要的灯光,可以根据根据自己的想法进行不同的创意。我是直接调用方便大家学习使用。
void main(){ while(1) { and1(); and2(); and3(); and4(); and5(); and6(); and7(); }} bmp.c
存储不同的灯光效果,程序中我设计了九个供大家学习。全亮、全灭、平面从最左面到最右面、平面从最下面到最上面、旋转点亮、旋转全亮、平面旋转、波浪、斜面。每个效果的程序结构基本相同。
void end() //全灭void begin() //全亮void and1()//平面最左边到最右边void and2()//平面最下面到最上面void and3()//旋转点亮void and4()//旋转亮void and5()//平面旋转void and6()//波浪void and7()//斜面1 大致讲解:由于使用p0、p1两个端口,所以使用a、b分别控制,ab的第一行为光立方每一层的第一个状态,第二行为第二个状态。循环中j为状态的个数,根据实际情况进行改写,k为每个状态的时长,时长过短时影响效果,i为层数的选择,不需要更改。
void and6()//波浪{ unsigned char code a[2][4]= { {0x5a,0xa5,0x5a,0xa5}, //状态1 {0xa5,0x5a,0xa5,0x5a}, //状态2 }; unsigned char code b[2][4]= { {0x5a,0xa5,0x5a,0xa5},//状态1 {0xa5,0x5a,0xa5,0x5a},//状态2 }; int i,j,k; for(j=0;j<2;j++) { for(k=0;k<60;k++) { for(i=0;i<4;i++) { switch(i) { case(0): b1=1;b2=0;b3=0;b4=0; break;//显示第0层 case(1): b1=0;b2=1;b3=0;b4=0; break;//显示第1层 case(2): b1=0;b2=0;b3=1;b4=0; break;//显示第2层 case(3): b1=0;b2=0;b3=0;b4=1; break;//显示第3层 default:break; } a=a[j][i]; b=b[j][i]; delayms(1); } } }} delay.c
根据不同的效果进行添加。
#include delay.h/*------------------------------------------------ us延时函数 ------------------------------------------------*/void delayus2x(unsigned char t){ while(--t);}/*------------------------------------------------ ms延时函数------------------------------------------------*/void delayms(unsigned char t){ while(t--) { //大致延时1ms delayus2x(245); delayus2x(245); }} 五、效果展示 视频演示 https://live.csdn.net/v/215727
六、代码链接 关注公众号“小小创客者”回复“4*4光立方”获得代码,如有错误欢迎指正。
苹果每年要给高通公司平均支付10亿美元表示难以接受
PCie固态硬盘使用须知
电力通信及其在智能电网中的应用
FPGA零基础并不是你想的那样,门槛不低
模拟乘法器电路图
基于单片机的LED灯光立方设计
微信投票系统开发者生态爆发,公正微信投票平台快开发上线
阿根廷一银行和Bitex合作推出比特币跨境支付平台
新型激光扫描仪可在极短时间内检测到皮肤癌
如何使用TensorFlow Hub的ESRGAN模型来在安卓app中生成超分图片
泰克MSO/DPO2000B示波器系列简化和加快复杂设计的调试
基于FPGA的循环冗余校验实验系统
一款抢答器的质疑
尼泊尔和韩国联合资助Chameliya水电项目助力尼泊尔国家电网
邬贺铨院士:工业互联网ICT的新挑战
云计算与5G等新兴技术融合,推动传统企业数字化转型
关于GD32F350R8的单导联心电采集系统的介绍和分析
C语言实现面向对象的方式 C++中的class的运行原理
柔性供料器CCD视觉上料 柔性振动盘anyfeeder
深入了解开关电源BUCK电路各个元器件