【雕爷学编程】Arduino动手做(81)--- 8位LED数码管模块4

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

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十一:8位LED数码管MAX7219模块(支持级联八位串行3个IO口控制)

【雕爷学编程】Arduino动手做(81)--- 8位LED数码管模块4_第1张图片
【雕爷学编程】Arduino动手做(81)--- 8位LED数码管模块4_第2张图片
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十一: 8位LED数码管MAX7219模块
项目之四:在数字0位上一个接一个地显示“Arduino”一词,滚动显示所有十六进制显示屏上的数字和字母

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验八十四: 8位LED数码管MAX7219模块
   项目之四:在数字0位上一个接一个地显示“Arduino”一词,滚动显示所有十六进制显示屏上的数字和字母
*/

#include "LedControl.h"
// Arduino 引脚 2 至DIN,4 至Clk,3 至ck,设备数量是1个
LedControl lc = LedControl(2, 4, 3, 1);

//*我们总是在显示更新之间等待一段时间
unsigned long delaytime = 250;

void setup() {
  //MAX72XX 在启动时处于省电模式,我们必须叫醒
  lc.shutdown(0, false);
  lc.setIntensity(0, 6); // 设置亮度级别(0 为最小值,15 为最大值)
  lc.clearDisplay(0); // 清除显示寄存器
}


//此方法将显示字符,在数字0位上一个接一个地显示“Arduino”一词
void writeArduinoOn7Segment() {
  lc.setChar(0, 0, 'a', false);
  delay(delaytime);
  lc.setRow(0, 0, 0x05);
  delay(delaytime);
  lc.setChar(0, 0, 'd', false);
  delay(delaytime);
  lc.setRow(0, 0, 0x1c);
  delay(delaytime);
  lc.setRow(0, 0, B00010000);
  delay(delaytime);
  lc.setRow(0, 0, 0x15);
  delay(delaytime);
  lc.setRow(0, 0, 0x1D);
  delay(delaytime);
  lc.clearDisplay(0);
  delay(delaytime);
}

//此方法将滚动所有十六进制显示屏上的数字和字母
void scrollDigits() {
  for (int i = 0; i < 13; i++) {
    lc.setDigit(0, 3, i, false);
    lc.setDigit(0, 2, i + 1, false);
    lc.setDigit(0, 1, i + 2, false);
    lc.setDigit(0, 0, i + 3, false);
    delay(delaytime);
  }
  lc.clearDisplay(0);
  delay(delaytime);
}

void loop() {
  writeArduinoOn7Segment();
  scrollDigits();
}

驱动库源代码下载
该库的源代码位于GitHub 上

https://github.com/wayoda/LedControl

The latest binary release is always available from the LedControl Release Page

Instructions to install a library for the Arduino IDE are found here

Now create a new sketch with the following content…

#include "LedControl.h"

void setup() {}
void loop() {}

… hit the verify button and the library will be compiled and is available for all of your sketches that start with a #include “LedControl.h” line.

The Zip-File also contains 3 example sketches which are documented on the LedControlDemos page.

Known bugs
Currently none

目前为止。最新版本为1.0.6
修订历史
2014 年 5 月 26 日修复了setChar()函数中的错误。
2014 年 2 月 10 日更新了库的安装说明。
2012 年 9 月 10 日将软件许可证从 LGPL 更改为 MIT 样式的许可证。
2011 年 9 月 19 日上传了新版本的LedControl .zip。Arduino IDE 的 1.0 版将内部头文件重命名WProgramm.h为Arduino.h. 包含语句 inLedControl.h已更新,因此库可以在 IDE 的 1.0 之前和之后版本下编译
2008 年 10 月 14 日上传了新版本的LedControl .zip。原始版本没有在 arduino-0012 下编译。
2007 年 12 月 5 日文档和源代码现在托管在 Arduino Playground 上
2007 年 6 月 23 日首次公开发布

【雕爷学编程】Arduino动手做(81)--- 8位LED数码管模块4_第3张图片
Arduino实验场景图

【雕爷学编程】Arduino动手做(81)--- 8位LED数码管模块4_第4张图片
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十一: 8位LED数码管MAX7219模块
项目之五:测试简单的二个级联,循环显示每段笔划

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验八十四: 8位LED数码管MAX7219模块
   项目之五:测试简单的二个级联,循环显示每段笔划
*/

#include "LedControl.h"
// Arduino 引脚 2 至DIN,4 至Clk,3 至ck,设备数量是2个
LedControl lc = LedControl(2, 4, 3, 2);

//我们总是在显示更新之间等待一段时间,这里是500毫秒
unsigned long delaytime = 500;

//这次我们有不止一个设备,但所有这些都必须单独初始化

void setup() {
  //我们在创建LedControl时已经设置了设备数量
  int devices = lc.getDeviceCount();
  //我们必须在循环中初始化所有设备
  for (int address = 0; address < devices; address++) {
    //MAX72XX 在启动时处于省电模式
    lc.shutdown(address, false);// 启用显示
    lc.setIntensity(address, 5); // 设置亮度级别(0 为最小值,15 为最大值)
    lc.clearDisplay(address);// 清除显示寄存器
  }
}

void loop() {
   //读取级联设备的数量
  int devices = lc.getDeviceCount();

  //我们必须在一个循环中初始化所有设备
  for (int row = 0; row < 8; row++) {
    for (int col = 0; col < 8; col++) {
      for (int address = 0; address < devices; address++) {
        delay(delaytime);
        lc.setLed(address, row, col, true);
        delay(delaytime);
        lc.setLed(address, row, col, false);
      }
    }
  }
}

Arduino实验场景图

【雕爷学编程】Arduino动手做(81)--- 8位LED数码管模块4_第5张图片

你可能感兴趣的:(嵌入式硬件,Arduino,物联网,机器人,c++,8位LED数码管模块)