11086浏览
楼主: 驴友花雕

[项目] 【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2022-5-25 13:07:12

2)实验场景图

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-25 13:16:38

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-25 13:19:12

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-27 12:57:52

程序八:使用 Arduino 在 P10 LED 显示模块上显示光照度
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序八:使用 Arduino 在 P10 LED 显示模块上显示光照度
  4. */
  5. /* 插入文件库 */
  6. #include   <SPI.h>
  7. #include   <DMD.h>
  8. #include   <TimerOne.h>
  9. #include   <SystemFont5x7.h>
  10. #define Panjang 1             // 显示 P10 的长度数
  11. #define Lebar 1               //显示 P10 的宽度数
  12. #define sensor A0             // 定义光敏传感器引脚 A0
  13. DMD dmd(Panjang, Lebar);      // 长 x 宽
  14. float suhu;                   //定义变量
  15. char chr[5];
  16. void ScanDMD() {
  17.   dmd.scanDisplayBySPI();
  18. }
  19. void setup(void) {
  20.   // 设置 DMDDMD
  21.   Timer1.initialize( 5000 );
  22.   Timer1.attachInterrupt( ScanDMD );
  23.   dmd.selectFont(SystemFont5x7);    // 使用的字体
  24.   dmd.clearScreen( true );
  25.   Serial.begin(9600);               // 激活通讯串口功能
  26. }
  27. void loop(void) {
  28.   dmd.clearScreen( true );
  29.   suhu = 0;
  30.   suhu = analogRead(sensor);
  31.   suhu = (5.0 * suhu * 100.0) / 1024.0;
  32.   Serial.println(suhu);
  33.   dtostrf(suhu, 4, 2, chr);
  34.   dmd.drawString( 2, 0, chr, 5, GRAPHICS_NORMAL );
  35.   dmd.drawString( 7, 9, "'OK", 4, GRAPHICS_NORMAL );
  36.   delay(1000);
  37. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-27 13:00:30

2)实验串口返回情况

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-27 13:01:59

3)实验场景图

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-29 18:05:13

程序九:Freetronics DMD 的时钟读出项目
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序九:Freetronics DMD 的时钟读出项目
  4. */
  5. //SPI.h 必须包含,因为 DMD 是由 SPI 写入的(否则 IDE 会抱怨)
  6. #include <SPI.h>
  7. #include <DMD.h>
  8. #include <TimerOne.h>
  9. #include "Arial_black_16.h"
  10. //以 dmd 的身份启动 DMD 库
  11. DMD dmd(1, 1);
  12. /*-------------------------------------------------------------------
  13.   Timer1 (TimerOne) 驱动的 DMD 刷新扫描的中断处理程序,这得到
  14.   在 Timer1.initialize() 中设置的周期调用;
  15.   -------------------------------------------------------------------*/
  16. void ScanDMD() {
  17.   dmd.scanDisplayBySPI();
  18. }
  19. /*-------------------------------------------------------------------
  20.   从 4 位时间值在屏幕上显示时钟数字,并选择是否
  21.   闪烁的冒号打开或关闭
  22.   -------------------------------------------------------------------*/
  23. void ShowClockNumbers( unsigned int uiTime, byte bColonOn ) {
  24.   dmd.clearScreen(true);
  25.   dmd.drawChar(  1,  3, '0' + ((uiTime % 10000) / 1000), GRAPHICS_NORMAL ); // 数千
  26.   dmd.drawChar(  8,  3, '0' + ((uiTime % 1000) / 100),  GRAPHICS_NORMAL ); // 数百
  27.   dmd.drawChar( 17,  3, '0' + ((uiTime % 100)  / 10),   GRAPHICS_NORMAL ); //十位
  28.   dmd.drawChar( 25,  3, '0' + (uiTime % 10),          GRAPHICS_NORMAL ); // 个位
  29.   if ( bColonOn )
  30.     dmd.drawChar( 15,  3, ':', GRAPHICS_OR     );   //时钟冒号覆盖
  31.   else
  32.     dmd.drawChar( 15,  3, ':', GRAPHICS_NOR    );   //时钟冒号覆盖
  33. }
  34. /*-------------------------------------------------------------------
  35.   设置
  36.   在主循环开始之前由 Arduino 架构调用
  37.   -------------------------------------------------------------------*/
  38. void setup(void) {
  39.   //初始化TimerOne用于扫描和刷新显示的中断/CPU使用率
  40.   Timer1.initialize( 5000 );           //调用 ScanDMD 的周期(以微秒为单位)。任何超过 5000 (5ms) 的时间都可以看到闪烁。
  41.   Timer1.attachInterrupt( ScanDMD );   //将 Timer1 中断附加到 ScanDMD 到 dmd.scanDisplayBySPI()
  42.   //清除/初始化内存中的DMD像素
  43.   dmd.clearScreen( true );   //true 为正常(所有像素关闭),false 为负(所有像素打开)
  44.   dmd.selectFont(Arial_Black_16);
  45. }
  46. /*-------------------------------------------------------------------
  47.   环形
  48.   Arduino架构主循环
  49.   --------------------------------------------------------------------*/
  50. void loop(void) {
  51.   unsigned int ui;
  52.   // 10 x 14 字体时钟,包括像素的 OR 和 NOR 模式演示,以便可以覆盖闪烁的冒号
  53.   ui = 1234;
  54.   ShowClockNumbers( ui, true );
  55.   delay( 1000 );
  56.   ShowClockNumbers( ui, false );
  57.   delay( 1000 );
  58.   ShowClockNumbers( ui, true );
  59.   delay( 1000 );
  60.   ShowClockNumbers( ui, false );
  61.   delay( 1000 );
  62.   ui = 2245;
  63.   ShowClockNumbers( ui, true );
  64.   delay( 1000 );
  65.   ShowClockNumbers( ui, false );
  66.   delay( 1000 );
  67.   ShowClockNumbers( ui, true );
  68.   delay( 1000 );
  69.   ShowClockNumbers( ui, false );
  70.   delay( 1000 );
  71. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-29 18:07:46

2)实验场景图

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图2

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-31 20:57:11

