友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com
这次介绍的是使用8×8点阵(没有用到驱动模块,直接用Ardunio IO口控制)制作跳动的心。差不多用完所有IO口了,才能控制64个LED灯。
点阵说明
一般数码管有出厂信息:比如型号为LG5011AH,LG5011BH这里面的AH、BH中的A代表共阴极、B代表共阳极,H代表高亮。参考
另外,关于8*8点阵共阳和共阴的解释(有的初学者是一头雾水):
1. 有的朋友 认为:共阳就是LED正极全部接在一起,而负极则不是,共阴相反但也是类似。这种说法是错误的哦!(数码管的共阳和共阴是这样的),但点阵8*8点阵共阴 和共阳都是接在一起的。
2. 所谓共阳和共阴只是管脚排列名称相同(也就是说无论共阳还是共阴管脚编号一 致),但行和列的极性则相反。既然这样,那么我反过方向接共阳不就是变成了共阴吗?理论上是的,但要注意行和列相交的位置发生了变化。
3. 注意:8*8点阵的管脚不是有顺序的排列哦!参考
引脚说明
BOM表
Arduino Uno *1
共阳 8x8LED点阵 16脚 *1
面包板 *2(由于点阵大小的原因,需要上下拼接两块面包板)
跳线若干(如果使用公对母杜邦线,就可以节省面包板了)
接线图
| 行 | >>> | 引脚 | | | 列 | >>> | 引脚 |
| H1 | >>> | 2 | | | L1 | >>> | 6 |
| H2 | >>> | 7 | | | L2 | >>> | 11 |
| H3 | >>> | A5 | | | L3 | >>> | 10 |
| H4 | >>> | 5 | | | L4 | >>> | 3 |
| H5 | >>> | 13 | | | L5 | >>> | A3 |
| H6 | >>> | A4 | | | L6 | >>> | 4 |
| H7 | >>> | 12 | | | L7 | >>> | 8 |
| H8 | >>> | A2 | | | L8 | >>> | 9 |
程序开源代码
int R[] = {2,7,A5,5,13,A4,12,A2}; //行
int C[] = {6,11,10,3,A3,4,8,9}; //列
unsigned char biglove[8][8] = //大“心型”的数据
{
0,0,0,0,0,0,0,0,
0,1,1,0,0,1,1,0,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,0,
0,0,1,1,1,1,0,0,
0,0,0,1,1,0,0,0,
};
unsigned char smalllove[8][8] = //小“心型”的数据
{
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,1,0,0,1,0,0,
0,1,1,1,1,1,1,0,
0,1,1,1,1,1,1,0,
0,0,1,1,1,1,0,0,
0,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,
};
void setup()
{
//循环定义行列PIN 为输出模式
for(int i = 0;i<8;i++)
{
pinMode(R[i],OUTPUT);
pinMode(C[i],OUTPUT);
}
}
void loop()
{
for(int i = 0 ; i < 100 ; i++) //循环显示100次
{
Display(biglove); //显示大”心形“
}
for(int i = 0 ; i < 50 ; i++) //循环显示50次
{
Display(smalllove); //显示小“心形”
}
}
void Display(unsigned char dat[8][8]) //显示函数
{
for(int c = 0; c<8;c++)
{
digitalWrite(C,LOW);//选通第c列
//循环
for(int r = 0;r<8;r++)
{
digitalWrite(R[r],dat[r]);
}
delay(1);
Clear(); //清空显示去除余晖
}
}
void Clear() //清空显示
{
for(int i = 0;i<8;i++)
{
digitalWrite(R[i],LOW);
digitalWrite(C[i],HIGH);
}
}
效果如下。
文章来源:
Arduino 实验室
版权声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除。



评论列表