37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十一:8位LED数码管MAX7219模块(支持级联八位串行3个IO口控制)
【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】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实验场景图