“8*8点阵模块”的版本间的差异
来自YFRobotwiki
(未显示2个用户的20个中间版本) | |||
第1行: | 第1行: | ||
− | [[Image:点阵模块.jpg|400px|thumb|点阵模 | + | [[Image:点阵模块.jpg|400px|thumb|点阵模 块V1]] |
第6行: | 第6行: | ||
=== 产品简介 === | === 产品简介 === | ||
<br> | <br> | ||
− | 8*8点阵模块是 | + | 8*8点阵模块是 采用2片74HC595芯片驱动红色8X8点阵管,只需要使用控制器3路IO口,根据点阵管动态扫描原理进行显示,可以显示多种图案。 |
+ | |||
+ | <font red > | ||
+ | <font color="red">'''更新:新版模块使用PH2.0-5P接口,连接更加方便,使用方法相同。'''</font> | ||
第14行: | 第17行: | ||
*供电电压:DC5V | *供电电压:DC5V | ||
*使用芯片:74HC595 | *使用芯片:74HC595 | ||
− | *模块尺寸 | + | *模块尺寸 :32.5*32.5*14.7MM (长*宽*高) |
− | *模块重量 | + | *模块重量 :10.6g |
第30行: | 第33行: | ||
=== 应用示例 === | === 应用示例 === | ||
<br> | <br> | ||
− | '''电路连接 | + | '''电路连接''' |
<br> | <br> | ||
− | + | ||
+ | {|border="1" cellspacing="0" align="center" cellpadding="5" width="700px" | ||
+ | |- | ||
+ | |align="left"|'''点阵模块''' | ||
+ | |align="left"|'''Arduino UNO''' | ||
+ | |- | ||
+ | |align="left"|VCC | ||
+ | |align="left"|+5V | ||
+ | |- | ||
+ | |align="left"|GND | ||
+ | |align="left"|GND | ||
+ | |- | ||
+ | |align="left"|SER | ||
+ | |align="left"|D10 | ||
+ | |- | ||
+ | |align="left"|RCK | ||
+ | |align="left"|D11 | ||
+ | |- | ||
+ | |align="left"|SRCK | ||
+ | |align="left"|D12 | ||
+ | |||
+ | |} | ||
− | |||
+ | '''电路连接示意图''' | ||
+ | <img src="http://yfrobot.gitee.io/wiki/img/点阵显示.png" alt="点阵显示" /> | ||
+ | |||
+ | |||
+ | 库函数下载:[https://eyun.baidu.com/s/3o7EWj70 TimerOne] | ||
'''示例代码''' | '''示例代码''' | ||
<br><br> | <br><br> | ||
<font color="darkcyan">'''示例一'''</font>:基本显示 | <font color="darkcyan">'''示例一'''</font>:基本显示 | ||
+ | <br><br> | ||
+ | <font color="seagreen">'''Face.ino:'''</font> | ||
+ | <source lang="c"> | ||
+ | /************************************************** | ||
+ | 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(); | ||
+ | } | ||
+ | </source> | ||
+ | <br> | ||
+ | <font color="seagreen">'''face.h:'''</font> | ||
<br> | <br> | ||
− | < | + | <source lang="c"> |
+ | 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 } | ||
+ | }; | ||
+ | </source> | ||
+ | 程序 下载地址 :[https://eyun.baidu.com/s/3qYkanve Face] | ||
+ | 程序运行结果:点阵模块显示笑脸和囧脸~ | ||
+ | [[File:囧脸.png]][[File:笑脸.png]] | ||
+ | <br> | ||
+ | <br> | ||
+ | <font color="seagreen">'''face.h'''</font>文件通过[https://eyun.baidu.com/s/3jIDsGL4 点阵取模软件] 获得: | ||
+ | <br> | ||
+ | <br> | ||
+ | [[File:点阵取模软件演示1.png]][[File:点阵取模软件演示2.png]] | ||
+ | <br> | ||
+ | <!-- | ||
'''示例代码''' | '''示例代码''' | ||
<br><br> | <br><br> | ||
<font color="darkcyan">'''示例二'''</font>:滚屏显示 | <font color="darkcyan">'''示例二'''</font>:滚屏显示 | ||
<br> | <br> | ||
− | + | 程序下载地址:[http://pan.baidu.com/s/1pJMkfIb Face] | |
− | + | 程序运行结果: 点阵模块 | |
− | + | ||
− | + | ||
− | 程序运行结果: | + | |
第68行: | 第218行: | ||
<font color="darkcyan">'''示例三'''</font>:乒乓游戏 | <font color="darkcyan">'''示例三'''</font>:乒乓游戏 | ||
<br> | <br> | ||
− | + | 程序下载地址: | |
+ | --> | ||
+ | |||
− | |||
− | |||
− | + | 点阵模块滚屏显示,请移步 :[http://www.yfrobot.com/thread-11735-1-1.html 点阵模块滚屏显示] | |
+ | 点阵模块配合[http://www.yfrobot.com/wiki/index.php?title=%E6%AC%A7%E5%A7%86%E9%BE%99%E6%8C%89%E9%94%AE%E5%BC%80%E5%85%B3%E6%A8%A1%E5%9D%97 按键模块],做打乒乓游戏!请移步下面网址查看:[http://www.yfrobot.com/thread-2408-1-1.html Arduino驱动8*8点阵模块 附原理图及一个打乒乓球的游戏代码] | ||
+ | 乒乓游戏程序下载地址:[https://eyun.baidu.com/s/3qYE2wWG 乒乓游戏] | ||
===参考资料=== | ===参考资料=== | ||
<br> | <br> | ||
− | * [ | + | * [[ Media:点阵模块 原理 图.jpeg|点阵模块原理图 ]] [https://eyun.baidu.com/s/3gf9uWbL 备用地址] |
− | * [http://pan.baidu.com/s/1pJORDAb | + | * [https://eyun.baidu.com/s/3qYPrIOG 74HC595 datasheet] [http://pan.baidu.com/s/1pJORDAb 备用地址] |
− | * [ | + | * [https://eyun.baidu.com/s/3csAoUE 74HC595 中文数据手册] [http://pan.baidu.com/s/10pE4e 备用地址] |
2020年4月9日 (四) 08:42的最后版本
生成缩略图出错:文件可能丢失:
产品简介
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 电子工作室