多语言展示
当前在线:524今日阅读:4今日分享:26

arduino驱动1588LED8x8点阵实验

有很多同学问8x8点阵如何使用。这里就做一个简单原理性实验给大家arduino驱动1588LED8x8点阵实验。
工具/原料
1

arduino uno开发板一块

2

1588led8X8点阵一块

3

杜邦线若干

4

面包板

5

220欧电阻8个

6

arduino IDE

[原理及简单试验]
1

如图,认真学习一下1588各引脚对应各led点,及1588各引脚位置。大家一定要分析好。基本原理:当第一行接入高电平,第一列接入低电平,其它列高电平,那么第一个led灯就会亮了。所有led灯点亮原理是一样的。

3

下面根据基本原理来实现一个箭头。首先这里要知道一个概念:人眼视觉暂留。当led亮/灭间隔很小时,人是看不到灯灭的。所以要让8x8点阵显示一个箭头,就是每次点亮一行上的对应led.再灭掉。然后处理第二行。依次下去。所有就灰亮了。int led[8][8] = {//箭头方阵,1处是亮灯的led  {0, 0, 0, 1, 0, 0, 0, 0},  {0, 0, 1, 0, 0, 0, 0, 0},  {0, 1, 0, 0, 0, 0, 0, 0},  {1, 1, 1, 1, 1, 1, 1, 1},  {0, 1, 0, 0, 0, 0, 0, 0},  {0, 0, 1, 0, 0, 0, 0, 0},  {0, 0, 0, 1, 0, 0, 0, 0},  {0, 0, 0, 0, 0, 0, 0, 0}};void setup() {  // put your setup code here, to run once:  for (int i = 3; i <= 18; i++) {    pinMode(i, OUTPUT);    digitalWrite(i, LOW);  }  // Serial.begin(9600);}void loop() {  // put your main code here, to run repeatedly:  for (int i = 3; i <= 10; i++) {    digitalWrite(i, HIGH);    /////////////////////    for (int j = 11; j <= 18; j++) {      digitalWrite(j, 1 - led[i - 3][j - 11]);//把对应的灯点亮      delayMicroseconds(200);//点亮200微秒      digitalWrite(j, HIGH);//再把它灭掉    }    digitalWrite(i,   LOW);  }  //////////////////////////////////////////////////////////////}

【灵活应用-让箭头活起来】

上面已经实现了一个箭头显示。那么如何让箭头东起来呢?实际上原来是一样的。只要把我们的8x8点阵里数字左移就好了。每次把点阵输出后左移一次。就实现了箭头左移效果const int myspeed = 500;//速度控制int fast = 0;//速度控制变量int led[8][8] = {  {0, 0, 0, 1, 0, 0, 0, 0},  {0, 0, 1, 0, 0, 0, 0, 0},  {0, 1, 0, 0, 0, 0, 0, 0},  {1, 1, 1, 1, 1, 1, 1, 1},  {0, 1, 0, 0, 0, 0, 0, 0},  {0, 0, 1, 0, 0, 0, 0, 0},  {0, 0, 0, 1, 0, 0, 0, 0},  {0, 0, 0, 0, 0, 0, 0, 0}};void setup() {  // put your setup code here, to run once:  for (int i = 3; i <= 18; i++) {    pinMode(i, OUTPUT);    digitalWrite(i, HIGH);  }}void loop() {  fast = 0;  while (fast++ < myspeed) {//速度控制    for (int i = 3; i <= 10; i++) {// uno 3 到 10引脚,分别按图对应接8x8led的9 14 8 12 1 2 5      digitalWrite(i, HIGH);      /////////////////////      for (int j = 11; j <= 18; j++) {//uno 11 到 18,分别对应接8x8led的 13 3 4 10 6 11 15 16        digitalWrite(j, 1 - led[i - 3][j - 11]);//把点阵输出。注意0 1反向电平输出        digitalWrite(j, HIGH);      }      digitalWrite(i,   LOW);    }  }  /////////////////////////////////////////////////////////// // int led[][8],点阵左移功能for(int i=0;i<8;i++){ int temp=led[i][0];  for(int j=0;j<7;j++){    led[i][j]=led[i][j+1];    }    led[i][7]=temp;  }}

推荐信息