|
本帖最后由 kuku_peng 于 2012-7-12 17:19 编辑
5*5 LED点阵,可以显示简单的表情、数字、字母,也可以进行一些动态的花式,
是进行更复杂的LED点阵或LED立方的基础。这里介绍如何使用arduino进行简单的5*5LED控制。
你需要准备
■5*5 LED
■电阻10个
■洞洞板一块
■Arduino Uno 一块
■连线若干
显示原理
5*5 LED 有10个pin脚,5个一组,分别对应X和Y方向,形成一个5*5的矩阵。通过控制矩阵的X和Y的高低电平,从而实现对25个LED中某一个LED的控制。
如果,某一块LED点阵,对应X方向的pin脚为低电平为点亮LED,对应Y方向的pin脚为高电平为点亮LED,
那么 x1=LOW,y1=HIGH,则表明(x1,y1)位置的LED点亮
2组(共10个)pin中,哪一组是x,哪一组是y;
每个pin是高电平点亮,还是低电平点亮,是需要搭建好硬件后,测试后才能确定的,不同的LED点阵可能不同。
安装5*5 LED
一般LED点阵需要串联电阻后使用,否则可能烧毁。我们这块5*5 LED点阵可以在每个pin脚上都串联一个220的电阻,然后再引出pin脚,接到Arduino的IO上,使用洞洞板,将LED、电阻和插针放置好,并焊好。
将LED点阵连到Arduino
将LED点阵的10pin用杜邦线分别连到Arduino的IO口上。完成硬件连接
撰写代码,控制LED点阵
首先定义好pin脚对应的arduino的IO口- const int x1 = 3;
- const int x2 = 4;
- const int x3 = 5;
- const int x4 = 6;
- const int x5 = 7;
- const int y1 = 8;
- const int y2 = 9;
- const int y3 = 10;
- const int y4 = 11;
- const int y5 = 12;
复制代码
这种5*5 LED点阵需要使用动态显示的方式,如果你需要显示一个数字1,组成数字1的所有LED点不能同时显示,如果同时显示,可能导致电路问题。这时候需要一个一个的显示,利用视觉暂留,看上去好像全部显示一样。所以我们需要一些基础方法。
显示某一个坐标的LED
- void x_y_on(int x,int y)
- {
- digitalWrite(x,x_light);
- digitalWrite(y,y_light);
- delay(LED_on_off_time);
- digitalWrite(x,1-x_light);
- digitalWrite(y,1-y_light);
- }
复制代码
使用二进制数组,设计显示内容
- byte one[5]= {B00100,
- B01100,
- B00100,
- B00100,
- B01110};
- byte * p_one = one;
复制代码
取二进制位的方法
- int get_bit_val(byte b,int b_order)
- {
- switch (b_order)
- {
- case 4:
- return b & 0x1;
- break;
- case 3:
- return (b & 0x2)>>1;
- break;
- case 2:
- return (b & 0x4)>>2;
- break;
- case 1:
- return (b & 0x8)>>3;
- break;
- case 0:
- return (b & 0x10)>>4;
- break;
- }
- }
复制代码
对取出的二进制位值,进行相应的显示,bit为1的显示,位置为0的不显示
- void show_symbol(byte * p,int time)
- {
- int light_val=0;
- for (int times =0;times< time/25;times++)
- {
- for (int i=0;i<5;i++)
- {
- for( int j=0;j<5;j++)
- {
- light_val = get_bit_val(p[i],j);
- if (light_val == 1)
- {
- x_y_on(x_pin_convert(j),y_pin_convert(i));
- }
- }
- }
- }
- }
复制代码 完成后,即可显示如图,可按照自己的需要显示图形。(完 个人新blog www.robot91.com)
俺这个5*5 LED购于 这里 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|