本帖最后由 lxf 于 2020-8-17 13:35 编辑
目标
1、让8位全彩LED流水灯模块,从1-8号灯珠,被依次点亮一颗,再熄灭前一颗,之后再从8-1号灯珠,被依次点亮一颗,再熄灭前一颗,依次循环。 2、随机数的使用,让8位全彩LED流水灯的1号灯珠每隔1秒随机被点亮一盏不同颜色的灯。
实验材料
Arduino UNO开发板 8位全彩LED流水灯模块的使用 配套USB数据线 配套杜邦线若干 Arduino IDE软件
内容
1、让8位全彩LED流水灯模块,从1-8号灯珠,被依次点亮一颗,再熄灭前一颗,之后再从8-1号灯珠,被依次点亮一颗,再熄灭前一颗,依次循环。
接线图
接线方式
Arduino UNO <------> 8位全彩LED流水灯模块 5V <------> 4-7VDC GND <------> GND 5 <------> DI
程序实现代码
- #include <Wire.h>
- #include <Adafruit_NeoPixel.h> //8位全彩LED流水灯模块库文件
- Adafruit_NeoPixel rgb_display_5(8); //8位全彩LED流水灯模块灯数为8
- void setup(){
- rgb_display_5.begin();
- rgb_display_5.setPin(5); //设置8位全彩LED流水灯为5号引脚
- }
- void loop(){
- for (int i = 1; i <= 9; i = i + (1)) { //8位全彩LED流水灯通过循环使1-8号灯珠,被依次点亮一颗,再熄灭前一颗
- rgb_display_5.setPixelColor(i-1, 255,0,0);
- rgb_display_5.show(); //进行显示
- delay(500); //延迟等待500ms
- rgb_display_5.setPixelColor((i - 1)-1, 0,0,0);
- rgb_display_5.show(); //进行显示
- delay(500); //延迟等待500ms
- }
- for (int i = 8; i >= 0; i = i + (-1)) { //8位全彩LED流水灯通过循环使8-1号灯珠,被依次点亮一颗,再熄灭前一颗
- rgb_display_5.setPixelColor(i-1, 255,0,0);
- rgb_display_5.show(); //进行显示
- delay(500); //延迟等待500ms
- rgb_display_5.setPixelColor((i + 1)-1, 0,0,0);
- rgb_display_5.show(); //进行显示
- delay(500); //延迟等待500ms
- }
- }
复制代码
加减乘除
这些运算符分别返回两个运算对象的和,差,积,商。这些运算操作受运算对象的数据类型的影响。请看以下示例语句: int c = 9/4; 由于c是整数型变量,以上程序运算结果是c = 2。由于整数型变量c不能存储小数,所以运算结果中的小数部分被Arduino忽略了。 另外运算也会产生溢出效应。再看以下语句: int c = 32767 + 1; 由于c是整数型变量,而整数型变量所能存储的最大整数为32767。所以以上程序将会产生溢出效果,这使得运算结果是c = -32768。为了得到正确的运算结果,需要使用适当的变量类型来进行该运算。比如使用float类型或double类型,程序运算结果就是正确的了。
示例:
- y = y + 3;
- x = x – 7;
- i = j * 6;
- r = r / 5;
复制代码
语法
result = value1 + value2;
result = value1 – value2;
result = value1 * value2;
result = value1 / value2;
参数
value1: 任何变量或常量
value2: 任何变量或常量
编程技巧:
* 要知道整型常量默认为int型,因此一些常量计算可能会溢出(例如:60 * 1000将产生负的结果)
* 在声明变量数据类型时,要考虑到这个变量所存储的数值大小。
* 要知道你的变量在哪一点将会产生“翻转”效果,且要知道在该数值在“翻转”后会发生什么,例如:(0 – 1)或(0 – 32768)。
* 如果数学计算的结果是分数,则应该使用浮点变量,但是要注意浮点变量占用空间大,计算速度慢。这是浮点变量的缺点。
2、随机数的使用,让8位全彩LED流水灯的1号灯珠每隔1秒随机被点亮一盏不同颜色的灯。
程序实现代码
- #include <Wire.h>
- #include <Adafruit_NeoPixel.h> //8位全彩LED流水灯模块库文件
- Adafruit_NeoPixel rgb_display_5(1); //8位全彩LED流水灯模块灯数为1
- void setup(){
- rgb_display_5.begin();
- rgb_display_5.setPin(5); //设置8位全彩LED流水灯为5号引脚
- }
- void loop(){
- rgb_display_5.setPixelColor(1-1, (random(0, 255)),(random(0, 255)),(random(0, 255))); //让8位全彩LED流水灯的1号灯珠每
- //1秒被随机点亮一盏不同颜色的灯
- rgb_display_5.show(); //进行显示
- delay(1000);
- }
复制代码
random()
random函数可用来产生随机数
语法
random(max)
random(min, max)
参数
min: 产生随机数的下限(包含此数值)
max: 产生随机数的上限(不包含此数值)
返回值
在最小值(min)和最大值减一(max-1)之间的随机数值
注意
单独使用random()函数,每次程序运行所产生的随机数字都是同一系列数字,并非真实的随机数,而是所谓的伪随机数,如果希望每次程序运行时产生不同的随机数值,应配合使用randomseed()函数。 |