|

楼主 |
发表于 2022-4-29 18:57
|
显示全部楼层
程序十二:随机生成的一个 LED 模拟弹跳点 (1)Arduino参考开源代码
- /*
- 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
- 程序十二:随机生成的一个 LED 模拟弹跳点
- 引脚定义
- DIN = D11
- CLK = D13
- CS = D10
- */
- #include "LedControl.h"//导入驱动库
- LedControl lc = LedControl (11, 13, 10, 1); //定义引脚
- int row;
- int row_prev;
- int col;
- int col_prev;
- int ball_timer = 100;
- long randNumber;
- long updown = 1; // 指示移动:+1 向上一排,-1 向下一排
- long leftright = 1; // 指示移动:+1 是右一列,-1 是左一列
- byte smiley[] = // 填充数组以打开笑脸
- {
- B00111110,
- B01000001,
- B10010101,
- B10100001,
- B10100001,
- B10010101,
- B01000001,
- B00111010
- };
- void setup() {
- Serial.begin (9600);
- // MAX72XX 启动时处于省电模式,
- // 我们必须做一个叫醒服务
- lc.shutdown (0, false);
- // 将亮度设置为中等值
- lc.setIntensity (0, 8); // 0 = 低; 8 = 高
- // 显示笑脸 - 证明 8x8 数组有效
- smile();
- delay(1000);
- //清除显示
- lc.clearDisplay (0);
- // 初始位置
- randomSeed (analogRead(0));
- col = random (1, 7); // 选择 1 到 7 之间的列位置
- row = random (1, 7); // 选择 1 到 7 之间的行位置
- // 检查显示单元是否工作
- // 在串行监视器上显示起始列和行号
- Serial.println ("开始条件" );
- Serial.print ("行: ");
- Serial.println (row);
- Serial.print ("列: ");
- Serial.println (col);
- Serial.println ("=======");
- Serial.println ();
- }
- void loop() {
- col_prev = col; //记录球的位置,列
- row_prev = row; //记录球的位置,行
- row = row + updown;
- col = col + leftright;
- checkVectors ();
- lc.setLed (0, col_prev, row_prev, false); // 清除前一个球的位置
- lc.setLed (0, col, row, true); // 点亮新球的位置
- delay (ball_timer);
- debug(); // 运行调试模块
- delay(1000);
- }
- // ============ 子程序 ===========================================
- void smile() {
- for (int i = 0; i < 8; i++)
- {
- lc.setRow (0, i, smiley[i]);
- }
- }
- void checkVectors () {
- if ((row > 7) && (updown = 1)) {
- updown = -1;
- row = 6;
- }
- if ((row < 0) && (updown = -1)) {
- updown = 1;
- row = 1;
- }
- if ((col > 7) && (leftright = 1)) {
- leftright = -1;
- col = 6;
- }
- if ((col < 0) && (leftright = -1)) {
- leftright = 1;
- col = 1;
- }
- }
- void debug() {
- Serial.print ("列: " );
- Serial.println (col);
- Serial.print ("行: " );
- Serial.println (row);
- }
复制代码
|
|