arduino驱动1588LED8x8点阵实验

2025-10-19 13:07:25

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

arduino驱动1588LED8x8点阵实验

arduino驱动1588LED8x8点阵实验

2、先点亮第一个灯。按 上图,uno板子引脚3接led点阵9,(3-->9)。uno板子11引脚接led点阵13(11-->13),把3引脚设置高电平,11引脚设置低电平。则第一个led就亮了。请按图接线

////////////////////////////////

int pin3=3; //接led 9引脚

int pin11=11;//接led 13引脚

void setup() {

  // put your setup code here, to run once:

pinMode(pin3,OUTPUT);

pinMode(pin11,OUTPUT);

digitalWrite(pin3,HIGH);

digitalWrite(pin11,HIGH);

}

void loop() {

  // put your main code here, to run repeatedly:

digitalWrite(pin11,LOW);//11引脚低电平,led亮

delay(200);

digitalWrite(pin11,HIGH);//11引脚高电平,led两端都是高电平,无电流。就灭了。

delay(200);

}

//引程序实现第一个led闪烁。

arduino驱动1588LED8x8点阵实验

arduino驱动1588LED8x8点阵实验

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);

  }

  //////////////////////////////////////////////////////////////

}

arduino驱动1588LED8x8点阵实验

arduino驱动1588LED8x8点阵实验

arduino驱动1588LED8x8点阵实验

1、上面已经实现了一个箭头显示。那么如何让箭头东起来呢?

实际上原来是一样的。只要把我们的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;

  }

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