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

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

时间:2023-07-12 13:35:56浏览次数:43  
标签:动手做 dmd Arduino int void 编程 --- include

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)实验场景图

 

标签:动手做,dmd,Arduino,int,void,编程,---,include
From: https://www.cnblogs.com/eagler8/p/17547250.html

相关文章

  • PolarDB-PG TPC-C 测试
    在本节中,我们将学习如何对PolarDB-PG进行TPCC测试,本次实践将基于单机本地存储来运行。TPC-C测试TPC-C是一种衡量OLTP性能的基准测试。TPC-C混合了五种不同类型和复杂程度的并发交易,这五种并发交易又包括了在线执行以及排队延迟执行。TPC-C数据库由九种类型的表组成,以......
  • upload-labs靶场1-19关详解
    upload-labs靶场下载地址https://gitcode.net/mirrors/tj1ngwe1/upload-labs?utm_source=csdn_github_accelerator需要新建一个upload文件夹,该靶场在php5.2.17版本下(除特殊说明的情况下)。Pass-01(前端验证绕过)先上传一个php文件看一下回显然后上传一个正常文件,发现回显正......
  • 【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组2
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 2023.7.2-假期周进度报告
    本周(7.2-7.8)主要是完成数据库综合训练小学期我的选题是学生管理系统7.2号之前,我进行了数据库的设计,完成连接数据库,注册,登录页面及其功能也实现了7.2我完成了功能函数的设计,完成了分为角色的主页面,具体是用id判断status,实现身份的判别,通过身份的判别来跳转到到不同的页面7.3我今天......
  • JAVA SE基础《六》---- 方法
    目录一、方法定义、调用1、方法完整的定义形式、调用 2、方法的其他定义形式、调用二、方法使用的常见问题三、方法案例1、定义方法的技巧、计算1-n的和返回2、判断整数是奇数还是偶数3、数组求最值案例改方法实现四、方法调用的内存图五、方法参......
  • Java--next()方法和nextLine()方法的区别
    Java--next()方法和nextLine()方法的区别首先我们来看一下代码:importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);​System.out.println("请输入:");......
  • 使用you-get下载视频网站的各种视频
    第一步安装python,因为you-get是用python写的,需要python的环境支持。1.1到https://www.python.org/downloads/下载,直接点那个DownloadPythonx.x.x下载最新版即可,像这样:作者:达叔傻乐链接:https://www.jianshu.com/p/1ad94c347e92来源:简书著作权归作者所有。商业转载请联系作......
  • Redis 数据结构 - 链表
    链表-List的底层实现链表提供了高效的节点重排能力,可以通过顺序访问的方式访问节点,并且支持增加删除节点调整长度。由于C语言原生并不支持链表,redis的链表是自己实现的。List的底层实现就是一个双向链表,支持从链表的两端进行push和pop操作,时间复杂度是O(1)。同时支持在......
  • Linux -磁盘性能指标
    linux-磁盘IO性能监测手段Linux存储系统I/O栈由文件系统层(filesystemlayer)、通用块层(generalblocklayer)和设备层(devicelayer)构成。其中,通用块层是Linux磁盘I/O的核心。向上,它为访问文件系统和应用程序的块设备提供了标准接口;向下,它将各种异构磁盘设备抽象为一个......
  • Go--统计数组中重复的元素及重复次数
    代码:packagemainimport("fmt")funcmain(){//创建有重复数值的数组a1:=[]int{1,2,3,1,4,5,2}a2:=[]string{"t1","t2","t1","t3","t5","t3"}//创建maps1:=......