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

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

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

在这里插入图片描述

程序十二:滚动字母,在滚动框中一次显示一个字符
(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++;
  }
}

(2)实验串口返回情况
在这里插入图片描述

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

程序十三:写入滚动显示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;
  }
}

(2)实验串口返回情况
在这里插入图片描述

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

程序十四:单个 DMD 上主要绘图操作的快速演示
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十四:单个 DMD 上主要绘图操作的快速演示
*/

#include <SPI.h>//导入驱动库
#include <DMD2.h>
#include <fonts/SystemFont5x7.h>
SoftDMD dmd(1, 1); // DMD 控制整个显示

// 设置例程在您按下重置时运行一次:
void setup() {
  dmd.setBrightness(255);//设置亮度(0-255)
  dmd.selectFont(SystemFont5x7);//设置字体
  dmd.begin();//初始化

  // 用一条与之相切的线画圆
  dmd.drawCircle(24, 8, 5);
  dmd.drawLine(14, 9, 28, 15);

  // 包含填充框的轮廓框
  dmd.drawBox(6, 10, 11, 15);
  dmd.drawFilledBox(8, 12, 9, 13);
}

int n = 123;

//循环例程永远一遍又一遍地运行:
void loop() {
  dmd.drawString(0, 0, String(n));
  n = n + 1;
  delay(1000);

  if (n % 2 == 0) {
    dmd.drawFilledBox(0, 11, 4, 15, GRAPHICS_OFF);
    dmd.drawBox(0, 11, 4, 15);
  } else {
    dmd.drawFilledBox(0, 11, 4, 15);
  }

(2)实验场景图

在这里插入图片描述

程序十五:各个方向滚动闪烁显示的“Hello World!”
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十五:各个方向滚动闪烁显示的“Hello World!”
*/

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

//对于“Hello World”作为您的消息,
//即使您只连接了一个显示器,也将宽度保留为 4
#define DISPLAYS_WIDE 3
#define DISPLAYS_HIGH 1

SoftDMD dmd(DISPLAYS_WIDE, DISPLAYS_HIGH);
DMD_TextBox box(dmd, 0, 0, 32, 16);

// 设置例程在您按下重置时运行一次:
void setup() {
  dmd.setBrightness(255);
  dmd.selectFont(Arial14);
  dmd.begin();
  /* 提示:如果你想要一个比你的显示器更长的字符串,只需将显示的 DISPLAYS_WIDE 值定义为比
    您实际拥有的显示器数量。
  */
  dmd.drawString(0, 0, F("Hello World!"));
}

int phase = 0; // 0-3, 'phase' 值决定方向

//循环例程永远一遍又一遍地运行:
void loop() {
  int steps = random(48); // 每次我们滚动一个随机距离
  for (int i = 0; i < steps; i++) {
    // 根据我们所处的阶段进行不同类型的滚动
    switch (phase) {
      case 0:
        dmd.marqueeScrollX(1); break;
      case 1:
        dmd.marqueeScrollX(-1); break;
      case 2:
        dmd.marqueeScrollY(1); break;
      case 3:
        dmd.marqueeScrollY(-1); break;
    }
    delay(10);
  }

  //进入下一阶段
  phase = (phase + 1) % 4;
}

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

程序十六:模拟康威的人生游戏
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十六:模拟康威的人生游戏
  (https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)
*/

#include <SPI.h>//导入驱动库
#include <DMD2.h>

// 你有多少个显示器?
const int WIDTH = 2;
const int HEIGHT = 1;

SoftDMD dmd(WIDTH, HEIGHT);

void populate_random_cells() {
  // 随机填充初始显示
  for (int x = 0; x < dmd.width; x++) {
    for (int y = 0; y < dmd.height; y++) {
      // 将 30 增加到更大的数字以设置更多的初始像素
      if (random(100) < 30)
        dmd.setPixel(x, y, GRAPHICS_ON);
    }
  }
}

// 设置例程在您按下重置时运行一次:
void setup() {
  Serial.begin(9600);
  dmd.setBrightness(255);//设置显示亮度
  dmd.begin();//初始化

  randomSeed(analogRead(0));//随机种子(模拟读取0)
  populate_random_cells();
}

//循环例程永远一遍又一遍地运行:
void loop() {
  // 通过复制当前 DMD 帧内容来存储当前代
  DMDFrame current_generation(dmd);

  long start = millis();

  // 更新每个像素的下一代
  bool change = false;
  for (int x = 0; x < dmd.width; x++) {
    for (int y = 0; y < dmd.height; y++) {
      bool state = current_generation.getPixel(x, y);
      int live_neighbours = 0;

      // 计算当前一代有多少活着的邻居
      for (int nx = x - 1; nx < x + 2; nx++) {
        for (int ny = y - 1; ny < y + 2; ny++) {
          if (nx == x && ny == y)
            continue;
          if (current_generation.getPixel(nx, ny))
            live_neighbours++;
        }
      }

      // 更新下一代的像素数
      if (state && (live_neighbours < 2 || live_neighbours > 3)) {
        state = false;
        change = true;
      }
      else if (!state && (live_neighbours == 3)) {
        state = true;
        change = true;
      }
      dmd.setPixel(x, y, state ? GRAPHICS_ON : GRAPHICS_OFF);
    }
  }

  Serial.println(String("Generation time: ") + (millis() - start) + " ms");

  if (!change) {
    // 我们已经使它进入了一个不变的状态
    delay(500);
    populate_random_cells();
    //(我们无法检测到事物向前变化的稳定状态
    // 然后返回,对于这些你需要按下重置!)
  }
}

(2)实验场景图

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要实现8×8 LED点阵仿电梯数字滚动显示,我们可以采取以下步骤: 首先,准备一个8×8的LED点阵和相应的控制器。通过控制器,我们即可控制点阵上的每个LED灯。 接下来,需要使用电路连接控制器和点阵。确保正确连接并供电。根据控制器的规格,按照对应引脚的接法完成连接。 然后,编写程序控制点阵上的LED灯。可以使用C语言或其他适合的编程语言。首先,需要定义一个数字滚动的变量,例如"number",用来表示电梯楼层数字。 在程序中,使用循环结构来实现数字的滚动效果。可以通过改变数字的值并依次将数字对应的LED灯点亮或熄灭来实现滚动效果。 然后,在程序中使用条件判断语句来确定应该显示哪些LED灯。根据电梯楼层数字的变化,灯的亮暗状态将相应改变。通过控制LED灯的亮灭,可以显示出对应的数字。 最后,将程序上传到控制器。确保程序能够正确地接收输入并控制点阵上的LED灯。 通过以上步骤,就可以实现一个仿电梯数字滚动显示效果的8×8 LED点阵。可以根据实际需求对程序进行修改和优化,以获得更加逼真的电梯数字滚动效果。 ### 回答2: 8×8LED点阵仿电梯数字滚动显示是一种常见的数字显示方式,可以在电梯的控制面板或者信息显示上看到。具体的实现方法如下: 1.准备材料和硬件设备:首先需要准备一个8×8的LED点阵,可以购买或者自制。另外,还需要一个单片机(如Arduino)、导线、面包板以及所需的电源线等。 2.连接电路:使用导线将LED点阵单片机连接,将每个LED的阳极和阴极连接到对应的单片机IO口。可以参照LED点阵的引脚说明来连接。同时,将单片机与电源线连接,并将单片机与计算机连接以进行编程。 3.编写程序:使用编程语言(如C语言)编写程序,实现数字滚动显示的代码逻辑。首先需要定义每个数字的显示方式,并定义显示的滚动效果。可以使用一个数组来存储每个数字的显示状态,然后在循环中不断改变数组的值来实现滚动效果。 4.上传程序:将编写好的程序通过编程软件(如Arduino IDE)上传到单片机中,确保程序成功烧录。此时,单片机将能够控制LED点阵来显示数字。 5.测试显示:连接电源,打开电梯的控制面板或信息显示,观察LED点阵上是否能够显示滚动的数字。如果成功显示,即可确认仿电梯数字滚动显示已经实现。 总结来说,通过连接LED点阵单片机,并编写合适的程序,可以实现8×8LED点阵仿电梯数字滚动显示。这种显示方式在电梯控制系统等场景中具有广泛的应用。 ### 回答3: 8×8的LED点阵是一种常见的数字显示设备,通过其64个LED灯组成的点阵,可以展示各种数字、字母和符号。仿电梯数字滚动显示即模拟电梯内部的显示,可以实现从下往上滚动的数字效果。 要实现这个功能,首先需要将要显示的数字进行分解,将每一位数字转换成对应的LED点阵图案。例如数字"12345"转换成点阵图案后,可以表示为一个5×7的矩阵。然后,通过控制LED点阵的点亮和熄灭,逐列逐行地显示这个图案,就能够实现滚动显示的效果。 具体步骤如下: 1. 将要显示的数字分解成每一位数字,转换成对应的点阵图案。 2. 初始化LED点阵,设置显示的起始位置和滚动速度。 3. 循环执行以下步骤,直到滚动完所有位的数字: a. 获取当前位的点阵图案。 b. 逐列逐行地显示该位数字的点阵图案,通过控制LED点阵的点亮和熄灭。 c. 暂停一段时间,用以控制滚动速度。 d. 清除当前位的显示。 通过上述步骤,就能够实现8×8LED点阵仿电梯数字滚动显示的效果。为了提高显示效果,可以添加其他动画效果,如渐隐渐现、匀速或变速滚动等。此外,还可以根据具体需求,进行功能扩展,例如显示其他特殊符号、支持多位数显示等。最后,为了保证稳定性和可靠性,需要进行测试和优化,确保显示效果的准确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

驴友花雕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值