Arduino无痛开发_LED8*8点阵实验(详解)

Arduino无痛开发_LED8*8点阵实验(详解)准备元件 一个丑丑的 8*8LED点阵(16/18引脚) 本次实验没有使用寄存器所以需要大量的杜邦线 Arduino Mega 同理,8*8至少16的引脚,Mega是最适合的 LED_8*8点阵原理图

主页图片

准备元件

一个丑丑的 8*8LED点阵(16/18引脚) 在这里插入图片描述 本次实验没有使用寄存器所以需要大量杜邦线

Arduino Mega

在这里插入图片描述 同理,8*8至少16的引脚,Mega是最适合的

LED_8*8点阵原理图

在这里插入图片描述 在这里插入图片描述 8* 8 LED点阵共由 64 个发光二极管组成,每个发光二极管是放置在行线和列线的交叉点上,且当对应的行为 1 电平,列置 0 电平,该坐标二极管就亮; 同理点亮一行:第 1 脚要接高电平,【A,B,C,D,E,F,G,H 】接低电平,第一行点亮;反之,第 a 脚接低电平,而【】1、2、3、4、5、6、7、8】接高电平,第一列点亮;

PS:行所接的是二极管的阳极,为高电平,列所接的是二极管的阴极极,为低电平

LED_8*8点阵接线图

18引脚 在这里插入图片描述 平面示意图 在这里插入图片描述 16引脚 在这里插入图片描述 对于对称分布的,16引脚平面引脚图 在这里插入图片描述 PS:部分元件的实际引脚可能会很乱,这个具体看元件的实际引脚

接线部分

方便来说,我焊接在板子上,面包板会比较松 在这里插入图片描述 小建议 接线的时候,一行和一列的按一定顺序接Mega(具体可以看代码定义) 在这里插入图片描述 PS:上图大概模拟接线顺序,并非本次实验接线图

在这里插入图片描述

Arduino代码部分

int Row[] = {30, 31, 32, 33, 34, 35, 36, 37};//定义行引脚
int Column[] = {22, 23, 24, 25, 26, 27, 28, 29};//定义列引脚

unsigned char Light[8][8] = //'全亮'
{
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
};
 
unsigned char Dark[8][8] = //'全灭'
{
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0,
};
 
void setup() {
  // 矩阵代码运行一次:
  for(int i = 0; i < 8; i++)
  {
    pinMode(Row[i], OUTPUT);//输出模式
    pinMode(Column[i], OUTPUT);//输出模式
  }
}
void loop() {
  //主代码循环运行:
  for(int i = 0; i< 100; i++)
  {
    Display(Light);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(Dark);
  }
}

void Display(unsigned char lattice[8][8])//显示函数
{
  for(int r = 0; r < 8; r++)
  {
    digitalWrite(Row[r], LOW);
    for(int c = 0; c < 8; c++)
    {
      digitalWrite(Column[c], lattice[r][c]);
    }
    delay(1);
    Clear();
  }
}
void Clear()//清除函数
{
  for(int i = 0; i < 8; i++)
  {
    digitalWrite(Row[i], HIGH);
    digitalWrite(Column[i], LOW);
  }
}

编译上传成功后,LED灯开始一闪一闪

绘制你喜欢的图案

这部分是绘制面板,你可以想象你想绘制的图案(‘1’代表亮灯,‘0’为熄灭) 例如:

unsigned char bigheart[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,
};

大概是这样子: 在这里插入图片描述

LOVE爱心~表白

int Row[] = {30, 31, 32, 33, 34, 35, 36, 37};//定义行引脚
int Column[] = {22, 23, 24, 25, 26, 27, 28, 29};//定义列引脚

unsigned char bigheart[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 smallheart[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,
};
unsigned char I[8][8] = //'I'
{
  0, 1, 1, 1, 1, 1, 1, 0, 
  0, 1, 0, 1, 1, 0, 1, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0, 
  0, 1, 0, 1, 1, 0, 1, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
};
unsigned char L[8][8] = //'L'
{
  0, 1, 1, 1, 1, 1, 1, 0, 
  0, 1, 0, 1, 1, 0, 1, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
  0, 1, 0, 1, 1, 0, 0, 1,
  0, 1, 1, 1, 1, 1, 1, 1,
};
unsigned char O[8][8] = //'O'
{
  0, 0, 1, 1, 1, 1, 0, 0, 
  0, 1, 0, 0, 0, 0, 1, 0,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  0, 1, 0, 0, 0, 0, 1, 0,
  0, 0, 1, 1, 1, 1, 0, 0,
};
unsigned char V[8][8] = //'V'
{
  0, 0, 0, 0, 0, 0, 0, 0, 
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  0, 1, 0, 0, 0, 0, 1, 0,
  0, 1, 0, 0, 0, 0, 1, 0,
  0, 0, 1, 0, 0, 1, 0, 0,
  0, 0, 1, 0, 0, 1, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0,
};
unsigned char E[8][8] = //'E'
{
  0, 0, 0, 0, 0, 0, 0, 0, 
  0, 1, 1, 1, 1, 1, 1, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 0, 0, 0, 0, 0, 0,
  0, 1, 1, 1, 1, 1, 1, 0,
};
unsigned char U[8][8] = //'U'
{
  1, 0, 0, 0, 0, 0, 0, 1, 
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 0, 0, 0, 0, 0, 0, 1,
  1, 1, 0, 0, 0, 0, 1, 1,
  0, 1, 1, 0, 0, 0, 1, 1,
  0, 0, 1, 1, 1, 1, 0, 0,
};
 
void setup() {
  // 矩阵代码运行一次:
  for(int i = 0; i < 8; i++)
  {
    pinMode(Row[i], OUTPUT);//输出模式
    pinMode(Column[i], OUTPUT);//输出模式
  }
}
void loop() {
  //主代码循环运行:
  for(int i = 0; i< 100; i++)
  {
    Display(I);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(L);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(O);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(V);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(E);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(U);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(bigheart);
  }
  for(int i = 0; i < 100; i++)
  {
    Display(smallheart);
  }
  for(int i = 0; i< 100; i++)
  {
    Display(bigheart);
  }
  for(int i = 0; i < 100; i++)
  {
    Display(smallheart);
  }
  for(int i = 0; i < 100; i++)
  {
    Display(bigheart);
  }
}

void Display(unsigned char lattice[8][8])//显示函数
{
  for(int r = 0; r < 8; r++)
  {
    digitalWrite(Row[r], LOW);
    for(int c = 0; c < 8; c++)
    {
      digitalWrite(Column[c], lattice[r][c]);
    }
    delay(1);
    Clear();
  }
}
void Clear()//清除函数
{
  for(int i = 0; i < 8; i++)
  {
    digitalWrite(Row[i], HIGH);
    digitalWrite(Column[i], LOW);
  }
}

实物效果

在这里插入图片描述

今天的文章Arduino无痛开发_LED8*8点阵实验(详解)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21267.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注