4*4*4光立方制作分享

一、前言

光立方顾名思义就是会发光的立方体,光立方的基本原理是利用人眼的暂留效应,利用单片机控制LED灯快速的闪烁,显示出一个完整的图案。光立方原理相对简单只是制作过程较为耗时。

二、LED介绍

1、介绍

本设计的光立方采用的是循环点亮的方法,通过循环将LED灯层层点亮,从而达到想要的效果。这个和数码管的动态扫描一个道理,当点亮第一层时对应一个图形,第二层对应一个图形,当扫描速度加快时,看上去就成为一个图形了。

2、驱动

本设计由于光立方小所以使用9013 NPN三极管进行驱动,目的是为LED灯提供足够大的电压电流,NPN三极管作为驱动电路使用时,在基级需串联电阻以保护三极管不被烧坏。三极管集电极与发射极一端接LED灯的负极一端接GND。

三、硬件连接

实物图
正面
在这里插入图片描述
侧面
在这里插入图片描述
背面
在这里插入图片描述

原理图
单片机最小系统,可自己添加按键控制程序。本设计未添加。
在这里插入图片描述
驱动电路
在这里插入图片描述
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);
 }
}

五、效果展示

4*4*4光立方

六、代码链接

关注公众号“小小创客者”回复“4*4光立方”获得代码,如有错误欢迎指正。

  • 29
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要用Arduino做一个4*4*4的光立方,我们需要以下材料和步骤。 所需材料: 1. Arduino主控板 2. 16个LED 3. 适配器或电池供电 4. 杜邦线 步骤: 1. 连接LED和Arduino主控板:将LED的长脚(阳极)连接到Arduino的数字输出引脚,短脚(阴极)连接到GND引脚。重复该步骤,直到所有LED都连接。 2. 编写程序:打开Arduino开发环境,创建一个新的项目。编写代码以控制LED的亮灭模式和时间间隔。例如,可以使用循环将LED逐个点亮和熄灭,以形成一个立方体模型。 3. 上传程序:将编写好的代码上传到Arduino主控板。 4. 完成连接和电源供应:将Arduino主控板通过USB线连接到电脑,或使用适配器将其连接到电源。这样,电源会供应给主控板和LED。 5. 测试:打开开关,观察LED是否按照预期工作。如果有任何问题,可以检查是否正确连接了每个LED,或重新检查代码的准确性。 6. 装配立方体:使用木板或塑料构建一个适合的4*4*4的立方体框架,确保LED被正确安装和排列。 7. 细化:根据个人喜好和需求,可以给立方体添加一些附加功能,如加速度传感器、无线通信功能等。 总结:用Arduino制作4*4*4的光立方需要连接LED,编写和上传代码,提供电源供应,并将其装配成立方体。还可以根据需求进行额外的改进和增加功能。这个项目需要对电子元件和编程有一定的了解,并具备基本的电子装配能力。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值