#include "Arduino.h"
#include <LedControl.h>
int buttonPin = 2;
int DIN = 0;
int CS = 1;
int CLK = 3;
int numb=1;
int pres=0;
int SPEED_1 = 40;
int SPEED_2 = 40;
int SPEED_3 = 500;
LedControl lc=LedControl(DIN,CLK,CS,0);
byte I[8]= {0x7e,0x18,0x18,0x18,0x18,0x18,0x18,0x7e};
byte Heart_1[8]= {0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00};
byte Heart_2[8]= {0x00,0x36,0x7F,0x7F,0x7F,0x3E,0x1C,0x08};
byte U[8]= {0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xFF,0x7E};
byte Trans_1[8]= {0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55};
byte Trans_2[8]= {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa};
byte Blank[8]= {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
byte Heart_Frame_1[8]= {0x0,0x36,0x49,0x41,0x41,0x22,0x14,0x8};
byte Heart_Frame_2[8]= {0x0,0x36,0x49,0x41,0x41,0x22,0x1c,0x8};
byte Heart_Frame_3[8]= {0x0,0x36,0x49,0x41,0x41,0x32,0x1c,0x8};
byte Heart_Frame_4[8]= {0x0,0x36,0x49,0x41,0x41,0x3a,0x1c,0x8};
byte Heart_Frame_5[8]= {0x0,0x36,0x49,0x41,0x41,0x3e,0x1c,0x8};
byte Heart_Frame_6[8]= {0x0,0x36,0x49,0x41,0x43,0x3e,0x1c,0x8};
byte Heart_Frame_7[8]= {0x0,0x36,0x49,0x41,0x47,0x3e,0x1c,0x8};
byte Heart_Frame_8[8]= {0x0,0x36,0x49,0x41,0x4f,0x3e,0x1c,0x8};
byte Heart_Frame_9[8]= {0x0,0x36,0x49,0x41,0x5f,0x3e,0x1c,0x8};
byte Heart_Frame_10[8]= {0x0,0x36,0x49,0x41,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_11[8]= {0x0,0x36,0x49,0x61,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_12[8]= {0x0,0x36,0x49,0x71,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_13[8]= {0x0,0x36,0x49,0x79,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_14[8]= {0x0,0x36,0x49,0x7d,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_15[8]= {0x0,0x36,0x49,0x7f,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_16[8]= {0x0,0x36,0x4b,0x7f,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_17[8]= {0x0,0x36,0x4f,0x7f,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_18[8]= {0x0,0x36,0x5f,0x7f,0x7f,0x3e,0x1c,0x8};
byte Heart_Frame_19[8]= {0x0,0x36,0x7f,0x7f,0x7f,0x3e,0x1c,0x8};
void setup()
{
lc.shutdown(0,false);
lc.setIntensity(0,15);
lc.clearDisplay(0);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop()
{
ButtonScan();
switch (numb) {
case 1:
printByte(Blank);
lc.setIntensity(0,0);
delay(SPEED_1);
break;
case 2:
for (int i=0;i<=2;i++)
{
Transition ();
I_Animation ();
Heart_Animation ();
HeartBeat ();
HeartBeat ();
HeartBeat ();
delay(SPEED_2);
for (int i=1;i<=15;i++)
{
printByte(Heart_2);
lc.setIntensity(0,i);
delay(SPEED_1);
}
delay(SPEED_3);
for (int i=15;i>=0;i--)
{
printByte(Heart_2);
lc.setIntensity(0,i);
delay(SPEED_1);
}
printByte(Blank);
lc.setIntensity(0,0);
delay(SPEED_1);
U_Animation ();
}
numb = 1;
break;
}
}
void HeartBeat ()
{
printByte(Heart_2);
lc.setIntensity(0,1);
delay(SPEED_3);
printByte(Heart_1);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Heart_2);
lc.setIntensity(0,1);
delay(SPEED_2);
printByte(Heart_1);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Heart_2);
lc.setIntensity(0,1);
delay(SPEED_2);
}
void Transition ()
{
printByte(Trans_1);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_2);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_1);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_2);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_1);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_2);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_1);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_2);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_1);
lc.setIntensity(0,15);
delay(SPEED_2);
printByte(Trans_2);
lc.setIntensity(0,15);
delay(SPEED_2);
}
void I_Animation ()
{
for (int i=0;i<=15;i++)
{
printByte(I);
lc.setIntensity(0,i);
delay(SPEED_1);
}
delay(500);
for (int i=15;i>=0;i--)
{
printByte(I);
lc.setIntensity(0,i);
delay(SPEED_1);
}
printByte(Blank);
lc.setIntensity(0,0);
delay(SPEED_1);
}
void U_Animation ()
{
for (int i=0;i<=15;i++)
{
printByte(U);
lc.setIntensity(0,i);
delay(SPEED_1);
}
delay(500);
}
void Heart_Animation ()
{
printByte(Heart_Frame_1);
lc.setIntensity(0,1);
delay(300);
printByte(Heart_Frame_2);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_3);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_4);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_5);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_6);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_7);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_8);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_9);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_10);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_11);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_12);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_13);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_14);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_15);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_16);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_17);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_18);
lc.setIntensity(0,1);
delay(SPEED_1);
printByte(Heart_Frame_19);
lc.setIntensity(0,1);
delay(SPEED_1);
}
void printByte(byte character [])
{
int i = 0;
for(i=0;i<8;i++)
{
lc.setRow(0,i,character[i]);
}
}
void ButtonScan()
{
if(digitalRead(buttonPin)==0)
{
if(pres==0)
{
numb++;
pres=1;
}
}
else
{
pres=0;
}
if(numb == 3)
{
numb = 1;
}
}