程序十:Freetronics DMD库的综合测试
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序十:Freetronics DMD库的综合测试
  4. */
  5. #include <SPI.h>   //导入相关驱动库
  6. #include <DMD.h>
  7. #include <TimerOne.h>
  8. #include "SystemFont5x7.h"
  9. #include "Arial_black_16.h"
  10. //以 dmd 的身份启动 DMD 库
  11. #define DISPLAYS_ACROSS 1
  12. #define DISPLAYS_DOWN 1
  13. DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
  14. /*-------------------------------------------------------------------
  15.   Timer1 (TimerOne) 驱动的 DMD 刷新扫描的中断处理程序,这得到
  16.   在 Timer1.initialize() 中设置的周期调用;
  17. -------------------------------------------------------------------*/
  18. void ScanDMD() {
  19.   dmd.scanDisplayBySPI();
  20. }
  21. /*-------------------------------------------------------------------
  22.   设置
  23.   在主循环开始之前由 Arduino 架构调用
  24. -------------------------------------------------------------------*/
  25. void setup(void) {
  26.   //初始化TimerOne用于扫描和刷新显示的中断/CPU使用率
  27.   Timer1.initialize( 5000 );           //调用 ScanDMD 的周期(以微秒为单位)。任何超过 5000 (5ms) 的时间都可以看到闪烁。
  28.   Timer1.attachInterrupt( ScanDMD );   //将 Timer1 中断附加到 ScanDMD 到 dmd.scanDisplayBySPI()
  29.   //清除/初始化内存中的DMD像素
  30.   dmd.clearScreen( true );   //true 为正常(所有像素关闭),false 为负(所有像素打开)
  31. }
  32. /*-------------------------------------------------------------------
  33.   环形
  34.   Arduino架构主循环
  35. -------------------------------------------------------------------*/
  36. void loop(void) {
  37.   byte b;
  38.   // 10 x 14 字体时钟,包括OR 和 NOR 模式演示,以便可以覆盖闪烁的冒号
  39.   dmd.clearScreen( true );
  40.   dmd.selectFont(Arial_Black_16);
  41.   dmd.drawChar(  0,  3, '2', GRAPHICS_NORMAL );
  42.   dmd.drawChar(  7,  3, '3', GRAPHICS_NORMAL );
  43.   dmd.drawChar( 17,  3, '4', GRAPHICS_NORMAL );
  44.   dmd.drawChar( 25,  3, '5', GRAPHICS_NORMAL );
  45.   dmd.drawChar( 15,  3, ':', GRAPHICS_OR     );   //时钟冒号覆盖
  46.   delay( 1000 );
  47.   dmd.drawChar( 15,  3, ':', GRAPHICS_NOR    );   //时钟冒号覆盖关闭
  48.   delay( 1000 );
  49.   dmd.drawChar( 15,  3, ':', GRAPHICS_OR     );   //时钟冒号覆盖
  50.   delay( 1000 );
  51.   dmd.drawChar( 15,  3, ':', GRAPHICS_NOR    );   //时钟冒号覆盖关闭
  52.   delay( 1000 );
  53.   dmd.drawChar( 15,  3, ':', GRAPHICS_OR     );   //时钟冒号覆盖
  54.   delay( 1000 );
  55.   //滚动文本
  56.   dmd.drawMarquee("Scrolling Text", 14, (32 * DISPLAYS_ACROSS) - 1, 0);
  57.   long start = millis();
  58.   long timer = start;
  59.   boolean ret = false;
  60.   while (!ret) {
  61.     if ((timer + 30) < millis()) {
  62.       ret = dmd.stepMarquee(-1, 0);
  63.       timer = millis();
  64.     }
  65.   }
  66.   // 一半像素
  67.   dmd.drawTestPattern( PATTERN_ALT_0 );
  68.   delay( 1000 );
  69.   // 另一半打开
  70.   dmd.drawTestPattern( PATTERN_ALT_1 );
  71.   delay( 1000 );
  72.   // 显示一些文本
  73.   dmd.clearScreen( true );
  74.   dmd.selectFont(System5x7);
  75.   for (byte x = 0; x < DISPLAYS_ACROSS; x++) {
  76.     for (byte y = 0; y < DISPLAYS_DOWN; y++) {
  77.       dmd.drawString(  2 + (32 * x),  1 + (16 * y), "freet", 5, GRAPHICS_NORMAL );
  78.       dmd.drawString(  2 + (32 * x),  9 + (16 * y), "ronic", 5, GRAPHICS_NORMAL );
  79.     }
  80.   }
  81.   delay( 2000 );
  82.   // 在显示器外面画一个边框
  83.   dmd.clearScreen( true );
  84.   dmd.drawBox(  0,  0, (32 * DISPLAYS_ACROSS) - 1, (16 * DISPLAYS_DOWN) - 1, GRAPHICS_NORMAL );
  85.   delay( 1000 );
  86.   for (byte y = 0; y < DISPLAYS_DOWN; y++) {
  87.     for (byte x = 0; x < DISPLAYS_ACROSS; x++) {
  88.       // draw an X
  89.       int ix = 32 * x;
  90.       int iy = 16 * y;
  91.       dmd.drawLine(  0 + ix,  0 + iy, 11 + ix, 15 + iy, GRAPHICS_NORMAL );
  92.       dmd.drawLine(  0 + ix, 15 + iy, 11 + ix,  0 + iy, GRAPHICS_NORMAL );
  93.       delay( 1000 );
  94.       //画一个圆
  95.       dmd.drawCircle( 16 + ix,  8 + iy,  5, GRAPHICS_NORMAL );
  96.       delay( 1000 );
  97.       // 绘制一个填充框
  98.       dmd.drawFilledBox( 24 + ix, 3 + iy, 29 + ix, 13 + iy, GRAPHICS_NORMAL );
  99.       delay( 1000 );
  100.     }
  101.   }
  102.   // 条纹追逐者
  103.   for ( b = 0 ; b < 20 ; b++ )
  104.   {
  105.     dmd.drawTestPattern( (b & 1) + PATTERN_STRIPE_0 );
  106.     delay( 200 );
  107.   }
  108.   delay( 200 );
  109. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-31 20:58:52

2)实验场景图

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-31 21:00:12

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-31 21:06:37

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-2 07:39:24

