#include <Adafruit_NeoPixel.h>
#define Up1 A0
#define Down1 A1
#define Up2 A2
#define Down2 A3
#define Reset A4
#define Random A5
#define NUMPIXELS 28 // จำนวน Neopixel
#define BAR 4 // กำหนดจำนวนของ bar
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(NUMPIXELS, 5, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(NUMPIXELS, 6, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(NUMPIXELS, 9, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip4 = Adafruit_NeoPixel(NUMPIXELS, 10, NEO_GRB + NEO_KHZ800);
boolean num[10][7] = {
{1,1,1,1,1,1,0},
{0,1,1,0,0,0,0},
{1,1,0,1,1,0,1},
{1,1,1,1,0,0,1},
{0,1,1,0,0,1,1},
{1,0,1,1,0,1,1},
{1,0,1,1,1,1,1},
{1,1,1,0,0,0,0},
{1,1,1,1,1,1,1},
{1,1,1,1,0,1,1}
};
char r1 = 0, g1 = 255, b1 = 0; // สีผู้เล่น 1
char r2 = 255, g2 = 255, b2 = 0; // สีผู้เล่น 2
unsigned char Score1 = 0 , Score2 = 0;
void setup() {
pinMode(Up1, INPUT_PULLUP);
pinMode(Down1, INPUT_PULLUP);
pinMode(Up2, INPUT_PULLUP);
pinMode(Down2, INPUT_PULLUP);
pinMode(Reset, INPUT_PULLUP);
pinMode(Random, INPUT_PULLUP);
strip1.begin();
strip2.begin();
strip3.begin();
strip4.begin();
strip1.show();
strip2.show();
strip3.show();
strip4.show();
show1(Score1/10);
show2(Score1%10);
show3(Score2/10);
show4(Score2%10);
}
void loop() {
if(digitalRead(Up1) == LOW){
Score1++; delay(100);
while(digitalRead(Up1) == LOW){}
if(Score1 > 99) Score1 = 99;
show1(Score1/10);
show2(Score1%10);
}
else if(digitalRead(Down1) == LOW){
if(Score1 > 0) Score1--;
delay(100);
while(digitalRead(Down1) == LOW){}
show1(Score1/10);
show2(Score1%10);
}
else if(digitalRead(Up2) == LOW){
Score2++; delay(100);
while(digitalRead(Up2) == LOW){}
if(Score2 > 99) Score2 = 99;
show3(Score2/10);
show4(Score2%10);
}
else if(digitalRead(Down2) == LOW){
if(Score2 > 0) Score2--;
delay(100);
while(digitalRead(Down2) == LOW){}
show3(Score2/10);
show4(Score2%10);
}
else if (digitalRead(Reset) == LOW) {
Score1 = 0; Score2 = 0; delay(100);
while(digitalRead(Reset) == LOW){}
show1(0);
show2(0);
show3(0);
show4(0);
}
else if (digitalRead(Random) == LOW) {
random_color();
delay(100);
while (digitalRead(Random) == LOW) {}
show1(Score1/10);
show2(Score1%10);
show3(Score2/10);
show4(Score2%10);
}
}
void random_color() {
r1 = random(0, 255);
g1 = random(0, 255);
b1 = random(0, 255);
r2 = random(0, 255);
g2 = random(0, 255);
b2 = random(0, 255);
}
void show1(char n) {
int s = 0;
for (int x = 0; x < NUMPIXELS; x+=BAR ) {
for (int i = x; i < x+BAR; i++) {
strip1.setPixelColor(i, strip1.Color(r1*num[n][s], g1*num[n][s], b1*num[n][s]));
}
s++;
}
strip1.show();
}
void show2(char n) {
int s = 0;
for (int x = 0; x < NUMPIXELS; x+=BAR) {
for (int i = x; i < x+BAR; i++) {
strip2.setPixelColor(i, strip2.Color(r1*num[n][s], g1*num[n][s], b1*num[n][s]));
}
s++;
}
strip2.show();
}
void show3(char n) {
int s = 0;
for (int x = 0; x < NUMPIXELS; x+=BAR) {
for (int i = x; i < x+BAR; i++) {
strip3.setPixelColor(i, strip3.Color(r2*num[n][s], g2*num[n][s], b2*num[n][s]));
}
s++;
}
strip3.show();
}
void show4(char n){
int s = 0;
for (int x = 0; x < NUMPIXELS; x+=BAR) {
for (int i = x; i < x+BAR; i++) {
strip4.setPixelColor(i, strip4.Color(r2*num[n][s], g2*num[n][s], b2*num[n][s]));
}
s++;
}
strip4.show();
}