arduino/mixly 全彩点阵显示屏

一、材料的购买

全彩点阵显示屏我一共找到了三种

第一种是我正在使用的这一种

16*32的,价格129,是dfrobot的,价格比较贵,但是有对应的资料

第二种也是淘宝找到的,有配套资料,价格比dfrobot的便宜一半左右

 

 32*64的,也只要一百三。

第三种不知道接口定义是不是和上面二种一样的,价格很便宜,但是没有买过,不确定能不能使用

同样是32*64的,价格只要45,差不多是第二种的三分之一。

二、 库文件

现在我以第一种dfrobot的为例,所需要的库文件有以下二个

库文件一 RGB-matrix-Panel-master.zip-网络攻防文档类资源-CSDN下载

库文件二 123445555全彩显示库.rar-网络攻防文档类资源-CSDN下载

另外附上dfrobot的官方教程连接32*16 RGB LED Matrix_DFR0471_产品说明_使用教程

三、运用

接线图

 显示取模的图片

首先用取模工具取出自己需要的数据,取模格式如下

在这里我用mixly中的取模工具取模,这里的宽度和高度要和待会显示图片函数中的一致

 取模出来的数据

static const unsigned char PROGMEM bitmap[64] = {0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x04,0x00,0x21,0x08,0x09,0x00,0x21,0x08,0x11,0x00,0x21,0x08,0x21,0x00,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x21,0x08,0x09,0x20,0x21,0x08,0x11,0x10,0x21,0x08,0x21,0x08,0x21,0x08,0x41,0x04,0x3F,0xF8,0x05,0x00,0x00,0x08,0x02,0x00,0x00,0x00};

 完整程序

   #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
    static const unsigned char PROGMEM bitmap[64] = {0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x04,0x00,0x21,0x08,0x09,0x00,0x21,0x08,0x11,0x00,0x21,0x08,0x21,0x00,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x21,0x08,0x09,0x20,0x21,0x08,0x11,0x10,0x21,0x08,0x21,0x08,0x21,0x08,0x41,0x04,0x3F,0xF8,0x05,0x00,0x00,0x08,0x02,0x00,0x00,0x00};

    void setup() {
      matrix.begin();
    }

    void loop() {
       matrix.drawBitmap(0,0, bitmap,32,16,matrix.Color333(0,0,7));
    }

重点是这一句

matrix.drawBitmap(0,0, bitmap,32,16,matrix.Color333(0,0,7));

  void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w,
                  int16_t h, uint16_t color);

这一个画图函数中有六个参数,从左到右分别是,起点的X坐标,起点的Y坐标,图像函数,图像的宽、图像的高,图像的颜色

在这里,图像的宽和高要和取模的时候设置的一样

颜色的设置就是调用matrix.Color333(0,0,7)这个函数

 /*!
    @brief   Promote 3-bits R,G,B (used by earlier versions of this library)
             to the '565' color format used in Adafruit_GFX. New code should
             not use this, it's provided for backward compatibility.
    @param   r  Red value, 0-7.
    @param   g  Green value, 0-7.
    @param   b  Blue value, 0-7.
    @return  16-bit '565' color as used by Adafruit_GFX, can then be passed
             to drawing functions. Actual colors issued to matrix will be
             decimated from this, since it uses fewer bitplanes.
  */
  uint16_t Color333(uint8_t r, uint8_t g, uint8_t b);

matrix.Color333(r,g,b)这个函数有三个参数,范围是0到7,从左到右分别对应R值,G值,B值

最后是显示的效果

 显示英文和数字

完整代码

#include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
      matrix.setCursor(1, 0);   // start at top left, with one pixel of spacing
      matrix.setTextSize(1);    // size 1 == 8 pixels high

      // print each letter with a rainbow color
      matrix.setTextColor(matrix.Color333(7,0,0));
      matrix.print('1');
    }

主要有四行

   matrix.setCursor(1, 0);   // start at top left, with one pixel of spacing

