Arduino UNO驱动RGB点阵彩屏,在32*64的全彩单板上测试过,彩屏单板为HUB75接口。
买了几块点阵市面上的LED点阵单板(非8*8、7219点阵屏、ws2812、oled12864),还有两块主控板,飞度和新翼的卡,不能用,所以试试Arduino。
材料:
1 Arduino UNO R3
2某宝买的全彩条屏(32*64):
RGB条屏背面接口是HUB75。
市面上有HUB75接口和HUB75E接口区别:
硬件连线:(全彩RGB单板需要单独供电5V,1A以上,否则颜色显示不正确)
Arduino按HUB75接口连接如下图:(Arduino Mega:Mega2560)
Arduino程序中的引脚定义(Arduino UNO的第8脚)如下图:
程序一:全红、全绿、全蓝、全黑
将程序下载能看到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坐标的任意颜色点
程序如下:
显示效果:
程序三:显示汉字
方法一: 描点法,利用函数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 写得比较详细,用来测试屏幕好坏,红绿蓝颜色全屏测试单板好坏
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