8*8點陣模塊
從 YFRobotwiki
產品簡介
8*8點陣模塊是採用2片74HC595芯片驅動紅色8X8點陣管,只需要使用控制器3路IO口,根據點陣管動態掃描原理進行顯示,可以顯示多種圖案。
更新:新版模塊使用PH2.0-5P接口,連接更加方便,使用方法相同。
規格參數
- 供電電壓:DC5V
- 使用芯片:74HC595
- 模塊尺寸:32.5*32.5*14.7MM(長*寬*高)
- 模塊重量:10.6g
引腳說明
- 1. VCC -- Vcc(電源+5V)
- 2. GND -- Gnd(地)
- 3. SER -- 串行移位輸入
- 4. RCK -- 存儲寄存器的時序輸入
- 5. SRCK -- 移位寄存器的時序輸入
應用示例
電路連接示意圖
| 點陣模塊 | Arduino UNO |
| VCC | +5V |
| GND | GND |
| SER | D10 |
| RCK | D11 |
| SRCK | D12 |
庫函數下載:TimerOne
示例代碼
示例一:基本顯示
Face.ino:
/**************************************************
Face
( 8x8 Led Dot Matrix with two 74HC595 on Arduino)
by YFROBOT
***************************************************/
#include "TimerOne.h"
#include "face.h"
// 默认显示
#define ROW_DATA ((row[0]<<7)|(row[1]<<6)|(row[2]<<5)|(row[3]<<4)|(row[4]<<3)|(row[5]<<2)|(row[6]<<1)|(row[7]<<0))
#define COL_DATA ((col[0]<<7)|(col[1]<<6)|(col[2]<<5)|(col[3]<<4)|(col[4]<<3)|(col[5]<<2)|(col[6]<<1)|(col[7]<<0))
// 垂直翻转
//#define ROW_DATA ((row[0]<<0)|(row[1]<<1)|(row[2]<<2)|(row[3]<<3)|(row[4]<<4)|(row[5]<<5)|(row[6]<<6)|(row[7]<<7))
//#define COL_DATA ((col[0]<<0)|(col[1]<<1)|(col[2]<<2)|(col[3]<<3)|(col[4]<<4)|(col[5]<<5)|(col[6]<<6)|(col[7]<<7))
// flip horizontal
#define flip_horizontal 7-screenCol // 默认显示
//#define flip_horizontal screenCol // 水平翻转
//Pin connected to DS of 74HC595
int SER = 10;
//Pin connected to ST_CP of 74HC595
int RCK = 11;
//Pin connected to SH_CP of 74HC595
int SRCK = 12;
int row[8] = {
0, 0, 0, 0, 0, 0, 0, 0
};
int col[8] = {
0, 0, 0, 0, 0, 0, 0, 0
};
byte screen[8] = {
0, 0, 0, 0, 0, 0, 0, 0
};
volatile byte screenRow = 0;
volatile byte screenCol = 0;
// A counter to know what frame we're showing
int animationIndex = 0;
// 8x8 Point temporary array
byte brightnesses[64];
void setup() {
// Timer1.initialize(100);
pinMode(RCK, OUTPUT);
pinMode(SRCK, OUTPUT);
pinMode(SER, OUTPUT);
// Timer1.attachInterrupt(doubleBuffer);
Serial.begin(9600);
}
void doubleBuffer() {
int k = 8;
while (k--) {
row[screenRow] = 0;
col[screenCol] = 1;
screenCol++;
if (screenCol >= 8) {
screenCol = 0;
screenRow++;
if (screenRow >= 8) {
screenRow = 0;
}
}
if ((screen[screenRow] >> flip_horizontal) & B1 == B1) {
row[screenRow] = 1;
col[screenCol] = 0;
digitalWrite(RCK, LOW);
shiftOut(SER, SRCK, MSBFIRST, COL_DATA); //先选择列
shiftOut(SER, SRCK, MSBFIRST, ROW_DATA); //再送行数据
digitalWrite(RCK, HIGH);
}
}
}
void UpdataDate() {
if (animationIndex < animationFrames) {
for (int i = 0; i < 64; i++) {
int Dot = (animation[animationIndex][i / 4] >> (i % 4 * 2));
brightnesses[i] = (Dot & B1) || (Dot & B10);
screen[7 - i / 8] |= (brightnesses[i] << (i % 8)) ;
}
}
unsigned long startime = millis();
while (millis() - startime < animationDelays[animationIndex])
{
doubleBuffer();
}
animationIndex ++;
if (animationIndex >= animationFrames) {
//restart animation index
animationIndex = 0;
}
for (int i = 0; i < 8; i++)
screen[i] = B0;
}
void loop() {
UpdataDate();
}
face.h:
int animationFrames = 2;
int animationDelays[] = { 1000, 1000 };
// Animation is designed for 8x8 pixels
uint8_t animation[][16] = {
{ 0x55, 0x55, 0x11, 0x44, 0x5, 0x50, 0x1, 0x40, 0x51, 0x45, 0x11, 0x44, 0x11, 0x44, 0x55, 0x55 },
{ 0x5, 0x50, 0x5, 0x50, 0x0, 0x0, 0x40, 0x1, 0x40, 0x1, 0x0, 0x0, 0x4, 0x10, 0x50, 0x5 }
};
程序下載地址:Face
程序運行結果:點陣模塊顯示笑臉和囧臉~

face.h文件通過點陣取模軟件 獲得:

點陣模塊滾屏顯示,請移步:點陣模塊滾屏顯示
點陣模塊配合按鍵模塊,做打乒乓遊戲!請移步下面網址查看:Arduino驅動8*8點陣模塊 附原理圖及一個打乒乓球的遊戲代碼
乒乓遊戲程序下載地址:乒乓遊戲
參考資料
更多建議和問題歡迎反饋至 YFRobot論壇
購買方式:YFRobot 電子工作室