这一行是设置显示的起点

  /**********************************************************************/
  /*!
    @brief  Set text cursor location
    @param  x    X coordinate in pixels
    @param  y    Y coordinate in pixels
  */
  /**********************************************************************/
  void setCursor(int16_t x, int16_t y) {
    cursor_x = x;
    cursor_y = y;
  }

参数有二个,第一个是起点的X左边,第二个是起点的Y左边,

matrix.setCursor(1, 0);的效果

 matrix.setCursor(5, 0);的效果

可以看出,X参数控制着显示的左右,那么对应的Y控制的就是上下了

 接下来是第二行

matrix.setTextSize(1);    // size 1 == 8 pixels high

这一行是控制着显示字符的大小

显示大小为1的效果

显示大小为2的效果

 显示大小为3的时候就超过了16*32的大小了

第三行是显示颜色

matrix.setTextColor(matrix.Color333(7,0,0))

这一行就不多说了

第四行是要显示的内容

 matrix.print('1');

当显示字符串的时候可以用双引号

 matrix.print("123");

效果

 画点

完整程序

#include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
       matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7));
    }

主要是这一句

matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7));

参数分别是画点的X坐标,Y坐标,颜色

效果

 画矩形

完整代码

 #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
       matrix.fillRect(0, 0, 4, 4, matrix.Color333(0, 7, 0));
    }
matrix.fillRect(0, 0, 4, 4, matrix.Color333(0, 7, 0));

参数从左到右分别是左上角的X坐标,左上角的Y坐标,右下角的X坐标,右下角的Y坐标,以及颜色

效果

画空心矩形

完整代码

 #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
      matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 7, 0));
    }
matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 7, 0));

这个函数有5个参数,从左到右分别是起点的X坐标,起点的Y坐标,空心矩形的宽度,空心矩形的高度,颜色

matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 7, 0));的效果

 matrix.drawRect(0, 0, 4, 4, matrix.Color333(7, 7, 0));的效果

画线 

完整程序

#include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.drawLine(0, 0, 9, 9, matrix.Color333(7, 0, 0));
    }
matrix.drawLine(0, 0, 9, 9, matrix.Color333(7, 0, 0));

这个函数有五个参数,分别是起点的X坐标,起点的Y坐标,终点的X坐标,终点的Y坐标,颜色

matrix.drawLine(0, 0, 9, 9, matrix.Color333(7, 0, 0));的效果

 要注意的是如果你设置的起点和终点如果不能刚好均分,均分是指的3*3,9*9这样有一条中间的线,那么效果就会是这样

比如:matrix.drawLine(0, 0, 31, 15, matrix.Color333(7, 0, 0));效果:

画圆

完整代码

    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.drawCircle(7, 7, 7, matrix.Color333(0, 0, 7));
    }
matrix.drawCircle(7, 7, 7, matrix.Color333(0, 0, 7));

这个函数有四个参数,从左到右分别是,圆心的X坐标,圆心的Y坐标,半径,颜色

matrix.drawCircle(7, 7, 7, matrix.Color333(0, 0, 7));的效果

 画实心圆

完整代码

    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
      matrix.fillCircle(7, 7, 7, matrix.Color333(7, 0, 7));
    }
 matrix.fillCircle(7, 7, 7, matrix.Color333(7, 0, 7));

这个函数有四个参数,从左到右分别是,圆心的X坐标,圆心的Y坐标,圆的半径,颜色

 matrix.fillCircle(7, 7, 7, matrix.Color333(7, 0, 7));的效果

 清屏

完整代码


    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.fillScreen(matrix.Color333(7, 0, 7));
    }
   matrix.fillScreen(matrix.Color333(7, 0, 7));

这个函数只有一个参数,那就是清屏的颜色

   matrix.fillScreen(matrix.Color333(7, 0, 7));的效果

画竖线

完整代码

    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.drawFastVLine(1,1,4,matrix.Color333(3, 0, 0));
    }
  matrix.drawFastVLine(1,1,4,matrix.Color333(3, 0, 0));