程序十一:使用DMD2库的最简显示Hello
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序十一:使用DMD2库的最简显示Hello
  4. */
  5. #include <SPI.h>//导入相关驱动库
  6. #include <DMD2.h>
  7. #include <fonts/Arial14.h>
  8. const int WIDTH = 1;
  9. const uint8_t *FONT = Arial14;
  10. SoftDMD dmd(WIDTH, 1);//一块单元板
  11. DMD_TextBox box(dmd);
  12. void setup() {
  13.   dmd.setBrightness(150);//设置亮度
  14.   dmd.selectFont(FONT);//设置字体
  15.   dmd.begin();//LED屏初始化
  16. }
  17. void loop() {
  18.   dmd.drawString(3, 2, String("Hello"));//定义显示位置与内容
  19. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-2 07:41:27

2)实验场景图

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-4 09:04:20

程序十二:滚动字母,在滚动框中一次显示一个字符
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序十二:滚动字母,在滚动框中一次显示一个字符
  4. */
  5. #include <SPI.h>
  6. #include <DMD2.h>
  7. #include <fonts/SystemFont5x7.h>
  8. #include <fonts/Arial14.h>
  9. // 将宽度设置为您拥有的显示器宽度
  10. const int WIDTH = 1;
  11. // 您可以通过注释此行来更改为较小的字体(两行),
  12. // 并取消注释它后面的行:
  13. const uint8_t *FONT = Arial14;
  14. //const uint8_t *FONT = SystemFont5x7;
  15. const char *MESSAGE = "abcdefghijklmnopqrstuvwxyz";
  16. SoftDMD dmd(WIDTH, 1); // DMD 控制整个显示
  17. DMD_TextBox box(dmd);  // "box" 提供一个文本框来自动写入/滚动显示
  18. void setup() {
  19.   Serial.begin(9600);//初始化串口
  20.   dmd.setBrightness(150);//设置亮度(0-255)
  21.   dmd.selectFont(FONT);//设置字体
  22.   dmd.begin();//初始化
  23. }
  24. void loop() {
  25.   const char *next = MESSAGE;//循环显示
  26.   while (*next) {
  27.     Serial.print(*next);
  28.     box.print(*next);
  29.     delay(200);
  30.     next++;
  31.   }
  32. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-4 09:48:58

2)实验串口返回情况

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-4 09:50:58

