查看“开源LED点阵屏幕/zh”的源代码
←
开源LED点阵屏幕/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{Language|Microduino Matrix screen}} {| style="width: 800px;" |- | ==概述== *项目名称:Microduino LED点阵屏幕 *目的:了解Microduino DcolorMatrix 点阵屏幕的原理 *难度:低级 *耗时:1小时 *制作者:Microduino Studio ==材料清单== *Microduino设备 {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||1||核心板 |- |[[Microduino-USBTTL/zh]]||1||下载程序 |- |[[Microduino-Module Dot Matrix/zh]]||1||显示 |- |[[Microduino-Cube-S1/zh]]||1||扩展 |- |} *其他设备 {|class="wikitable" |- |USB数据线||1||供电,下载 |- |} ==文档== 下载Microduino官方最新IDE *测试程序 Microduino_DotMatrix:https://github.com/wasdpkj/Library_for_Microduino/tree/master/_01_Microduino_DotMatrix ==调试== 步骤一:将microduino模块叠在一块(Microduino Core + Microduino USBTTL + Microduino-Cube-S1),LEDMatrix与Cube-S1连接。 步骤二:下载使用到的库,将其解压到IDE的libraries文件夹内。 步骤三:下载示例程序并打开,编译通过后选择好板卡(Microduino Core)直接下载。 成功的话则可以依次在点阵屏上显示实心矩形,实心四边形,空心矩形,空心四边形,空心圆,实心圆,直线和流动显示mcookie字符以及0-49计数,由于点阵分辨率只有8*8,因此20以后的数字屏幕会显示不全。(下一篇教程中会有多个点阵屏幕级联) [[File: LEDMatrix.jpg|600px|center|thumb]] *程序 <source lang="cpp"> #include "Microduino_Matrix.h" uint8_t Addr[MatrixPix_X][MatrixPix_Y] = { { 64} }; Matrix display = Matrix(Addr); static const unsigned char PROGMEM logo[] = { //高位在前 逐行 0x00, 0x66, 0x66, 0xDB, 0xDB, 0xDB, 0xDB, 0x00 }; void setup() { Serial.begin(115200); // See the connection status in Serial Monitor Wire.begin(); //getDeviceAddr for (int a = 0; a < display.getMatrixNum(); a++) { Serial.print(display.getDeviceAddr(a)); Serial.print(" "); } Serial.println(""); //setLedColor for (int y = 0; y < display.getHeight() * 8; y++) { //8*8点阵 for (int x = 0; x < display.getWidth() * 8; x++) { randomSeed(analogRead(A0)); display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)); //x, y, r, g, b delay(5); } } delay(1000); display.clearDisplay(); display.setColor(0, 255, 0); display.drawBMP(0, 0, 8, 8, logo); //画点阵位图x,y,w,h,data delay(2000); display.clearDisplay(); //clearColor display.clearColor(); //writeString H display.writeString("Microduino", MODE_H, 20, 0); //string, MODE, time ,y display.clearDisplay(); //writeString V display.writeString("Microduino", MODE_V, 20, 0); //string, MODE, time ,x display.clearDisplay(); } int i; void loop() { display.setColor(255, 255, 0); display.drawBox(0, 0, 8, 8); delay(2000); display.clearDisplay(); display.drawRBox(0, 0, 8, 8, 2); delay(2000); display.clearDisplay(); display.drawFrame(0, 0, 8, 8); delay(2000); display.clearDisplay(); display.drawRFrame(0, 0, 8, 8, 2); delay(2000); display.clearDisplay(); display.drawCircle(3, 3, 3); delay(2000); display.clearDisplay(); display.drawDisc(3, 3, 3); delay(2000); display.clearDisplay(); display.drawLine(0, 0, 7, 7); delay(2000); display.clearDisplay(); i = display.getStringWidth("mCookie!"); display.setColor(255, 255, 0); display.setFontMode(MODE_H); for (int a = display.getWidth() * 8; a > -i - display.getWidth() * 8; a--) { display.setCursor(a, 0); //x, y display.print("mCookie!"); delay(20); } display.clearDisplay(); i = display.getStringHeight("mCookie!"); display.setColor(255, 0, 255); display.setFontMode(MODE_V); for (int a = display.getHeight() * 8; a > -i - display.getHeight() * 8; a--) { display.setCursor(0, a); //x, y display.print("mCookie!"); delay(20); } display.clearDisplay(); unsigned long timer = millis(); display.setColor(0, 255, 255); display.setFontMode(MODE_H); while (millis() - timer < 5000) { display.setCursor(0, 0); //x, y坐标 display.print((millis() - timer) / 100); //从0到49计数 delay(20); } display.clearDisplay(); } </source> 库函数分析: *uint8_t Addr[MatrixPix_X][MatrixPix_Y] = { 64 }: 已知DcolorMatrix模块设置的IIC地址为64 *display.getDeviceAddr(a): 获得设备IIC地址 *display.getHeight(),display.getWidth(): 单个LED的高度,宽度 *display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)): 随机设置每个LED的颜色 * display.clearDisplay(): 清理屏幕显示 * display.setColor(X,Y,Z)设置全屏颜色: X:红色 Y:绿色 Z:蓝色 *display.writeString("string", MODE, time ,z): string:任意字符串, MODE:MODE_H横向显示字符/MODE_V竖向显示字符, time:显示时间 ,z:X/Y坐标 *display.drawBox(X,Y,I,W)函数用来画实心矩形: X:水平位坐标,Y:纵向坐标,I:长,W:宽 *:display.drawRBox(X, Y, I,W)函数用来画实心顶角弯曲矩形: X:水平位坐标,Y:纵向坐标,I:长,W:宽 *display.drawFrame(X,Y,I,W)函数用来画空心矩形: X:水平位坐标,Y:纵向坐标,I:长,W:宽 *display.drawRFrame(X,Y,I,W,)函数用来画空心顶角弯曲矩形: X:水平位坐标,Y:纵向坐标,I:长,W:宽 *display.drawCircle(X,Y,D)函数用来画空心圆: X:水平位坐标,Y:纵向坐标,D:直径 *display.drawDisc(X,Y,D)函数用来画实心圆: X:水平位坐标,Y:纵向坐标,D:直径 *display.drawLine(X,Y,M,N)用来画直线: X:起点水平位坐标,Y:起点纵向坐标,M:终点水平位坐标,N:终点纵向坐标 需要注意的是要设置DcolorMatrix模块iic地址,先要清楚模块的iic地址表示方式。先按着模块背面的按键,再接上电源,待屏幕变白色后应立即放开手,屏幕有多少个白格子代表iic地址就是多少,比如图中的iic地址就是60。 [[File: anjian.jpg|500px|left]] [[File: gezi.png|500px|top]] 如果屏幕亮的时候时候所有格子都是白色也不可认为此模块的iic地址就是64,可能会溢出,需要手动调。慢按背面按键是加一,快按背面按键是减一,按住不放即可设置成功。(例如想从60设置成64,即慢速按按键加到64时不松手长按等屏幕关闭即可) ==注意问题== *IIC地址更换 |}
返回至
开源LED点阵屏幕/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息