#include <LedControl.h>
LedControl lc = LedControl(12, 11, 10, 2);
bool matrix = true;
// previous time for the tasks depending upon time.
unsigned long prevTime_T1 = millis();
unsigned long prevTime_T2 = millis();
unsigned long prevTime_T3 = millis();
unsigned long prevTime_T4 = millis();
// time intervals for the tasks
long interval_T1 = 3500;
long interval_T2 = 2500;
long interval_T3 = 1500;
long interval_T4 = 4500;
byte eyeOpen[] = {
0b00111100,
0b01111110,
0b11111111,
0b11100111,
0b11100111,
0b11111111,
0b01111110,
0b00111100
};
byte eyeClose[] = {
0b00000000,
0b00000000,
0b00111100,
0b11111111,
0b11111111,
0b00111100,
0b00000000,
0b00000000
};
byte eyeToLeft[] = {
0b00111100,
0b01111110,
0b11111111,
0b10011111,
0b10011111,
0b11111111,
0b01111110,
0b00111100
};
byte eyeToRight[] = {
0b00111100,
0b01111110,
0b11111111,
0b11111001,
0b11111001,
0b11111111,
0b01111110,
0b00111100
};
byte eyeToUp[] = {
0b00111100,
0b01100110,
0b11100111,
0b11111111,
0b11111111,
0b11111111,
0b01111110,
0b00111100
};
byte eyeToDown[] = {
0b00111100,
0b01100110,
0b11100111,
0b11111111,
0b11111111,
0b11111111,
0b01111110,
0b00111100
};
byte heart[] = {
B00000000,
B01100110,
B11111111,
B11111111,
B01111110,
B00111100,
B00011000,
B00000000
};
byte heart2[] = {
B01100110,
B11111111,
B11111111,
B11111111,
B11111111,
B01111110,
B00111100,
B00011000
};
void setup() {
lc.shutdown(1, false);
lc.shutdown(0, false);
lc.setIntensity(1, 8);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void loop() {
unsigned long currentTime = millis();
if (currentTime - prevTime_T1 > interval_T1) {
if (matrix) {
eyeLeft(eyeToDown);
eyeRight(eyeToDown);
delay(80);
eyeLeft(eyeClose);
eyeRight(eyeClose);
delay(80);
eyeLeft(eyeToDown);
eyeRight(eyeToDown);
matrix = false;
} else {
matrix = true;
}
prevTime_T1 = currentTime;
}
}
void eyeLeft(byte Eye_Left[])
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1, i, Eye_Left[i]);
}
}
void eyeRight(byte Eye_Right[])
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, Eye_Right[i]);
}
}