驴友花雕 发表于 2022-5-25 13:07:12

(2)实验场景图

驴友花雕 发表于 2022-5-25 13:16:38


驴友花雕 发表于 2022-5-25 13:19:12

(3)实验的视频记录 https://v.youku.com/v_show/id_XNTg3MjI2MjE0MA==.html
https://v.youku.com/v_show/id_XNTg3MjI2MjE0MA==.html

驴友花雕 发表于 2022-5-27 12:57:52

程序八:使用 Arduino 在 P10 LED 显示模块上显示光照度(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序八:使用 Arduino 在 P10 LED 显示模块上显示光照度
*/

/* 插入文件库 */
#include   <SPI.h>
#include   <DMD.h>
#include   <TimerOne.h>
#include   <SystemFont5x7.h>
#define Panjang 1             // 显示 P10 的长度数
#define Lebar 1               //显示 P10 的宽度数
#define sensor A0             // 定义光敏传感器引脚 A0
DMD dmd(Panjang, Lebar);      // 长 x 宽
float suhu;                   //定义变量
char chr;

void ScanDMD() {
dmd.scanDisplayBySPI();
}

void setup(void) {
// 设置 DMDDMD
Timer1.initialize( 5000 );
Timer1.attachInterrupt( ScanDMD );
dmd.selectFont(SystemFont5x7);    // 使用的字体
dmd.clearScreen( true );
Serial.begin(9600);               // 激活通讯串口功能
}

void loop(void) {
dmd.clearScreen( true );
suhu = 0;
suhu = analogRead(sensor);
suhu = (5.0 * suhu * 100.0) / 1024.0;
Serial.println(suhu);
dtostrf(suhu, 4, 2, chr);
dmd.drawString( 2, 0, chr, 5, GRAPHICS_NORMAL );
dmd.drawString( 7, 9, "'OK", 4, GRAPHICS_NORMAL );
delay(1000);
}

驴友花雕 发表于 2022-5-27 13:00:30

(2)实验串口返回情况

驴友花雕 发表于 2022-5-27 13:01:59

(3)实验场景图

驴友花雕 发表于 2022-5-29 18:05:13

程序九:Freetronics DMD 的时钟读出项目(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序九:Freetronics DMD 的时钟读出项目
*/

//SPI.h 必须包含,因为 DMD 是由 SPI 写入的(否则 IDE 会抱怨)
#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include "Arial_black_16.h"

//以 dmd 的身份启动 DMD 库
DMD dmd(1, 1);

/*-------------------------------------------------------------------
Timer1 (TimerOne) 驱动的 DMD 刷新扫描的中断处理程序,这得到
在 Timer1.initialize() 中设置的周期调用;
-------------------------------------------------------------------*/
void ScanDMD() {
dmd.scanDisplayBySPI();
}

/*-------------------------------------------------------------------
从 4 位时间值在屏幕上显示时钟数字,并选择是否
闪烁的冒号打开或关闭
-------------------------------------------------------------------*/
void ShowClockNumbers( unsigned int uiTime, byte bColonOn ) {
dmd.clearScreen(true);
dmd.drawChar(1,3, '0' + ((uiTime % 10000) / 1000), GRAPHICS_NORMAL ); // 数千
dmd.drawChar(8,3, '0' + ((uiTime % 1000) / 100),GRAPHICS_NORMAL ); // 数百
dmd.drawChar( 17,3, '0' + ((uiTime % 100)/ 10),   GRAPHICS_NORMAL ); //十位
dmd.drawChar( 25,3, '0' + (uiTime % 10),          GRAPHICS_NORMAL ); // 个位
if ( bColonOn )
    dmd.drawChar( 15,3, ':', GRAPHICS_OR   );   //时钟冒号覆盖
else
    dmd.drawChar( 15,3, ':', GRAPHICS_NOR    );   //时钟冒号覆盖
}

/*-------------------------------------------------------------------
设置
在主循环开始之前由 Arduino 架构调用
-------------------------------------------------------------------*/
void setup(void) {
//初始化TimerOne用于扫描和刷新显示的中断/CPU使用率
Timer1.initialize( 5000 );         //调用 ScanDMD 的周期(以微秒为单位)。任何超过 5000 (5ms) 的时间都可以看到闪烁。
Timer1.attachInterrupt( ScanDMD );   //将 Timer1 中断附加到 ScanDMD 到 dmd.scanDisplayBySPI()

//清除/初始化内存中的DMD像素
dmd.clearScreen( true );   //true 为正常(所有像素关闭),false 为负(所有像素打开)
dmd.selectFont(Arial_Black_16);
}

/*-------------------------------------------------------------------
环形
Arduino架构主循环
--------------------------------------------------------------------*/
void loop(void) {
unsigned int ui;

// 10 x 14 字体时钟,包括像素的 OR 和 NOR 模式演示,以便可以覆盖闪烁的冒号
ui = 1234;
ShowClockNumbers( ui, true );
delay( 1000 );
ShowClockNumbers( ui, false );
delay( 1000 );
ShowClockNumbers( ui, true );
delay( 1000 );
ShowClockNumbers( ui, false );
delay( 1000 );

ui = 2245;
ShowClockNumbers( ui, true );
delay( 1000 );
ShowClockNumbers( ui, false );
delay( 1000 );
ShowClockNumbers( ui, true );
delay( 1000 );
ShowClockNumbers( ui, false );
delay( 1000 );
}

驴友花雕 发表于 2022-5-29 18:07:46

(2)实验场景图


驴友花雕 发表于 2022-5-31 20:57:11

程序十:Freetronics DMD库的综合测试(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序十:Freetronics DMD库的综合测试
*/

#include <SPI.h>   //导入相关驱动库
#include <DMD.h>
#include <TimerOne.h>
#include "SystemFont5x7.h"
#include "Arial_black_16.h"

//以 dmd 的身份启动 DMD 库
#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);

/*-------------------------------------------------------------------
Timer1 (TimerOne) 驱动的 DMD 刷新扫描的中断处理程序,这得到
在 Timer1.initialize() 中设置的周期调用;
-------------------------------------------------------------------*/
void ScanDMD() {
dmd.scanDisplayBySPI();
}

/*-------------------------------------------------------------------
设置
在主循环开始之前由 Arduino 架构调用
-------------------------------------------------------------------*/
void setup(void) {
//初始化TimerOne用于扫描和刷新显示的中断/CPU使用率
Timer1.initialize( 5000 );         //调用 ScanDMD 的周期(以微秒为单位)。任何超过 5000 (5ms) 的时间都可以看到闪烁。
Timer1.attachInterrupt( ScanDMD );   //将 Timer1 中断附加到 ScanDMD 到 dmd.scanDisplayBySPI()
//清除/初始化内存中的DMD像素
dmd.clearScreen( true );   //true 为正常(所有像素关闭),false 为负(所有像素打开)
}

/*-------------------------------------------------------------------
环形
Arduino架构主循环
-------------------------------------------------------------------*/
void loop(void) {
byte b;
// 10 x 14 字体时钟,包括OR 和 NOR 模式演示,以便可以覆盖闪烁的冒号
dmd.clearScreen( true );
dmd.selectFont(Arial_Black_16);
dmd.drawChar(0,3, '2', GRAPHICS_NORMAL );
dmd.drawChar(7,3, '3', GRAPHICS_NORMAL );
dmd.drawChar( 17,3, '4', GRAPHICS_NORMAL );
dmd.drawChar( 25,3, '5', GRAPHICS_NORMAL );
dmd.drawChar( 15,3, ':', GRAPHICS_OR   );   //时钟冒号覆盖
delay( 1000 );
dmd.drawChar( 15,3, ':', GRAPHICS_NOR    );   //时钟冒号覆盖关闭
delay( 1000 );
dmd.drawChar( 15,3, ':', GRAPHICS_OR   );   //时钟冒号覆盖
delay( 1000 );
dmd.drawChar( 15,3, ':', GRAPHICS_NOR    );   //时钟冒号覆盖关闭
delay( 1000 );
dmd.drawChar( 15,3, ':', GRAPHICS_OR   );   //时钟冒号覆盖
delay( 1000 );

//滚动文本
dmd.drawMarquee("Scrolling Text", 14, (32 * DISPLAYS_ACROSS) - 1, 0);
long start = millis();
long timer = start;
boolean ret = false;
while (!ret) {
    if ((timer + 30) < millis()) {
      ret = dmd.stepMarquee(-1, 0);
      timer = millis();
    }
}
// 一半像素
dmd.drawTestPattern( PATTERN_ALT_0 );
delay( 1000 );

// 另一半打开
dmd.drawTestPattern( PATTERN_ALT_1 );
delay( 1000 );

// 显示一些文本
dmd.clearScreen( true );
dmd.selectFont(System5x7);
for (byte x = 0; x < DISPLAYS_ACROSS; x++) {
    for (byte y = 0; y < DISPLAYS_DOWN; y++) {
      dmd.drawString(2 + (32 * x),1 + (16 * y), "freet", 5, GRAPHICS_NORMAL );
      dmd.drawString(2 + (32 * x),9 + (16 * y), "ronic", 5, GRAPHICS_NORMAL );
    }
}
delay( 2000 );

// 在显示器外面画一个边框
dmd.clearScreen( true );
dmd.drawBox(0,0, (32 * DISPLAYS_ACROSS) - 1, (16 * DISPLAYS_DOWN) - 1, GRAPHICS_NORMAL );
delay( 1000 );

for (byte y = 0; y < DISPLAYS_DOWN; y++) {
    for (byte x = 0; x < DISPLAYS_ACROSS; x++) {
      // draw an X
      int ix = 32 * x;
      int iy = 16 * y;
      dmd.drawLine(0 + ix,0 + iy, 11 + ix, 15 + iy, GRAPHICS_NORMAL );
      dmd.drawLine(0 + ix, 15 + iy, 11 + ix,0 + iy, GRAPHICS_NORMAL );
      delay( 1000 );

      //画一个圆
      dmd.drawCircle( 16 + ix,8 + iy,5, GRAPHICS_NORMAL );
      delay( 1000 );

      // 绘制一个填充框
      dmd.drawFilledBox( 24 + ix, 3 + iy, 29 + ix, 13 + iy, GRAPHICS_NORMAL );
      delay( 1000 );
    }
}

// 条纹追逐者
for ( b = 0 ; b < 20 ; b++ )
{
    dmd.drawTestPattern( (b & 1) + PATTERN_STRIPE_0 );
    delay( 200 );
}
delay( 200 );
}

驴友花雕 发表于 2022-5-31 20:58:52

(2)实验场景图

驴友花雕 发表于 2022-5-31 21:00:12


驴友花雕 发表于 2022-5-31 21:06:37

(3)实验的视频记录 https://v.youku.com/v_show/id_XNTg3MTM3MTYxNg==.html?spm=a2hcb.playlsit.page.1

https://v.youku.com/v_show/id_XNTg3MTM3MTYxNg==.html?spm=a2hcb.playlsit.page.1

驴友花雕 发表于 2022-6-2 07:39:24

程序十一:使用DMD2库的最简显示Hello(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序十一:使用DMD2库的最简显示Hello
*/

#include <SPI.h>//导入相关驱动库
#include <DMD2.h>
#include <fonts/Arial14.h>

const int WIDTH = 1;
const uint8_t *FONT = Arial14;
SoftDMD dmd(WIDTH, 1);//一块单元板
DMD_TextBox box(dmd);

void setup() {
dmd.setBrightness(150);//设置亮度
dmd.selectFont(FONT);//设置字体
dmd.begin();//LED屏初始化
}

void loop() {
dmd.drawString(3, 2, String("Hello"));//定义显示位置与内容
}

驴友花雕 发表于 2022-6-2 07:41:27

(2)实验场景图

驴友花雕 发表于 2022-6-4 09:04:20

程序十二:滚动字母,在滚动框中一次显示一个字符(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序十二:滚动字母,在滚动框中一次显示一个字符
*/

#include <SPI.h>
#include <DMD2.h>
#include <fonts/SystemFont5x7.h>
#include <fonts/Arial14.h>

// 将宽度设置为您拥有的显示器宽度
const int WIDTH = 1;

// 您可以通过注释此行来更改为较小的字体(两行),
// 并取消注释它后面的行:
const uint8_t *FONT = Arial14;
//const uint8_t *FONT = SystemFont5x7;

const char *MESSAGE = "abcdefghijklmnopqrstuvwxyz";

SoftDMD dmd(WIDTH, 1); // DMD 控制整个显示
DMD_TextBox box(dmd);// "box" 提供一个文本框来自动写入/滚动显示

void setup() {
Serial.begin(9600);//初始化串口
dmd.setBrightness(150);//设置亮度(0-255)
dmd.selectFont(FONT);//设置字体
dmd.begin();//初始化
}

void loop() {
const char *next = MESSAGE;//循环显示
while (*next) {
    Serial.print(*next);
    box.print(*next);
    delay(200);
    next++;
}
}

驴友花雕 发表于 2022-6-4 09:48:58

(2)实验串口返回情况

驴友花雕 发表于 2022-6-4 09:50:58

(3)实验场景图

驴友花雕 发表于 2022-6-4 09:52:26


驴友花雕 发表于 2022-6-4 09:54:26

程序十三:写入滚动显示12秒倒计时(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序十三:写入滚动显示12秒倒计时
*/

#include <SPI.h>//导入相关驱动库
#include <DMD2.h>
#include <fonts/Arial14.h>

const int COUNTDOWN_FROM = 12;
int counter = COUNTDOWN_FROM;//计数器

SoftDMD dmd(1,1);// DMD 控制整个显示
// "box" 提供一个文本框来自动写入/滚动显示
DMD_TextBox box(dmd, 0, 2);

// 设置例程在您按下重置时运行一次:
void setup() {
Serial.begin(9600);
dmd.setBrightness(255);
dmd.selectFont(Arial14);
dmd.begin();
}

//循环例程永远一遍又一遍地运行:
void loop() {
Serial.print(counter);
Serial.println(F("..."));
box.print(' ');
box.print(counter);
box.println(F("..."));
counter--;
delay(1000);//延时1000毫秒

if(counter == 0) {
    for(int i = 0; i < 3; i++) {
      dmd.fillScreen(true);
      delay(500);
      dmd.clearScreen();
      delay(500);
    }
    box.clear();
    counter = 12;
}
}

驴友花雕 发表于 2022-6-4 09:55:54

(2)实验串口返回情况

驴友花雕 发表于 2022-6-4 09:57:32

(3)实验场景图

页: 1 2 [3] 4
查看完整版本: 【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组