#include <Adafruit_NeoPixel.h>
#define PIN_1 13 // Pin voor de eerste strip van 3 LED's
#define PIN_2 12 // Pin voor de tweede strip van 9 LED's
#define PIN_3 8 // Pin voor de derde strip van 6 LED's
#define PIN_4 7 // Pin voor de vierde strip van 9 LED's
#define N_LEDS_1 3 // Aantal LED's in de eerste strip
#define N_LEDS_2 9 // Aantal LED's in de tweede strip
#define N_LEDS_3 6 // Aantal LED's in de derde strip
#define N_LEDS_4 9 // Aantal LED's in de vierde strip
#define HOUR_INCREMENT_PIN 2
#define MINUTE_INCREMENT_PIN 4
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(N_LEDS_1, PIN_1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(N_LEDS_2, PIN_2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(N_LEDS_3, PIN_3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip4 = Adafruit_NeoPixel(N_LEDS_4, PIN_4, NEO_GRB + NEO_KHZ800);
int s = 0;
int m = 0;
int h = 11;
int uur1;
int uur2;
int min1;
int min2;
int voriguur1= -1;
int voriguur2= -1;
int vorigmin1= -1;
int vorigmin2= -1;
int *randomLED_strip4;
bool isUniek;
// de RTC
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
unsigned long previousSecond = 0;
void setup()
{
// de RTC
if (!rtc.begin()) {
Serial.println("Kon geen RTC vinden");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC verloor stroom, stel de tijd in!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
strip1.begin();
strip2.begin();
strip3.begin();
strip4.begin();
strip1.show();
strip2.show();
strip3.show();
strip4.show();
Serial.begin(9600);
pinMode(HOUR_INCREMENT_PIN, INPUT_PULLUP);
pinMode(MINUTE_INCREMENT_PIN, INPUT_PULLUP);
}
void loop()
{
DateTime now = rtc.now();
if (now.second() != previousSecond) {
previousSecond = now.second();
s = s+1;
}
uint32_t a = strip1.Color(0, 255, 0); // groen
uint32_t b = strip1.Color(255, 0, 0); // rood
uint32_t c = strip1.Color(0, 0, 255); // blauw
uint32_t d = strip1.Color(170, 0, 255); // paars
if (s==60){
s = 0;
m = m+1;
}
if (m==60){
m = 0;
h = h+1;
}
if (h==25){
h = 0;
}
if (digitalRead(HOUR_INCREMENT_PIN) == LOW) {
h = h+1;
delay(200);
}
if (digitalRead(MINUTE_INCREMENT_PIN) == LOW) {
m = m+1;
delay(200);
}
//Serial.println(s);
Serial.println(m);
//Serial.println(h);
Serial.println(min2);
//Serial.println(randomLED_strip4[0]);
// Wis alle strips voordat de nieuwe tijd wordt weergegeven
strip1.clear();
strip2.clear();
strip3.clear();
//strip4.clear();
/*
// random LED in strip 1
int randomLED1_trip1 = random(0,3);
int randomLED2_trip1 = random(0,3);
while(randomLED1_trip1 == randomLED2_trip1) {
randomLED2_trip1 = random(0,3);
}
*/
// Uur 1
if (h >= 10) {
uur1=1;
// strip1.setPixelColor(randomLED1_trip1, a);
}
if (h >= 20) {
uur1=2;
//strip1.setPixelColor(randomLED2_trip1, a);
}
// Uur 2
uur2=0;
if ((h>6) && (h<10) or (h>16) && (h<20)){
uur2 =1;
//strip2.setPixelColor(0,b);
}
if ((h>3) && (h<10) or (h>13) && (h<20) or (h>23)){
uur2 =2;
//strip2.setPixelColor(1,b);
}
if ((h>0) && (h<10) or (h>10) && (h<20) or (h>20)) {
uur2 =3;
//strip2.setPixelColor(2,b);
}
if ((h>1) && (h<10) or (h>11) && (h<20) or (h>21)){
uur2 =4;
//strip2.setPixelColor(3,b);
}
if ((h>4) && (h<10) or (h>14) && (h<20)){
uur2 =5;
//strip2.setPixelColor(4,b);
}
if ((h>7) && (h<10) or (h>17) && (h<20)){
uur2 =6;
//strip2.setPixelColor(5,b);
}
if ((h>8) && (h<10) or (h>18) && (h<20)){
uur2 =7;
//strip2.setPixelColor(6,b);
}
if ((h>5) && (h<10) or (h>15) && (h<20)){
uur2 =8;
//strip2.setPixelColor(7,b);
}
if ((h>2) && (h<10) or (h>12) && (h<20) or (h>22)){
uur2 =9;
//strip2.setPixelColor(8,b);
}
// Minuten 1
if (m>39){
min1 =1;
//strip3.setPixelColor(0,c);
}
if(m>9){
min1 =2;
//strip3.setPixelColor(1,c);
}
if (m>19){
min1 =3;
//strip3.setPixelColor(2,c);
}
if (m>49){
min1 =4;
//strip3.setPixelColor(3,c);
}
if (m>29){
min1 =5;
//strip3.setPixelColor(4,c);
}
// Minuten 2
if (m==0 && m==10 && m== 20 && m== 30 && m== 40 && m== 50){
// min2 = 0;
}
if ((m>6) && (m<10) or (m>16) && (m<20) or (m>26) && (m<30) or (m>36) && (m<40) or (m>46) && (m<50) or (m>56)){
// min2 =1;
//strip4.setPixelColor(0,d);
}
if ((m>3) && (m<10) or (m>13) && (m<20) or (m>23) && (m<30) or (m>33) && (m<40) or (m>43) && (m<50) or (m>53)){
// min2 =2;
//strip4.setPixelColor(1,d);
}
if ((m>0) && (m<10) or (m>10) && (m<20) or (m>20) && (m<30) or (m>30) && (m<40) or (m>40) && (m<50) or (m>50)){
// min2 =3;
//strip4.setPixelColor(2,d);
}
if ((m>1) && (m<10) or (m>11) && (m<20) or (m>21) && (m<30) or (m>31) && (m<40) or (m>41) && (m<50) or (m>51)){
// min2 =4;
//strip4.setPixelColor(3,d);
}
if ((m>4) && (m<10) or (m>14) && (m<20) or (m>24) && (m<30) or (m>34) && (m<40) or (m>44) && (m<50) or (m>54)){
// min2 =5;
//strip4.setPixelColor(4,d);
}
if ((m>7) && (m<10) or (m>17) && (m<20) or (m>27) && (m<30) or (m>37) && (m<40) or (m>47) && (m<50) or (m>57)){
// min2 =6;
//strip4.setPixelColor(5,d);
}
if ((m>8) && (m<10) or (m>18) && (m<20) or (m>28) && (m<30) or (m>38) && (m<40) or (m>48) && (m<50) or (m>58)){
// min2 =7;
//strip4.setPixelColor(6,d);
}
if ((m>5) && (m<10) or (m>15) && (m<20) or (m>25) && (m<30) or (m>35) && (m<40) or (m>45) && (m<50) or (m>55)){
//min2 =8;
//strip4.setPixelColor(7,d);
}
if ((m>2) && (m<10) or (m>12) && (m<20) or (m>22) && (m<30) or (m>32) && (m<40) or (m>42) && (m<50) or (m>52)){
//min2 =9;
//strip4.setPixelColor(8,d);
}
if (m==1){
min2=1;
}
if (m==2){
min2=2;
}
if (m==3){
min2=3;
}
if (m==4){
min2=4;
}
if (m==5){
min2=5;
}
if (m==6){
min2=6;
}
if (m==7){
min2=7;
}
if (m==8){
min2=8;
}
if (m==9){
min2=9;
}
if (min2 != vorigmin2) { // Controleer of het uur is veranderd
// Array om de willekeurig gegenereerde waarden op te slaan
delete[] randomLED_strip4;
strip4.clear();
vorigmin2 = min2;
randomLED_strip4 = new int[min2];
// Genereer willekeurige getallen voor de array en zorg ervoor dat ze uniek zijn
for (int i = 0; i < min2; i++) {
// Blijf willekeurige getallen genereren totdat ze uniek zijn
do {
randomLED_strip4[i] = random(0, 9);
// Controleer of de gegenereerde waarde al in de array zit
isUniek = true;
for (int j = 0; j < i; j++) {
if (randomLED_strip4[j] == randomLED_strip4[i]) {
isUniek = false;
break;
}
}
} while (!isUniek);
}
if (min2 >=1){
strip4.setPixelColor(randomLED_strip4[0],d);
}
if (min2 >=2){
strip4.setPixelColor(randomLED_strip4[1],d);
}
if (min2 >=3){
strip4.setPixelColor(randomLED_strip4[2],d);
}
if (min2 >=4){
strip4.setPixelColor(randomLED_strip4[3],d);
}
if (min2 >=5){
strip4.setPixelColor(randomLED_strip4[4],d);
}
if (min2 >=6){
strip4.setPixelColor(randomLED_strip4[5],d);
}
if (min2 >=7){
strip4.setPixelColor(randomLED_strip4[6],d);
}
if (min2 >=8){
strip4.setPixelColor(randomLED_strip4[7],d);
}
if (min2 >=9){
strip4.setPixelColor(randomLED_strip4[8],d);
}
}
strip1.show();
strip2.show();
strip3.show();
strip4.show();
}