【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百一十七:P10单红V706模组 32*16单元板LED显示屏

在这里插入图片描述
在这里插入图片描述
实验一百一十七:P10单红V706模组 32*16单元板LED显示屏
http://t.csdnimg.cn/HGakZ
http://t.csdnimg.cn/2urpo
http://t.csdnimg.cn/1fFMK
http://t.csdnimg.cn/kGjd2

补充:LedP10库功能:
1、最多可驱动320×16像素(10个面板级联)
2、支持双行显示,即一个面板分为两个面板。
3、支持动态屏幕刷新。可以编程以在面板上显示动态内容。
4、支持不同的滚动速度。
5、静态和滚动文本模式。可以在运行时从一个切换到另一个。
6、现在仅支持基于文本的内容(Linkboy3.5仿真编程已能支持图片显示)
7、256级亮度控制。

在这里插入图片描述

找到的P10V706LED屏模组的电原理图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

P10(1R)V706模组技术参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验接线示意图

在这里插入图片描述
在这里插入图片描述
程序七:滚动显示Hello World 1234567890
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序七:滚动显示Hello World 1234567890
*/

#include <SPI.h>//导入驱动库
#include <DMD.h>
#include <TimerOne.h>
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
#define ROW 1
#define COLUMN 1
#define FONT Arial_Black_16//字体16
DMD led_module(ROW, COLUMN);//行、列

void scan_module() {
  led_module.scanDisplayBySPI();//模块扫描显示 By SPI
}

void setup() {
  Timer1.initialize(2000);
  Timer1.attachInterrupt(scan_module);
  led_module.clearScreen( true );
}

void loop() {
  led_module.selectFont(FONT);//设置字体
  led_module.drawMarquee("Hello World 1234567890", 25, (32 * ROW), 0);
  long start = millis();
  long timming = start;
  boolean flag = false;
  while (!flag)
  {
    if ((timming + 20) < millis())
    {
      flag = led_module.stepMarquee(-1, 0);
      timming = millis();
      delay(50);//通过延时时间来调整字幕滚动快慢
    }
  }
}

(2)实验场景图
在这里插入图片描述
在这里插入图片描述

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

程序八:使用 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[5];

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);
}

(2)实验串口返回情况

在这里插入图片描述
(3)实验场景图
在这里插入图片描述

程序九: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 );
}

(2)实验场景图
在这里插入图片描述
在这里插入图片描述

程序十: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 );
}

(2)实验场景图
在这里插入图片描述
在这里插入图片描述

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

程序十一:使用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"));//定义显示位置与内容
}

(2)实验场景图

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
华为P10Plus手机原厂维修图纸 原理图 电路图 故障维修图(PDF版) 华为P10Plus 位置图 点位图 位号图.pdf 华为P10Plus 原理图 电路图.pdf 华为P10Plus 注释图 故障标注 主板元器件位置图.pdf 华为P10Plus 原厂图 维修流程图 BT故障.pdf 华为P10Plus 原厂图 维修流程图 CDMA发射故障.pdf 华为P10Plus 原厂图 维修流程图 CDMA接收故障.pdf 华为P10Plus 原厂图 维修流程图 FDD LTE主集接收故障1.pdf 华为P10Plus 原厂图 维修流程图 FDD LTE主集接收故障2.pdf 华为P10Plus 原厂图 维修流程图 FDD LTE分集接收故障1.pdf 华为P10Plus 原厂图 维修流程图 FDD LTE分集接收故障2.pdf 华为P10Plus 原厂图 维修流程图 FDD LTE发射故障.pdf 华为P10Plus 原厂图 维修流程图 GPS故障.pdf 华为P10Plus 原厂图 维修流程图 GSM发射故障.pdf 华为P10Plus 原厂图 维修流程图 GSM接收故障.pdf 华为P10Plus 原厂图 维修流程图 HALL故障(皮套模式).pdf 华为P10Plus 原厂图 维修流程图 LCD显示故障.pdf 华为P10Plus 原厂图 维修流程图 NFC故障.pdf 华为P10Plus 原厂图 维修流程图 PMU输出电压测量点与电压值.pdf 华为P10Plus 原厂图 维修流程图 TD SCDMA发射故障.pdf 华为P10Plus 原厂图 维修流程图 TD SCDMA接收故障.pdf 华为P10Plus 原厂图 维修流程图 TDD LTE主集接收故障.pdf 华为P10Plus 原厂图 维修流程图 TDD LTE分集接收故障.pdf 华为P10Plus 原厂图 维修流程图 TDD LTE发射故障.pdf 华为P10Plus 原厂图 维修流程图 VBAT_SYS、VBATT相关器件PCB图.pdf 华为P10Plus 原厂图 维修流程图 WCDMA发射故障.pdf 华为P10Plus 原厂图 维修流程图 WCDMA接收故障.pdf 华为P10Plus 原厂图 维修流程图 WIFI故障.pdf 华为P10Plus 原厂图 维修流程图 不开机(大电流).pdf 华为P10Plus 原厂图 维修流程图 不开机(小电流).pdf 华为P10Plus 原厂图 维修流程图 不开机(无电流).pdf 华为P10Plus 原厂图 维修流程图 不识SD卡.pdf 华为P10Plus 原厂图 维修流程图 不识USB.pdf 华为P10Plus 原厂图 维修流程图 不识主卡.pdf 华为P10Plus 原厂图 维修流程图 不识副卡.pdf 华为P10Plus 原厂图 维修流程图 充电故障.pdf 华为P10Plus 原厂图 维修流程图 前摄像故障.pdf 华为P10Plus 原厂图 维修流程图 受话故障.pdf 华为P10Plus 原厂图 维修流程图 后摄像故障.pdf 华为P10Plus 原厂图 维修流程图 射频发射框架图.pdf 华为P10Plus 原厂图 维修流程图 射频接收框架图.pdf 华为P10Plus 原厂图 维修流程图 开机上电时序图.pdf 华为P10Plus 原厂图 维修流程图 扬声器故障.pdf 华为P10Plus 原厂图 维修流程图 指纹故障.pdf 华为P10Plus 原厂图 维修流程图 接近光故障.pdf 华为P10Plus 原厂图 维修流程图 耳机故障.pdf 华为P10Plus 原厂图 维修流程图 触摸故障.pdf 华为P10Plus 原厂图 维修流程图 送话故障.pdf 华为P10Plus 原厂图 维修流程图 重力感应故障.pdf 华为P10Plus 原厂图 维修流程图 闪光灯故障.pdf 华为P10Plus 原厂图 维修流程图 马达故障.pdf
雕爷学编程Arduino动手做寻迹的实验可以使用TCRT5000红外反射光电开关寻迹传感器模块。这个传感器模块可以通过检测周围的光反射来进行寻迹操作。你可以将这个模块连接到mBot的主控板mCore V1.5的RJ25接口上,因为mBot的主控板兼容Arduino系统,所以你可以使用Arduino编程语言来控制mBot进行寻迹操作。请参考【Arduino】168种传感器模块系列实验中的实验六十六,该实验详细介绍了如何使用TCRT5000红外反射光电开关寻迹传感器模块进行寻迹。祝你成功完成实验!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【雕爷学编程Arduino动手做(194)---makeblock mbot 主控板2](https://blog.csdn.net/weixin_41659040/article/details/132141677)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [【雕爷学编程Arduino动手做(65)---红外寻迹传感器](https://blog.csdn.net/weixin_41659040/article/details/106604080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值