#include "LedControl.h"
LedControl lc = LedControl(11, 13, 10, 1);
// Button pins (avoid 0 and 1!)
const byte BTN_UP = 2;
const byte BTN_DOWN = 3;
const byte BTN_RIGHT = 4;
const byte BTN_LEFT = 5;
// Arrow patterns
const byte arrowUp[8] = {
B00011000,
B00111100,
B01100110,
B11000011,
B10011001,
B00111100,
B01100110,
B11000011
};
const byte arrowDown[8] = {
B11000011,
B01100110,
B00111100,
B10011001,
B11000011,
B01100110,
B00111100,
B00011000
};
const byte arrowRight[8] = {
B10011000,
B11001100,
B01100110,
B00110011,
B00110011,
B01100110,
B11001100,
B10011000
};
const byte arrowLeft[8] = {
B00011001,
B00110011,
B01100110,
B11001100,
B11001100,
B01100110,
B00110011,
B00011001
};
void draw(const byte pattern[8]) {
for (byte i = 0; i < 8; i++) {
lc.setRow(0, i, pattern[i]);
}
}
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
pinMode(BTN_UP, INPUT);
pinMode(BTN_DOWN, INPUT);
pinMode(BTN_RIGHT, INPUT);
pinMode(BTN_LEFT, INPUT);
}
void loop() {
lc.clearDisplay(0);
if (digitalRead(BTN_UP) == HIGH) {
draw(arrowUp);
}
else if (digitalRead(BTN_DOWN) == HIGH) {
draw(arrowDown);
}
else if (digitalRead(BTN_RIGHT) == HIGH) {
draw(arrowRight);
}
else if (digitalRead(BTN_LEFT) == HIGH) {
draw(arrowLeft);
}
delay(2);
}