#include <FastLED.h>
#include <Keypad.h>
#define NUM_LEDS 32
#define NUM_LEDS1 18
#define LED_PIN 10
#define LED_PIN1 11
#define LED_PIN2 12
boolean result = false;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int sifir[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int bir[] = {6, 7, 8, 9};
int iki[] = {0, 1, 4, 5, 6, 7, 10, 11, 12, 13};
int uc[] = {0, 1, 4, 5, 6, 7, 8, 9, 10, 11};
int dort[] = {0, 1, 2, 3, 6, 7, 8, 9};
int bes[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11};
int alti[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13};
int yedi[] = {4, 5, 6, 7, 8, 9};
int sekiz[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int dokuz[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int yuz[] = {28, 29, 30, 31};
int hepsi[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
int hepsi1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
int hepsi2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
char key;
int Number = 0;
int c1 = 0;
int c2 = 0;
int c = 0;
int i = 0;
int j = 0;
int time = 500;
int time2 = 0;
int digitbirler = 0;
int digitonlar = 0;
int digityuzler = 0;
int button = 0;
CRGB leds[NUM_LEDS];
CRGB leds1[NUM_LEDS1];
CRGB leds2[NUM_LEDS1];
void setup()
{
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812B, LED_PIN1, GRB>(leds1, NUM_LEDS1);
FastLED.addLeds<WS2812B, LED_PIN2, GRB>(leds2, NUM_LEDS1);
FastLED.setBrightness(250);
Serial.begin(9600);
}
void basamakbir(int digitbirler)
{
for (i = 0; i < 32; i++)
{
leds[i] = CRGB::Black;
}
switch (digitbirler)
{
j = sizeof(leds);
case 0:
{
j = sizeof(sifir) / 2;
for (i = 0; i < j; i++)
{
leds[sifir[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 1:
{
j = sizeof(bir) / 2;
for (i = 0; i < j; i++)
{
leds[bir[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 2:
{
j = sizeof(iki) / 2;
for (i = 0; i < j; i++)
{
leds[iki[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 3:
{
j = sizeof(uc) / 2;
for (i = 0; i < j; i++)
{
leds[uc[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 4:
{
j = sizeof(dort) / 2;
for (i = 0; i < j; i++)
{
leds[dort[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 5:
{
j = sizeof(bes) / 2;
for (i = 0; i < j; i++)
{
leds[bes[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 6:
{
j = sizeof(alti) / 2;
for (i = 0; i < j; i++)
{
leds[alti[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 7:
{
j = sizeof(yedi) / 2;
for (i = 0; i < j; i++)
{
leds[yedi[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 8:
{
j = sizeof(sekiz) / 2;
for (i = 0; i < j; i++)
{
leds[sekiz[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 9:
{
j = sizeof(dokuz) / 2;
for (i = 0; i < j; i++)
{
leds[dokuz[i]] = CRGB::Red;
delay(time2);
}
break;
}
}
return;
}
void basamakonlar(int digitonlar)
{
switch (digitonlar)
{
case 10:
{
j = sizeof(bir) / 2;
for (i = 0; i < j; i++)
{
leds[bir[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 20:
{
j = sizeof(iki) / 2;
for (i = 0; i < j; i++)
{
leds[iki[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 30:
{
j = sizeof(uc) / 2;
for (i = 0; i < j; i++)
{
leds[uc[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 40:
{
j = sizeof(dort) / 2;
for (i = 0; i < j; i++)
{
leds[dort[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 50:
{
j = sizeof(bes) / 2;
for (i = 0; i < j; i++)
{
leds[bes[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 60:
{
j = sizeof(alti) / 2;
for (i = 0; i < j; i++)
{
leds[alti[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 70:
{
j = sizeof(yedi) / 2;
for (i = 0; i < j; i++)
{
leds[yedi[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 80:
{
j = sizeof(sekiz) / 2;
for (i = 0; i < j; i++)
{
leds[sekiz[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
case 90:
{
j = sizeof(dokuz) / 2;
for (i = 0; i < j; i++)
{
leds[dokuz[i] + 14] = CRGB::Red;
delay(time2);
}
break;
}
return;
}
}
void loop()
{
Serial.print(key);
Serial.print(" ");
Serial.print(c1);
Serial.print(" ");
Serial.print(c2);
Serial.print(" ");
Serial.println(c);
key = kpd.getKey();
if(key=='*')
{
c1=0;
c2=0;
button=0;
}
if(key=='C')
{
button=HIGH;
}
if(key=='D')
{
button=LOW;
}
if(key=='A')
{
do
{
key = kpd.getKey();
Serial.print(key);
if (key == '0')
{
c1 = 10;
}
if (key == '1')
{
c1 = 1;
}
if (key == '2')
{
c1 = 2;
}
if (key == '3')
{
c1 = 3;
}
if (key == '4')
{
c1 = 4;
}
if (key == '5')
{
c1 = 5;
}
if (key == '6')
{
c1 = 6;
}
if (key == '7')
{
c1 = 7;
}
if (key == '8')
{
c1 = 8;
}
if (key == '9')
{
c1 = 9;
}
}while(key != '#');
}
if(key=='B')
{
do
{
key = kpd.getKey();
Serial.print(key);
if (key == '0')
{
c2 = 10;
}
if (key == '1')
{
c2 = 1;
}
if (key == '2')
{
c2 = 2;
}
if (key == '3')
{
c2 = 3;
}
if (key == '4')
{
c2 = 4;
}
if (key == '5')
{
c2 = 5;
}
if (key == '6')
{
c2 = 6;
}
if (key == '7')
{
c2 = 7;
}
if (key == '8')
{
c2 = 8;
}
if (key == '9')
{
c2 = 9;
}
}while(key != '#');
}
Serial.print(key);
c = c1 * c2;
if (c1 == 10)
{
j = sizeof(hepsi1) / 2;
for (i = 0; i < j; i++)
{
leds1[hepsi1[i]] = CRGB::Black;
delay(time2);
}
j = sizeof(sifir) / 2;
for (i = 0; i < j; i++)
{
leds1[sifir[i]] = CRGB::Red;
delay(time2);
}
j = sizeof(bir) / 2;
for (i = 0; i < j; i++)
{
leds1[bir[i] + 8] = CRGB::Red;
delay(time2);
}
}
if (c1 < 10)
{
j = sizeof(hepsi1) / 2;
for (i = 0; i < j; i++)
{
leds1[hepsi1[i]] = CRGB::Black;
delay(time2);
}
switch (c1)
{
case 0:
{
j = sizeof(sifir) / 2;
for (i = 0; i < j; i++)
{
leds1[sifir[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 1:
{
j = sizeof(bir) / 2;
for (i = 0; i < j; i++)
{
leds1[bir[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 2:
{
j = sizeof(iki) / 2;
for (i = 0; i < j; i++)
{
leds1[iki[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 3:
{
j = sizeof(uc) / 2;
for (i = 0; i < j; i++)
{
leds1[uc[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 4:
{
j = sizeof(dort) / 2;
for (i = 0; i < j; i++)
{
leds1[dort[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 5:
{
j = sizeof(bes) / 2;
for (i = 0; i < j; i++)
{
leds1[bes[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 6:
{
j = sizeof(alti) / 2;
for (i = 0; i < j; i++)
{
leds1[alti[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 7:
{
j = sizeof(yedi) / 2;
for (i = 0; i < j; i++)
{
leds1[yedi[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 8:
{
j = sizeof(sekiz) / 2;
for (i = 0; i < j; i++)
{
leds1[sekiz[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 9:
{
j = sizeof(dokuz) / 2;
for (i = 0; i < j; i++)
{
leds1[dokuz[i]] = CRGB::Red;
delay(time2);
}
break;
}
}
FastLED.show();
}
if (c2 == 10)
{
j = sizeof(hepsi2) / 2;
for (i = 0; i < j; i++)
{
leds2[hepsi2[i]] = CRGB::Black;
delay(time2);
}
j = sizeof(sifir) / 2;
for (i = 0; i < j; i++)
{
leds2[sifir[i]] = CRGB::Red;
delay(time2);
}
j = sizeof(bir) / 2;
for (i = 0; i < j; i++)
{
leds2[bir[i] + 8] = CRGB::Red;
delay(time2);
}
}
if (c2 < 10)
{
j = sizeof(hepsi2) / 2;
for (i = 0; i < j; i++)
{
leds2[hepsi2[i]] = CRGB::Black;
}
switch (c2)
{
case 0:
{
j = sizeof(sifir) / 2;
for (i = 0; i < j; i++)
{
leds2[sifir[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 1:
{
j = sizeof(bir) / 2;
for (i = 0; i < j; i++)
{
leds2[bir[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 2:
{
j = sizeof(iki) / 2;
for (i = 0; i < j; i++)
{
leds2[iki[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 3:
{
j = sizeof(uc) / 2;
for (i = 0; i < j; i++)
{
leds2[uc[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 4:
{
j = sizeof(dort) / 2;
for (i = 0; i < j; i++)
{
leds2[dort[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 5:
{
j = sizeof(bes) / 2;
for (i = 0; i < j; i++)
{
leds2[bes[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 6:
{
j = sizeof(alti) / 2;
for (i = 0; i < j; i++)
{
leds2[alti[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 7:
{
j = sizeof(yedi) / 2;
for (i = 0; i < j; i++)
{
leds2[yedi[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 8:
{
j = sizeof(sekiz) / 2;
for (i = 0; i < j; i++)
{
leds2[sekiz[i]] = CRGB::Red;
delay(time2);
}
break;
}
case 9:
{
j = sizeof(dokuz) / 2;
for (i = 0; i < j; i++)
{
leds2[dokuz[i]] = CRGB::Red;
delay(time2);
}
break;
}
}
}
FastLED.show();
if (button == HIGH)
{
if (c > 99)
{
j = sizeof(hepsi) / 2;
for (i = 0; i < j; i++)
{
leds[hepsi[i]] = CRGB::Black;
delay(time2);
}
j = sizeof(sifir) / 2;
for (i = 0; i < j; i++)
{
leds[sifir[i]] = CRGB::Red;
delay(time2);
}
for (i = 0; i < j; i++)
{
leds[sifir[i] + 14] = CRGB::Red;
delay(time2);
}
j = sizeof(bir) / 2;
for (i = 0; i < j; i++)
{
leds[bir[i] + 22] = CRGB::Red;
delay(time2);
}
}
else if (9 < c < 100)
{
digitbirler = c % 10;
digitonlar = (c - digitbirler);
digityuzler = 0;
basamakbir(digitbirler);
basamakonlar(digitonlar);
}
else
{
digitbirler = c;
digitonlar = 0;
digityuzler = 0;
basamakbir(digitbirler);
}
FastLED.show();
}
else
{
uint16_t beatA = beatsin16(30, 0, 255);
uint16_t beatB = beatsin16(20, 0, 255);
fill_rainbow(leds, NUM_LEDS, (beatA + beatB) / 2, 8);
FastLED.show();
}
}