“开源LED点阵屏幕/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
第52行: 第52行:
 
成功的话则可以在点阵屏上显示0到50计数和流动显示mcookie字符,由于点阵分辨率只有8*8,因此20以后的数字屏幕会显示不全。(下一篇教程中会有多个点阵屏幕级联)
 
成功的话则可以在点阵屏上显示0到50计数和流动显示mcookie字符,由于点阵分辨率只有8*8,因此20以后的数字屏幕会显示不全。(下一篇教程中会有多个点阵屏幕级联)
 
[[File: LEDMatrix.jpg|600px|center|thumb]]
 
[[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);
 +
 +
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++) {
 +
    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();
 +
 +
  //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() {
 +
  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);
 +
    delay(20);
 +
  }
 +
  display.clearDisplay();
 +
}
 +
</source>

2016年2月19日 (五) 07:01的版本

Language English


概述

  • 项目名称:Microduino LED点阵屏幕
  • 目的:了解Microduino DcolorMatrix 点阵屏幕的原理
  • 难度:低级
  • 耗时:1小时
  • 制作者:Microduino Studio-YLB

材料清单

  • Microduino设备
模块 数量 功能
Microduino-Core/zh 1 核心板
Microduino-USBTTL/zh 1 下载程序
  • 其他设备
Microduino LEDMatrix 1 显示
USB数据线 1 供电,下载

文档

IIC驱动库: Adafruit-LED-Backpack-Library:https://github.com/adafruit/Adafruit-LED-Backpack-Library

图形库: Adafruit-GFX-Library:https://github.com/adafruit/Adafruit-GFX-Library


注意:如果需要画图,必须把Adafruit-GFX-Library也拷贝到IDE的libraries里

测试程序:文件:01 Microduino DotMatrix.zip

调试

步骤一:将microduino模块叠在一块(Microduino Core + Microduino USBTTL + Microduino-Cube-S1),连接LEDMatrix与Cube-S1的IIC引脚。

步骤二:下载使用到的库,将其解压到IDE的libraries文件夹内。

步骤三:下载示例程序并打开,编译通过后选择好板卡(Microduino Core)直接下载。

成功的话则可以在点阵屏上显示0到50计数和流动显示mcookie字符,由于点阵分辨率只有8*8,因此20以后的数字屏幕会显示不全。(下一篇教程中会有多个点阵屏幕级联)

  • 程序
#include "Microduino_Matrix.h"

uint8_t Addr[MatrixPix_X][MatrixPix_Y] = {
  { 64}
};

Matrix display = Matrix(Addr);

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++) {
    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();

  //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() {
  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);
    delay(20);
  }
  display.clearDisplay();
}