// Khai báo mảng mẫu cho mũi tên
int arrow[9] = {
0B00001000,
0B00011100,
0B00111110,
0B01111111,
0B00011100,
0B00011100,
0B00011100,
0B00011100,
0B00000000
};
// Khai báo chân hàng dọc và hàng ngang
const int rowPins[] = {13, 12, 11, 10, 9, 8, 7, 6};
const int colPins[] = {5, 4, 3, 2, 1, 0, A0, A1};
void setup() {
// Khai báo các chân hàng dọc là output
for (int i = 0; i < 8; i++) {
pinMode(rowPins[i], OUTPUT);
digitalWrite(rowPins[i], HIGH); // Đặt chân hàng dọc xuất tích cực mức 1
}
// Khai báo các chân hàng ngang là output
for (int i = 0; i < 8; i++) {
pinMode(colPins[i], OUTPUT);
digitalWrite(colPins[i], HIGH); // Đặt chân hàng ngang xuất tích cực mức 1
}
}
void loop() {
for (int offset = 0; offset <16; offset++){
for (int k=0; k<30;k++){
displayCharacter(arrow, offset);
}
}
}
// Hàm hiển thị một ký tự trên ma trận LED
void displayCharacter(int character[], int offset) {
for (int i = 0; i < 8; i++) {
digitalWrite(rowPins[i], LOW); // Bật chân hàng dọc
for (int j = 0; j < 8; j++) {
if (bitRead(character[(i+ offset)%9], j)) {
digitalWrite(colPins[7-j], LOW); // Bật chân hàng ngang
} else {
digitalWrite(colPins[7-j], HIGH); // Tắt chân hàng ngang
}
}
delay(2); // Thời gian hiển thị
digitalWrite(rowPins[i], HIGH); // Tắt chân hàng dọc
for (int j = 0; j < 8; j++) {
digitalWrite(colPins[j], HIGH); // Tắt chân hàng ngang
}
}
}