3)实验场景图

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-4 09:52:26

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-4 09:54:26

程序十三:写入滚动显示12秒倒计时
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序十三:写入滚动显示12秒倒计时
  4. */
  5. #include <SPI.h>//导入相关驱动库
  6. #include <DMD2.h>
  7. #include <fonts/Arial14.h>
  8. const int COUNTDOWN_FROM = 12;
  9. int counter = COUNTDOWN_FROM;//计数器
  10. SoftDMD dmd(1,1);  // DMD 控制整个显示
  11. // "box" 提供一个文本框来自动写入/滚动显示
  12. DMD_TextBox box(dmd, 0, 2);  
  13. // 设置例程在您按下重置时运行一次:
  14. void setup() {
  15.   Serial.begin(9600);
  16.   dmd.setBrightness(255);
  17.   dmd.selectFont(Arial14);
  18.   dmd.begin();
  19. }
  20. //循环例程永远一遍又一遍地运行:
  21. void loop() {
  22.   Serial.print(counter);
  23.   Serial.println(F("..."));
  24.   box.print(' ');
  25.   box.print(counter);
  26.   box.println(F("..."));
  27.   counter--;
  28.   delay(1000);//延时1000毫秒
  29.   
  30.   if(counter == 0) {
  31.     for(int i = 0; i < 3; i++) {
  32.       dmd.fillScreen(true);
  33.       delay(500);
  34.       dmd.clearScreen();
  35.       delay(500);
  36.     }
  37.     box.clear();
  38.     counter = 12;
  39.   }
  40. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-4 09:55:54

2)实验串口返回情况

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-6-4 09:57:32

3)实验场景图

【Arduino】168种传感器模块系列实验(123)---P10V706LED屏模组图1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail