#include #include "clockelements.hpp" const unsigned int PIN_BUZZER = 9; const unsigned int PIN_PIXELS = 6; const unsigned int NUM_RING_PIXELS = 180; const unsigned int NUM_POINTER_PIXELS = 6; const unsigned int NUM_POINTERS = 12; const unsigned int NUM_POINTERS_PIXELS = NUM_POINTER_PIXELS * NUM_POINTERS; const unsigned int NUM_NUMBERS = 12; const unsigned int NUM_NUMPER_PIXELS[NUM_NUMBERS] = {2,4,4,4,4,4,4,4,4,4,4,5}; const unsigned int NUM_NUMBERS_PIXELS = NUM_NUMPER_PIXELS[0] + NUM_NUMPER_PIXELS[1] + NUM_NUMPER_PIXELS[2]; const unsigned int NUM_ALL_PIXELS = NUM_RING_PIXELS + NUM_POINTERS_PIXELS + NUM_NUMBERS_PIXELS; Adafruit_NeoPixel pixels(NUM_ALL_PIXELS, PIN_PIXELS, NEO_GRB + NEO_KHZ800); elements number[NUM_NUMBERS]; elements pointer[NUM_POINTERS]; uint16_t color_numbers, color_pointers_hour = 0; void init_numbers() { // init all the numbers unsigned int current_first_led = NUM_RING_PIXELS + NUM_POINTERS_PIXELS; for(unsigned int num = 0; num < NUM_NUMBERS; num++) { //number[num] = new numbers(&pixels, current_first_led, NUM_NUMPER_PIXELS[num]); number[num].init(&pixels, current_first_led, NUM_NUMPER_PIXELS[num],false); number[num].clean(); current_first_led =+ NUM_NUMPER_PIXELS[num]; } } void init_pointers() { // init all the pointers - each as 6 leds, starts at 12,11,10 ... 1, each even is inversed (goes from outside into center) unsigned int current_first_led = NUM_RING_PIXELS; bool is_even = false; for(unsigned int num = NUM_POINTERS-1; num >= 0; num--) { is_even = num%2==0? true:false; pointer[num].init(&pixels, current_first_led, NUM_POINTER_PIXELS ,is_even); pointer[num].clean(); current_first_led =+ NUM_POINTER_PIXELS; } } void setup() { Serial.begin(9600); // put your setup code here, to run once: pixels.begin(); pixels.clear(); pixels.show(); Serial.print("hallo"); color_pointers_hour = 0; color_numbers = 65535; Serial.print("hallo"); init_numbers(); Serial.print("hallo"); init_pointers(); Serial.print("hallo"); } void loop() { unsigned int hour = 0; for(unsigned int minute = 0; minute<60; minute++) { number[hour].fill(color_numbers,255,255); //pointer[hour].fill(color_pointers_hour); pointer[hour].ffill(color_pointers_hour, minute/(60/NUM_POINTER_PIXELS)); pixels.show(); tone(PIN_BUZZER, 1000, 100); delay(50000); number[hour].clean(); pointer[hour].clean(); pixels.show(); hour = minute == 59 ? hour+1 : hour; hour = hour > 11 ? 0 : hour; Serial.println(hour); Serial.println(minute); } }