Guten Abend zusammen,
ich bin ein SPS-Programmierer, der sich seit kurzem an Arduino versucht. Mit C+ habe ich bisher nicht viel Erfahrung. Mein aktuelles Projekt ist eine Buchstabenuhr - ähnlich einer "Qlocktwo" auf Bayrisch - da sich diese meine Freundin zu Weihnachten wünscht. Das ganze ist personalisiert und soll unter anderem Namen der Kinder usw. anzeigen können.
Für mein Projekt benutze ich einen Nano V3.0 mit Atmega328 CH340 von AZ-Delivery.
Das Projekt übertrage ich mit Arduino IDE, Board "Arduino Nano", Prozessor "Atmega 328P (Old Bootloader)"
Zu meinem Problem: Ich binde SK6812-Neopixel (ähnlich WS2812B) mithilfe der Bibliothek ein. Wenn ich den kompletten Code einfüge funktioniert zwar der serielle Monitor noch, der PWM-Pin 3 für die Neopixel arbeitet aber scheinbar nicht mehr.
Die Uhr hat soweit funktioniert, bis der Code mehr wurde. Laut Kompiler liege ich aber bloß bei 42% des Programmspeichers und 57% der Variablen. Wenn ich eine (oder mehrere, je nach Länge) Betriebsart aus dem Programm entferne klappt die Übertragung der angesteuerten LED einwandfrei. Dabei ist es nicht relevant, welche Betriebsart das genau ist. Es wirkt so, als würde der PWM-Pin aufgrund der Programmlänge abstürzen!?!
Liege ich da richtig?
Gibt es einen oder mehrere Performance-Programmfehler, den ich mir geleistet habe?
Kann ich irgendwo Programmlänge einsparen? Würden z. B. Sprünge statt If-Anweisungen helfen?
Vielen Dank für eure Zeit so kurz vor Weihnachten!
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to match the rest of the
// Adafruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 3 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 220 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRBW);
//LED_NR vorbelegen
byte Es[4] = {216, 217, 218, 219};
byte is[4] = {210, 211, 212, 213};
byte zehn[8] = {200, 201, 202, 203, 204, 205, 206, 207};
byte fuenf[8] = {180, 181, 182, 183, 184, 185, 186, 187};
byte zwanzg[12] = {188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199};
byte dreiviertl[8] = {172, 173, 174, 175, 176, 177, 178, 179};
byte viertl[12] = {160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171};
byte noch[8] = {150, 151, 152, 153, 154, 155, 156, 157};
byte kurz[8] = {140, 141, 142, 143, 144, 145, 146, 147};
byte vor[6] = {134, 135, 136, 137, 138, 139};
byte hoibe[10] = {122, 123, 124, 125, 126, 127, 128, 129, 130, 131};
byte zweife[12] = {100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111};
byte drei[8] = {112, 113, 114, 115, 116, 117, 118, 119};
byte eife[8] = {92, 93, 94, 95, 96, 97, 98, 99};
byte fuenfe[10] = {82, 83, 84, 85, 86, 87, 88, 89, 90, 91};
byte simme[10] = {70, 71, 72, 73, 74, 75, 76, 77, 78, 79};
byte viere[10] = {60, 61, 62, 63, 64, 65, 66, 67, 68, 69};
byte oans[8] = {52, 53, 54, 55, 56, 57, 58, 59};
byte achte[10] = {42, 43, 44, 45, 46, 47, 48, 49, 50, 51};
byte zehne[10] = {24, 25, 26, 27, 28, 29, 30, 31, 32, 33};
byte neine[10] = {30, 31, 32, 33, 34, 35, 36, 37, 38, 39};
byte sechse[12] = {8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
byte zwoa[8] = {0, 1, 2, 3, 4, 5, 6, 7};
byte lucia[10] = {158, 159, 160, 161, 118, 119, 120, 121, 80, 81};
byte baze[8] = {20, 21, 22, 23, 24, 25, 26, 27};
byte bier[8] = {132, 133, 106, 107, 92, 93, 66, 67};
byte franz[10] = {6, 7, 30, 31, 50, 51, 66, 67, 94, 95};
byte d1x[18] = {146, 147, 132, 133, 134, 135, 102, 103, 106, 107, 92, 93, 66, 67, 52, 53, 26, 27};
byte d2x[24] = {138, 139, 142, 143, 144, 145, 132, 133, 106, 107, 92, 93, 64, 65, 56, 57, 20, 21, 22, 23, 24, 25, 26, 27};
byte d3x[22] = {138, 139, 142, 143, 144, 145, 132, 133, 106, 107, 94, 95, 66, 67, 52, 53, 22, 23, 24, 25, 58, 59};
byte d4x[26] = {146, 147, 132, 133, 134, 135, 102, 103, 106, 107, 92, 93, 98, 99, 60, 61, 62, 63, 64, 65, 66, 67, 52, 53, 26, 27};
byte d5x[28] = {140, 141, 142, 143, 144, 145, 146, 147, 138, 139, 100, 101, 94, 95, 96, 97, 98, 99, 66, 67, 52, 53, 20, 21, 22, 23, 24, 25};
byte d6x[24] = {60, 61, 66, 67, 52, 53, 58, 59, 22, 23, 24, 25, 98, 99, 94, 95, 96, 97, 102, 103, 134, 135, 146, 147};
byte d7x[20] = {140, 141, 142, 143, 144, 145, 146, 147, 132, 133, 106, 107, 94, 95, 64, 65, 56, 52, 22, 23};
byte d8x[28] = {60, 61, 66, 67, 52, 53, 58, 59, 22, 23, 24, 25, 94, 95, 96, 97, 100, 101, 106, 107, 132, 133, 138, 139, 142, 143, 144, 145};
byte d9x[28] = {22, 23, 24, 25, 52, 53, 66, 67, 92, 93, 94, 95, 96, 97, 100, 101, 106, 107, 132, 133, 138, 139, 142, 143, 144, 145};
byte d0x[28] = {60, 61, 66, 67, 52, 53, 58, 59, 22, 23, 24, 25, 92, 93, 98, 99, 100, 101, 106, 107, 132, 133, 138, 139, 142, 143, 144, 145};
byte dx1[18] = {156, 157, 122, 123, 124, 125, 112, 113, 116, 117, 82, 83, 76, 77, 42, 43, 36, 37};
byte dx2[24] = {128, 129, 152, 153, 154, 155, 122, 123, 116, 117, 82, 83, 74, 75, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37};
byte dx3[22] = {128, 129, 152, 153, 154, 155, 122, 123, 116, 117, 84, 85, 76, 77, 42, 53, 32, 33, 34, 35, 58, 59};
byte dx4[26] = {156, 157, 122, 123, 124, 125, 112, 113, 116, 117, 82, 83, 88, 89, 70, 71, 72, 73, 74, 75, 76, 77, 52, 53, 36, 37};
byte dx5[28] = {150, 151, 152, 153, 154, 155, 156, 157, 128, 129, 110, 111, 84, 85, 86, 87, 88, 89, 76, 77, 42, 43, 30, 31, 32, 33, 34, 35};
byte dx6[24] = {70, 71, 76, 77, 42, 43, 48, 49, 32, 33, 34, 35, 88, 89, 84, 85, 86, 87, 112, 113, 124, 125, 156, 157};
byte dx7[20] = {150, 151, 152, 153, 154, 155, 156, 157, 122, 123, 116, 117, 84, 85, 74, 75, 46, 42, 32, 33};
byte dx8[28] = {70, 71, 76, 77, 42, 43, 48, 49, 32, 33, 34, 35, 84, 85, 86, 87, 110, 111, 116, 117, 122, 123, 128, 129, 152, 153, 154, 155};
byte dx9[28] = {22, 33, 34, 35, 42, 43, 76, 77, 82, 83, 84, 85, 86, 87, 110, 111, 116, 117, 122, 123, 128, 129, 152, 153, 154, 155};
byte dx0[28] = {70, 71, 76, 77, 42, 43, 48, 49, 32, 33, 34, 35, 82, 83, 88, 89, 110, 111, 116, 117, 122, 123, 128, 129, 152, 153, 154, 155};
byte Digitalzahl;
byte Digitalzahlx10;
byte Digitalzahlx1;
//Farbe vorbelegen
byte rot = 0;
byte gruen = 53;
byte blau = 100;
byte weiss = 0;
byte TasterHellblau = 2;
byte TasterRotOben = 4;
byte TasterRotUnten = 5;
byte TasterGelbOben = 6;
byte TasterGelbUnten = 7;
byte TasterBlauOben = 8;
byte TasterBlauUnten = 9;
byte TasterWeisOben = 10;
byte TasterWeisUnten = 11;
byte TasterD12 = 12;
byte TasterD13 = 13;
byte AddierenSekunde;
byte AddierenMinute;
byte AddierenStunde;
byte AddierenTag;
byte AddierenMonat;
byte AddierenJahr;
byte SubtraierenSekunde;
byte SubtrahierenMinute;
byte SubtrahierenStunde;
byte SubtrahierenTag;
byte SubtrahierenMonat;
byte SubtrahierenJahr;
byte BetriebsartWechseln;
unsigned long aktuelleMillis;
unsigned long aktuelleSekunde;
unsigned long vorherigeSekunde;
byte Sekunde;
byte Minute;
byte Stunde;
byte Tag;
byte Monat;
byte Jahr;
byte Jahrhundert;
byte TageszeitSek;
byte Wochentag;
byte Sommerzeit;
int Betriebsart = 1;
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
TageszeitSek = 0;
Stunde = 17;
Minute = 43;
Sekunde = 20;
Tag = 19;
Monat = 12;
Jahr = 21;
Jahrhundert = 20;
Sommerzeit = 0;
pinMode (TasterHellblau, INPUT_PULLUP);
pinMode (TasterRotOben, INPUT_PULLUP);
pinMode (TasterRotUnten, INPUT_PULLUP);
pinMode (TasterGelbOben, INPUT_PULLUP);
pinMode (TasterGelbUnten, INPUT_PULLUP);
pinMode (TasterBlauOben, INPUT_PULLUP);
pinMode (TasterBlauUnten, INPUT_PULLUP);
pinMode (TasterWeisOben, INPUT_PULLUP);
pinMode (TasterWeisUnten, INPUT_PULLUP);
pinMode (TasterD12, INPUT_PULLUP);
pinMode (TasterD13, INPUT_PULLUP);
Serial.begin(9600);
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void loop() {
//-----------------------------------------------
// Spannung einlesen
//-----------------------------------------------
int Analog0 = analogRead(A0);
float Spannung = Analog0 * (5 / 1023.00) * 3.159;
aktuelleMillis = millis();
aktuelleSekunde = aktuelleMillis / 1000;
AddierenSekunde = (digitalRead(TasterWeisOben));
AddierenMinute = (digitalRead(TasterWeisUnten));
AddierenMonat = (digitalRead(TasterBlauUnten));
BetriebsartWechseln = (digitalRead(TasterHellblau));
//-------------------------------------------------------------------------------Sekunde
if (aktuelleSekunde > vorherigeSekunde) {
Minute = Minute + 1;
if (BetriebsartWechseln) {
Betriebsart = Betriebsart + 1;
}
if (Betriebsart > 13) {
Betriebsart = 1;
}
pixels.clear(); // Set all pixel colors to 'off'
Serial.print(Spannung);
Serial.print(" ");
Serial.print(aktuelleMillis);
Serial.print(" Aktuelle Zeit: ");
Serial.print(Stunde);
Serial.print(":");
Serial.print(Minute);
Serial.print(":");
Serial.print(Sekunde);
Serial.print(" ");
Serial.print(Tag);
Serial.print(".");
Serial.print(Monat);
Serial.print(".");
Serial.print(Jahr);
Serial.print(" ");
//------------------------Betriebsart Bayern/Oberpfälzer-Uhr-------------------------------------------------------
if (Betriebsart == 1 || Betriebsart == 3) { //Betriebsart1=Bayernuhr, Betriebsart2=Bieruhr, Betriebsart3=Oberpfälzeruhr, Betriebsart4=Franzuhr, Betriebsart5=BazeUhr; Betriebsart6=LuciaUhr; Betriebsart7=Sekunde, Betriebsart8=Minute; Betriebsart9=Stunde; Betriebsart10=Tag; Betriebsart11=Monat, Betriebsart12=Jahr
Serial.print(" - Es ist "); for (byte i = 0; i < 4; i = i + 1) {
pixels.setPixelColor(Es[i], pixels.Color(rot, gruen, blau, weiss)); //Es ist
} for (byte i = 0; i < 4; i = i + 1) {
pixels.setPixelColor(is[i], pixels.Color(rot, gruen, blau, weiss));
}
if ((Minute > 2 && Minute <= 7) || (Minute > 52 && Minute <= 57) || (Minute > 22 && Minute <= 27) || (Minute > 32 && Minute <= 37)) {
Serial.print("fünf "); //fünf
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(fuenf[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Minute > 7 && Minute <= 12) || (Minute > 47 && Minute <= 52)) {
Serial.print("zehn "); //zehn
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(zehn[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Minute > 42 && Minute <= 47) {
Serial.print("drei"); //drei(viertl)
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(dreiviertl[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Minute > 12 && Minute <= 17) || (Minute > 42 && Minute <= 47)) {
Serial.print("viertl "); //viertl
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(viertl[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Minute > 17 && Minute <= 22) || (Minute > 37 && Minute <= 42)) {
Serial.print("zwanzg "); //zwanzg
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(zwanzg[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Minute > 2 && Minute <= 22) || (Minute > 32 && Minute <= 37)) {
Serial.print("noch "); //noch
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(noch[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Minute > 47 && Minute <= 57) || (Minute > 22 && Minute <= 27) || (Minute > 37 && Minute <= 42)) {
Serial.print("vor "); //vor
for (byte i = 0; i < 6; i = i + 1) {
pixels.setPixelColor(vor[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Minute > 22 && Minute <= 37)) {
Serial.print("hoibe "); //hoibe
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(hoibe[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 1 || Stunde == 13) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 12) || Stunde == 13) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Oans");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(oans[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 2 || Stunde == 14) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 1) || Stunde == 14) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Zwoa");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(zwoa[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 3 || Stunde == 15) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 2) || Stunde == 15) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Drei");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(drei[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 4 || Stunde == 16) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 3) || Stunde == 16) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Viere");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(viere[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 5 || Stunde == 17) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 4) || Stunde == 17) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Fünfe");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(fuenfe[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 6 || Stunde == 18) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 5) || Stunde == 18) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Sechse");
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(sechse[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 7 || Stunde == 19) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 6) || Stunde == 19) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Simme");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(simme[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 8 || Stunde == 20) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 7) || Stunde == 20) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Achte");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(achte[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 9 || Stunde == 21) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 8) || Stunde == 21) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Neine");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(neine[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 10 || Stunde == 22) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 9) || Stunde == 22) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Zehne");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(zehne[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 11 || Stunde == 23) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 10) || Stunde == 23) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Elfe");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(eife[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if ((Stunde == 12 || Stunde == 24) && (!(Minute > 22 || (Betriebsart == 1 && (Minute > 12 && Minute <= 17)))) || ((Stunde == 11) || Stunde == 24) && (Minute > 22 || (Betriebsart == 3 && (Minute > 12 && Minute <= 17)))) {
Serial.print("Zweife");
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(zweife[i], pixels.Color(rot, gruen, blau, weiss));
}
}
}
//--------- Betriebsart Uhrzeit Einstellen----------------------------------------------------------------------
if (Betriebsart > 6 && Betriebsart <= 13) {
if (Betriebsart == 7) {
if (AddierenSekunde) {
Sekunde = Sekunde + 1;
} Digitalzahl = Sekunde;
pixels.setPixelColor(200, pixels.Color(rot, gruen, blau, weiss));
pixels.setPixelColor(201, pixels.Color(rot, gruen, blau, weiss));
}
if (Betriebsart == 8) {
if (AddierenMinute) {
Minute = Minute + 1;
} Digitalzahl = Minute;
pixels.setPixelColor(202, pixels.Color(rot, gruen, blau, weiss));
pixels.setPixelColor(203, pixels.Color(rot, gruen, blau, weiss));
}
if (Betriebsart == 9) {
if (AddierenStunde) {
Stunde = Stunde + 1;
} Digitalzahl = Stunde;
pixels.setPixelColor(204, pixels.Color(rot, gruen, blau, weiss));
pixels.setPixelColor(205, pixels.Color(rot, gruen, blau, weiss));
}
if (Betriebsart == 10) {
if (AddierenTag) {
Tag = Tag + 1;
Wochentag = Wochentag + 1;
} Digitalzahl = Tag;
pixels.setPixelColor(206, pixels.Color(rot, gruen, blau, weiss));
pixels.setPixelColor(207, pixels.Color(rot, gruen, blau, weiss));
}
if (Betriebsart == 11) {
if (AddierenMonat) {
Monat = Monat + 1;
} Digitalzahl = Monat;
pixels.setPixelColor(208, pixels.Color(rot, gruen, blau, weiss));
pixels.setPixelColor(209, pixels.Color(rot, gruen, blau, weiss));
}
if (Betriebsart == 12) {
if (AddierenJahr) {
Jahr = Jahr + 1;
} Digitalzahl = Jahr;
pixels.setPixelColor(210, pixels.Color(rot, gruen, blau, weiss));
pixels.setPixelColor(211, pixels.Color(rot, gruen, blau, weiss));
}
if (Betriebsart == 13) {
Digitalzahl = Jahrhundert;
pixels.setPixelColor(212, pixels.Color(rot, gruen, blau, weiss));
pixels.setPixelColor(213, pixels.Color(rot, gruen, blau, weiss));
}
Digitalzahlx10 = Digitalzahl / 10;
Digitalzahlx1 = (Digitalzahl - (Digitalzahlx10 * 10));
Serial.print (Digitalzahlx10);
Serial.print (Digitalzahlx1);
if (Digitalzahlx10 == 0) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(d0x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 1) {
for (byte i = 0; i < 18; i = i + 1) {
pixels.setPixelColor(d1x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 2) {
for (byte i = 0; i < 24; i = i + 1) {
pixels.setPixelColor(d2x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 3) {
for (byte i = 0; i < 22; i = i + 1) {
pixels.setPixelColor(d3x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 4) {
for (byte i = 0; i < 26; i = i + 1) {
pixels.setPixelColor(d4x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 5) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(d5x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 6) {
for (byte i = 0; i < 24; i = i + 1) {
pixels.setPixelColor(d6x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 7) {
for (byte i = 0; i < 20; i = i + 1) {
pixels.setPixelColor(d7x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 8) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(d8x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx10 == 9) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(d9x[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 0) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(dx0[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 1) {
for (byte i = 0; i < 18; i = i + 1) {
pixels.setPixelColor(dx1[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 2) {
for (byte i = 0; i < 24; i = i + 1) {
pixels.setPixelColor(dx2[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 3) {
for (byte i = 0; i < 22; i = i + 1) {
pixels.setPixelColor(dx3[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 4) {
for (byte i = 0; i < 26; i = i + 1) {
pixels.setPixelColor(dx4[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 5) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(dx5[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 6) {
for (byte i = 0; i < 24; i = i + 1) {
pixels.setPixelColor(dx6[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 7) {
for (byte i = 0; i < 20; i = i + 1) {
pixels.setPixelColor(dx7[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 8) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(dx8[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (Digitalzahlx1 == 9) {
for (byte i = 0; i < 28; i = i + 1) {
pixels.setPixelColor(dx9[i], pixels.Color(rot, gruen, blau, weiss));
}
}
}
//--------- Betriebsart Bieruhr----------------------------------------------------------------------
if (Betriebsart == 2) {
Serial.print(" - Es ist kurz vor hoibe Bier");
for (byte i = 0; i < 4; i = i + 1) {
pixels.setPixelColor(Es[i], pixels.Color(rot, gruen, blau, weiss));
}
for (byte i = 0; i < 4; i = i + 1) {
pixels.setPixelColor(is[i], pixels.Color(rot, gruen, blau, weiss)); //Es ist
}
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(kurz[i], pixels.Color(rot, gruen, blau, weiss));
}
for (byte i = 0; i < 6; i = i + 1) {
pixels.setPixelColor(vor[i], pixels.Color(rot, gruen, blau, weiss));
}
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(hoibe[i], pixels.Color(rot, gruen, blau, weiss));
}
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(bier[i], pixels.Color(rot, gruen, blau, weiss));
}
}
//--------- Betriebsart Franzuhr----------------------------------------------------------------------
if (Betriebsart == 4) {
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(franz[i], pixels.Color(rot, gruen, blau, weiss));
}
Serial.print ("Franz ");
if (((Monat >= 2) && (Jahr - 21 == 1)) || ((Jahr - 21 == 2) && (Monat == 1))) {
Serial.print("Oans");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(oans[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 2)) || ((Jahr - 21 == 3) && (Monat == 1))) {
Serial.print("Zwoa");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(zwoa[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 3)) || ((Jahr - 21 == 4) && (Monat == 1))) {
Serial.print("Drei");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(drei[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 4)) || ((Jahr - 21 == 5) && (Monat == 1))) {
Serial.print("Viere");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(viere[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 5)) || ((Jahr - 21 == 6) && (Monat == 1))) {
Serial.print("Fünfe");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(fuenfe[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 6)) || ((Jahr - 21 == 7) && (Monat == 1))) {
Serial.print("Sechse");
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(sechse[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 7)) || ((Jahr - 21 == 8) && (Monat == 1))) {
Serial.print("Simme");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(simme[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 8)) || ((Jahr - 21 == 9) && (Monat == 1))) {
Serial.print("Achte");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(achte[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 9)) || ((Jahr - 21 == 10) && (Monat == 1))) {
Serial.print("Neine");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(neine[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 10)) || ((Jahr - 21 == 11) && (Monat == 1))) {
Serial.print("Zehne");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(zehne[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 11)) || ((Jahr - 21 == 12) && (Monat == 1))) {
Serial.print("Elfe");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(eife[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 12)) || ((Jahr - 21 == 13) && (Monat == 1))) {
Serial.print("Zweife");
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(zweife[i], pixels.Color(rot, gruen, blau, weiss));
}
}
}
//--------- Betriebsart Bazeuhr----------------------------------------------------------------------
if (Betriebsart == 5) {
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(baze[i], pixels.Color(rot, gruen, blau, weiss));
}
Serial.print ("Baze ");
if (((Monat >= 2) && (Jahr - 21 == 1)) || ((Jahr - 21 == 2) && (Monat == 1))) {
Serial.print("Oans");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(oans[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 2)) || ((Jahr - 21 == 3) && (Monat == 1))) {
Serial.print("Zwoa");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(zwoa[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 3)) || ((Jahr - 21 == 4) && (Monat == 1))) {
Serial.print("Drei");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(drei[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 4)) || ((Jahr - 21 == 5) && (Monat == 1))) {
Serial.print("Viere");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(viere[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 5)) || ((Jahr - 21 == 6) && (Monat == 1))) {
Serial.print("Fünfe");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(fuenfe[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 6)) || ((Jahr - 21 == 7) && (Monat == 1))) {
Serial.print("Sechse");
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(sechse[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 7)) || ((Jahr - 21 == 8) && (Monat == 1))) {
Serial.print("Simme");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(simme[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 8)) || ((Jahr - 21 == 9) && (Monat == 1))) {
Serial.print("Achte");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(achte[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 9)) || ((Jahr - 21 == 10) && (Monat == 1))) {
Serial.print("Neine");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(neine[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 10)) || ((Jahr - 21 == 11) && (Monat == 1))) {
Serial.print("Zehne");
for (byte i = 0; i < 10; i = i + 1) {
pixels.setPixelColor(zehne[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 11)) || ((Jahr - 21 == 12) && (Monat == 1))) {
Serial.print("Elfe");
for (byte i = 0; i < 8; i = i + 1) {
pixels.setPixelColor(eife[i], pixels.Color(rot, gruen, blau, weiss));
}
}
if (((Monat >= 2) && (Jahr - 21 == 12)) || ((Jahr - 21 == 13) && (Monat == 1))) {
Serial.print("Zweife");
for (byte i = 0; i < 12; i = i + 1) {
pixels.setPixelColor(zweife[i], pixels.Color(rot, gruen, blau, weiss));
}
}
}
//--------- Betriebsart Luziauhr----------------------------------------------------------------------
if (Betriebsart == 6) {
Betriebsart = 7;
}
//--------- Ergebnisse ausgeben----------------------------------------------------------------------
Serial.print(" ");
Serial.print(Betriebsart);
Serial.println();
pixels.show(); // Send the updated pixel colors to the hardware.
vorherigeSekunde = vorherigeSekunde + 1;
Sekunde = Sekunde + 1;
}
//--------------------------------------------------------------------------------Minute
if (Sekunde >= 60) {
Sekunde = 0;
Minute = Minute + 1;
}
//--------------------------------------------------------------------------------Tag
if ((Minute >= 60) && (Sekunde >= 3)) {
Minute = 0;
Sekunde = 0;
Stunde = Stunde + 1;
}
if (Minute >= 61) {
Minute = 1;
}
if (((Stunde >= 24) && (Minute >= 59) && (Sekunde > 48)) || (Stunde < 1)) {
Stunde = 1;
Minute = 0;
Sekunde = 0;
Tag = Tag + 1;
Wochentag = Wochentag + 1;
}
if (Stunde >= 25) {
Stunde = 1;
}
if (Tag >= 32 && (Monat == 1 || Monat == 3 || Monat == 5 || Monat == 7 || Monat == 8 || Monat == 10 || Monat == 12)) {
Tag = 1;
Monat = Monat + 1;
}
if (Tag >= 31 && (Monat == 4 || Monat == 6 || Monat == 9 || Monat == 11)) {
Tag = 1;
Monat = Monat + 1;
}
if (Tag >= 29 && !(Jahr % 4 == 0) && (Monat == 2)) {
Tag = 1;
Monat = Monat + 1;
}
if (Tag >= 30 && (Monat == 2)) {
Tag = 1;
Monat = Monat + 1;
}
if (Monat >= 13) {
Monat = 1;
Jahr = Jahr + 1;
}
if (Jahr > 99) {
Jahr = 0;
Jahrhundert = Jahrhundert + 1;
}
//--------------------------------------------------------------------------------
// Winterzeit & Sommerzeit
//--------------------------------------------------------------------------------
if (Monat >= 3) {
Wochentag = ((Tag + (round((26 * (Monat - 2)) - 2) / 10) + Jahr + (round(Jahr / 4)) + (round(Jahrhundert / 4) - (2 * Jahrhundert))) % 7);
}
if ((((Monat == 3) && (Wochentag == 0) && (Tag >= 25) && (Stunde >= 2)) || ((Monat > 3) && (Monat < 10))) && (Sommerzeit == 0)) {
Stunde = Stunde + 1;
Sommerzeit = 1;
}
if ((((Monat == 10) && (Wochentag == 0) && (Tag >= 25) && (Stunde >= 3)) || ((Monat < 3) || (Monat > 10))) && (Sommerzeit == 1)) {
Stunde = Stunde - 1;
Sommerzeit = 0;
}
}