这个函数有四个参数,从左到右分别是,起点的X坐标,起点的Y坐标,竖线的长度,颜色

  matrix.drawFastVLine(1,1,4,matrix.Color333(3, 0, 0));的效果

画横线 

完整代码

    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.drawFastHLine(1,1,4,matrix.Color333(3, 0, 0));
    }
 matrix.drawFastHLine(1,1,4,matrix.Color333(3, 0, 0));

这个函数和画竖线的函数一样,都是四个参数,从左到右分别是,起点的X坐标,起点的Y坐标,竖线的长度,竖线的颜色

 matrix.drawFastHLine(1,1,4,matrix.Color333(3, 0, 0));的效果

画三角形 

完整代码

    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.drawTriangle(0,0,0,4,4,4,matrix.Color333(3, 0, 0));
    }
     matrix.drawTriangle(0,0,0,4,4,4,matrix.Color333(3, 0, 0));

这个函数有7个参数,从左到右分别是第一个点的X坐标,第一个点的Y坐标,第二个点的X坐标,第二个点的Y坐标,第三个点的X坐标,第三个点的Y坐标,颜色

     matrix.drawTriangle(0,0,0,4,4,4,matrix.Color333(3, 0, 0));的效果

 画实心三角形

完整代码

    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.fillTriangle(0,0,0,4,4,4,matrix.Color333(3, 0, 0));
    }
    matrix.fillTriangle(0,0,0,4,4,4,matrix.Color333(3, 0, 0));

这个函数和画空心三角形一样,7个参数,从左到右分别是第一个点的X坐标,第一个点的Y坐标,第二个点的X坐标,第二个点的Y坐标,第三个点的X坐标,第三个点的Y坐标,颜色

    matrix.fillTriangle(0,0,0,4,4,4,matrix.Color333(3, 0, 0));的效果

画十字 

完整代码

    #include <Adafruit_GFX.h>   // Core graphics library
    #include <RGBmatrixPanel.h> // Hardware-specific library

    #define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
    #define LAT A3
    #define OE  9
    #define A   A0
    #define B   A1
    #define C   A2
    RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
  
    void setup() {
      matrix.begin();
    }

    void loop() {
     matrix.drawRoundRect(7,7,1,1,2,matrix.Color333(3, 0, 0));
    }
 matrix.drawRoundRect(7,7,1,1,2,matrix.Color333(3, 0, 0));

