Arduino驱动RGB点阵彩屏(Led matrix)--显示数字,字母,汉字,学习经历,供你们参考,少走弯路

Arduino UNO驱动RGB点阵彩屏,在32*64的全彩单板上测试过,彩屏单板为HUB75接口。git

买了几块点阵市面上的LED点阵单板(非8*八、7219点阵屏、ws28十二、oled12864),还有两块主控板,飞度和新翼的卡,不能用,因此试试Arduino。github

材料:函数

1 Arduino UNO R3oop

2某宝买的全彩条屏(32*64):测试

RGB条屏背面接口是HUB75。ui

市面上有HUB75接口和HUB75E接口区别:url

 

 

硬件连线:(全彩RGB单板须要单独供电5V,1A以上,不然颜色显示不正确)spa

Arduino按HUB75接口链接以下图:(Arduino Mega:Mega2560).net

 

Arduino程序中的引脚定义(Arduino UNO的第8脚)以下图:3d

 

程序一:全红、全绿、全蓝、全黑

将程序下载能看到32*32彩屏全红,全绿,全蓝,全黑。

 

#include "Adafruit_GFX.h" // Core graphics library

#include "RGBmatrixPanel.h" // Hardware-specific library

//on the same PORT as the RGB data pins (D2-D7)

#define CLK 8 // MUST be on PORTB!

#define LAT 10

#define OE 9

#define A A0

#define B A1

#define C A2

#define D A3

// Last parameter = 'false' disable double-buffering

RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false);

void setup() {

matrix.begin();

}

void loop() {

// fill the screen with red

//注释matrix.fillRect(0, 0, 列, 行, matrix.Color333(red, Green, blue));

matrix.fillRect(0, 0, 32, 32, matrix.Color333(7, 0, 0));

delay(1000);

 

// fill the screen with green

matrix.fillRect(0, 0, 32, 32, matrix.Color333(0, 7, 0));

delay(1000);

 

// fill the screen with blue

matrix.fillRect(0, 0, 32, 32, matrix.Color333(0, 0, 7));

delay(1000);

 

// fill the screen with black

matrix.fillScreen(matrix.Color333(0, 0, 0));

delay(1000);

}

 


注意:程序用到了两个库文件( RGB Matrix Panel library  Adafruit GFX Library

库文件地址:

https://github.com/adafruit/Adafruit-GFX-Library

https://github.com/adafruit/RGB-matrix-Panel

 

程序二:显示数字和任意xy坐标的任意颜色点

程序以下:

#include "Adafruit_GFX.h" // Core graphics library

#include "RGBmatrixPanel.h" // Hardware-specific library

//on the same PORT as the RGB data pins (D2-D7)

#define CLK 8 // MUST be on PORTB!

#define LAT 10

#define OE 9

#define A A0

#define B A1

#define C A2

#define D A3

// Last parameter = 'false' disable double-buffering

RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false);

void setup() {

matrix.begin();

}

void loop() {

// draw some text!

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(0,0,1));

matrix.print('1');delay(1000);

matrix.setTextColor(matrix.Color333(1,0,0));

matrix.print('2');delay(1000);

matrix.setTextColor(matrix.Color333(0,1,0));

matrix.print('3');delay(1000);

matrix.setTextColor(matrix.Color333(1,1,0));

matrix.print('4');delay(1000);

matrix.setTextColor(matrix.Color333(1,0,1));

matrix.print('5');delay(1000);

 

//第二行显示,显示不下了还会自动换行

matrix.setCursor(1, 9);

matrix.setTextColor(matrix.Color333(0,1,1));

matrix.print('6');delay(1000);

matrix.setTextColor(matrix.Color333(1,1,1));

matrix.print('7');delay(1000);

matrix.setTextColor(matrix.Color333(0,0,1));

matrix.print('8');delay(1000);

matrix.setTextColor(matrix.Color333(0,1,0));

matrix.print('9');delay(1000);

matrix.setTextColor(matrix.Color333(1,0,0));

matrix.print('A');delay(1000);

matrix.setTextColor(matrix.Color333(1,1,0));

matrix.print('B');delay(1000);

 

//任意位置显示任意颜色,31,31的位置显示白色

//Color333(R,G,B)  R/G/B:1-7之间

//draw a pixel in solid white

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

delay(1000);

while(1);

 

}

 

 

显示效果:

 

程序三:显示汉字

方法一: 描点法,利用函数matrix.drawPixel(x, y, matrix.Color333( 0, 7, 0));delay(300);进行描点写汉字;

 

如下程序显示“泪”,整个过程全是泪。。。。还显示了“A”。。。

#include "Adafruit_GFX.h" // Core graphics library
#include "RGBmatrixPanel.h" // Hardware-specific library
//on the same PORT as the RGB data pins (D2-D7)
#define CLK 8 // MUST be on PORTB!
#define LAT 10
#define OE 9
#define A A0
#define B A1
#define C A2
#define D A3

// Last parameter = 'false' disable double-buffering
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false);
void setup() {
matrix.begin();
}
void loop() {
// draw some text!
matrix.setCursor(16, 15); // 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(0,0,1));
matrix.print('A');delay(1000);

//任意位置显示任意颜色,31,31的位置显示白色
//Color333(R,G,B)  R/G/B:1-7之间
//draw a pixel in solid white
matrix.drawPixel(31, 31, matrix.Color333(7, 7, 7));
delay(1000);

//汉字'泪'描点法找出坐标值,进行显示
matrix.drawPixel(2, 2, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(3, 3, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(2, 6, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(3, 7, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(4, 11, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(3, 12, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(3, 7, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(4, 11, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(3, 12, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(2, 13, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 2, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(8, 2, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(9, 2, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(10, 2, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 2, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 3, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 3, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(7, 4, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 4, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 5, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(8, 5, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(9, 5, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(10, 5, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 5, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 6, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 6, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 7, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(8, 7, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(9, 7, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(10, 7, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 7, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 8, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 8, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(7, 9, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 9, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 10, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 10, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(7, 11, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11, 11, matrix.Color333( 0, 7, 0));delay(300);

matrix.drawPixel(7, 12, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(8, 12, matrix.Color333( 0, 7, 0));delay(300);
matrix.drawPixel(9, 12, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(10, 12, matrix.Color333( 0, 7, 0));delay(300);matrix.drawPixel(11,12, matrix.Color333( 0, 7, 0));delay(300);


}

显示效果:

 

方法二:思考能不能利用“Adafruit_GFX.h”来显示。。。 。。。或者其余办法。

暂时不会。。。

 

 

附录和参考网址:

程序和文件地址:https://download.csdn.net/download/veteran412/10938909

参考网址:

1 写得比较详细,用来测试屏幕好坏,红绿蓝颜色全屏测试单板好坏

https://www.baidu.com/link?url=J_1xQR2K9m3tTTcmViOS_IlhQQBRpv1K-yO5Pk2g74U9BdvpzjfBCk2P3XPoKz0jnTOrkNeT_t9_BhQG-FE_5Rr-A4KX4-z6Ll76kbrtcbe&wd=&eqid=c55b9fc500023931000000065c4ad6d4

2两个库文件地址( RGB Matrix Panel library  Adafruit GFX Library):

https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/test-example-code

https://github.com/adafruit/Adafruit-GFX-Library

https://github.com/adafruit/RGB-matrix-Panel