#include <LedControl.h>
int DIN = 5;
int CS = 6;
int CLK = 7;
LedControl lc = LedControl(DIN, CLK, CS, 4);
int mat_size = 8;
int dir = 3;//# 0 表示向上,1 表示向下,2 表示向右,3 表示向左
int pot_pin = A2;
int led_position[2] = {0,0};
int led_staute[8][8] = {0};
//移动。
void yidong()
{
lc.setLed(0,led_position[0],led_position[1],HIGH);//点亮第0行,第0列。
led_staute[led_position[0]][led_position[1]]=HIGH; //记录LED的状态。
if (dir == 0){ //向上。
led_position[0]-=1;
}
else if (dir == 1){ //向下。
led_position[0]+=1;
}
else if (dir == 2){ //向右。
led_position[1]-=1;
}
else if (dir == 3){ //向左。
led_position[1]+=1;
}
delay(600);
}
void setup() {
lc.shutdown(0, false); //启动时,MAX72XX处于省电模式
lc.setIntensity(0, 1); //将亮度设置为最大值
lc.clearDisplay(0); //清除显示
Serial.begin(9600);
}
void loop() {
// Serial.println(analogRead(pot_pin));
// Serial.println(dir);
Serial.print("X:");
Serial.print(led_position[0]);
Serial.print("Y:");
Serial.println(led_position[1]);
//边界检测。
if (led_position[0] < 0 || (led_staute[led_position[0]-1][led_position[1]]==HIGH && led_position[0] != 0) ) {
led_position[0] = 0;
dir = 3 ; //左
}
else if (led_position[0]>=mat_size ){
led_position[0] = mat_size -1;
dir = 2 ;//右。
}
else if (led_position[1] < 0 ){
led_position[1] = 0;
dir = 0; //上。
}
else if (led_position[1]>=mat_size ){
led_position[1] = mat_size -1;
dir = 1 ; //下
}
yidong();
}