这个函数有六个参数,从左到右分别是画十字的中心X左右,十字中心Y坐标,竖线的宽度,横线的宽度,十字四周加点的数量

 matrix.drawRoundRect(7,7,1,1,2,matrix.Color333(3, 0, 0));的效果

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
LED点阵显示屏(完整源程序版) 目 录 引言 ……………………………………………………………………1 1 系统的设计与分析 ………………………………………………2 1.1 LED点阵控制原理………………………………………………………………3 1.1.1 LED简介 ……………………………………………………………………3 1.1.2 LED点阵 ……………………………………………………………………4 1.1.3 显示原理 ……………………………………………………………………5 1.1.4显示屏的原理图及结构 ……………………………………………………6 1.2 单片机小系统 …………………………………………………………………8 1.2.1 51系列单片机的概述 ………………………………………………………8 1.2.2单片机的组成 ………………………………………………………………8 2 程序设计 ………………………………………………………10 2.1 系统程序的框架………………………………………………………………10 2.1.1 串口通讯协议………………………………………………………………10 2.1.2 显示处理效果函数…………………………………………………………10 2.1.3 显示函数……………………………………………………………………10 2.2 程序流程图……………………………………………………………………9 3 总结 ………………………………………………………………11 谢辞 …………………………………………………………………13 参考文献 ……………………………………………………………14 附录(所有的源程序)………………………………………………15
### 回答1: Arduino 8x8 LED 点阵屏可以通过编程实现各种图案、文字、数字等的显示。可以使用Arduino的库函数来控制点阵屏的亮灭,也可以自己编写代码实现更加复杂的效果。需要注意的是,点阵屏的控制需要使用多个引脚,因此需要在编程时进行引脚的定义和设置。 ### 回答2: Arduino是一款开源通用单板计算机,可以很容易地进行编程和控制各种外部设备。其中,8x8 LED点阵屏是一种常见的显示器件,它由64个LED灯组成的矩阵,可以用来显示各种图案、字符和符号。下面,我将介绍如何使用Arduino控制8x8 LED点阵屏进行显示。 首先,需要准备的硬件组件包括Arduino Uno板、8x8 LED点阵屏、8个220欧姆电阻、杜邦线和一个面包板。连接方式如下: - 将8x8 LED点阵屏的VCC引脚连接至Arduino的5V引脚,GND引脚连接至GND引脚; - 将8x8 LED点阵屏的CS引脚连接至Arduino的10号引脚,DIN引脚连接至11号引脚,CLK引脚连接至13号引脚; - 将8个220欧姆电阻分别连接至8x8 LED点阵屏的行引脚,再将每个电阻的一端连接至面包板的一行,另一端连接至Arduino的2~9号引脚。 接下来,需要安装LedControl库并在Arduino IDE中导入示例代码。LedControl库是一款专为Arduino设计的库,可以方便地控制LED点阵屏,示例代码包括显示字符、滚动字符、显示图案等。 在代码中,可以设置要显示的字符或图案,控制显示的亮度、速度等参数。例如,使用LedControl库中的showChar函数可以实现显示字符。代码如下: LedControl lc=LedControl(11, 13, 10, 1); //创建LedControl实例 lc.shutdown(0,false); //开启第一个LED点阵屏的控制 lc.setIntensity(0,8); //设置亮度 lc.clearDisplay(0); //清除显示屏 lc.showChar(0, 0, 'A'); //在第一个LED点阵屏的第1行,第1列上显示字符A 可以通过调用该函数多次来依次显示不同的字符或图案。在代码中,还可以通过循环控制实现字符或图案的滚动显示。例如,使用LedControl库中的scrollText函数可以实现滚动显示字符。代码如下: lc.scrollText("Hello World",100); //滚动显示字符Hello World,滚动速度为100毫秒/像素 另外,也可以使用LedControl库中的setRow函数、setColumn函数等来控制单个LED灯的亮灭状态,进一步实现自定义的显示效果。 综上所述,通过使用ArduinoLedControl库,可以很方便地控制8x8 LED点阵屏的显示效果,实现各种创意的应用。 ### 回答3: ARDUINO是一款热门的开发板,其集成了各种传感器和模块,能够实现各种创意。其中,点阵屏是一种非常实用的组件,它可以用来显示各种文字、图案和动画。 具体实现ARUDINO 8x8 LED点阵显示可以参考以下步骤: 第一步:准备材料 我们需要准备的材料包括: 1. ARDUINO UNO开发板 2. 8x8 LED点阵模块 3. 杜邦线(公对公、公对母) 4. 面包板 第二步:连接电路 将事先在面包板上连接好的8x8 LED点阵模块用杜邦线分别连接到开发板的数字管脚上。具体连接方式可以参考电路图进行连接。 第三步:下载并安装库文件 在arduino官网下载Max72xxPanel库,在arduino IDE上添加库。 第四步:编写代码 打开arduino IDE,新建工程,复制库文件中的Max72xxPanel代码,按需修改实现自己所需的功能(例如文字、图案或者动画)。 第五步:上传代码 点击上传按钮,将代码上传到开发板中。当代码上传完成后,点阵屏即可显示出预期的结果。 总之,通过以上几个步骤,我们可以简单地实现ARDUINO 8x8 LED点阵显示的功能。当然,在实际应用中,还可以拓展其他功能,例如添加传感器进行数据采集和显示,实现更为丰富的创意。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值