Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Wire.h"
- #include "RTClib.h"
- #include <FastLED.h>
- #include "IRremote.h"
- #include <math.h>
- #define NUM_LEDS 150
- #define DATA_PIN 3
- #define LENGTH(x) (byte)(sizeof(x)/sizeof(x[0]))
- // IR Empfänger
- int receiver = 11;
- IRrecv irrecv(receiver); // create instance of 'irrecv'
- decode_results results; // create instance of 'decode_results'
- RTC_DS1307 RTC;
- // RGB Stripe
- CRGB leds[NUM_LEDS];
- // Wörter
- const byte es[] = { 0, 1 };
- const byte ist[] = { 3, 4, 5 };
- const byte fuenf[] = { 7, 8, 9, 10 };
- const byte zehn[] = { 18, 19, 20, 21 };
- const byte zwanzig[] = { 11, 12, 13, 14, 15, 16, 17 };
- const byte dreiviertel[] = { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 };
- const byte viertel[] = { 26, 27, 28, 29, 30, 31, 32 };
- const byte vor[] = { 41, 42, 43 };
- const byte nach[] = { 33, 34, 35, 36 };
- const byte halb[] = { 44, 45, 46, 47 };
- const byte elf[] = { 49, 50, 51 };
- const byte fuenf2[] = { 51, 52, 53, 54 };
- const byte ein[] = { 62, 63, 64 };
- const byte eins[] = { 62, 63, 64, 65 };
- const byte zwei[] = { 55, 56, 57, 58 };
- const byte drei[] = { 66, 67, 68, 69 };
- const byte vier[] = { 73, 74, 75, 76 };
- const byte sechs[] = { 83, 84, 85, 86, 87 };
- const byte acht[] = { 77, 78, 79, 80 };
- const byte sieben[] = { 88, 89, 90, 91, 92, 93 };
- const byte zwoelf[] = { 94, 95, 96, 97, 98 };
- const byte zehn2[] = { 106, 107, 108, 109 };
- const byte neun[] = { 103, 104, 105, 106 };
- const byte uhr[] = { 99, 100, 101 };
- /*
- const byte zahl10[] = { 44,45,46,47,65,62,66,69,87,84,88,89,90,91 };
- const byte zahl11[] = { 47,62,63,67,69,84,91 };
- const byte zahl12[] = { 44,45,46,47,62,66,67,68,69,87,88,89,90,91 };
- const byte zahl13[] = { 44,45,46,47,62,66,67,68,69,84,88,89,90,91 };
- const byte zahl14[] = { 44,63,65,66,67,68,69,85,90 };
- const byte zahl15[] = { 44,45,46,47,65,66,67,68,69,84,88,89,90,91 };
- const byte zahl16[] = { 44,45,46,47,65,66,67,68,69,84,87,88,89,90,91 };
- const byte zahl17[] = { 44,45,46,47,62,69,84,91 };
- const byte zahl18[] = { 44,45,46,47,62,65,66,67,68,69,84,87,88,89,90,91 };
- const byte zahl19[] = { 44,45,46,47,62,65,66,67,68,69,84,91 };
- */
- int Mode = 1;
- DateTime zeit;
- int farbe = 110;
- int intensity = 20;
- void setup() {
- Serial.begin(9600);
- Wire.begin();
- RTC.begin();
- if (!RTC.isrunning()) { Serial.println("RTC is NOT running!"); RTC.adjust(DateTime(__DATE__, __TIME__)); } //== initialisation TinyRTC
- irrecv.enableIRIn(); // Start the receiver
- FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // FastLED init
- FastLED.setMaxPowerInVoltsAndMilliamps(5,1000); // FastLED init
- }
- void loop() {
- zeit = RTC.now();
- if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); } // IR Empfang?
- if (Mode == 0) // NORMALER UHR-ANZEIGE-MODUS
- {
- ZeigeWort(es, LENGTH(es), farbe, intensity);
- ZeigeWort(ist, LENGTH(ist), farbe, intensity);
- // Minuten
- //if (zeit.minute() >= 1) { ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
- if (zeit.minute() >= 5 && zeit.minute() < 10) { ZeigeWort(fuenf, LENGTH(fuenf), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
- if (zeit.minute() >= 10 && zeit.minute() < 15) { ZeigeWort(zehn, LENGTH(zehn), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
- if (zeit.minute() >= 15 && zeit.minute() < 20) { ZeigeWort(viertel, LENGTH(viertel), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
- if (zeit.minute() >= 20 && zeit.minute() < 25) { ZeigeWort(zwanzig, LENGTH(zwanzig), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
- if (zeit.minute() >= 25 && zeit.minute() < 30) { ZeigeWort(fuenf, LENGTH(fuenf), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); ZeigeWort(halb, LENGTH(halb), farbe, intensity); }
- if (zeit.minute() >= 30 && zeit.minute() < 34) { ZeigeWort(halb, LENGTH(halb), farbe, intensity); }
- if (zeit.minute() >= 35 && zeit.minute() < 40) { ZeigeWort(fuenf, LENGTH(fuenf), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); ZeigeWort(halb, LENGTH(halb), farbe, intensity); }
- if (zeit.minute() >= 40 && zeit.minute() < 45) { ZeigeWort(zwanzig, LENGTH(zwanzig), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
- if (zeit.minute() >= 45 && zeit.minute() < 50) { ZeigeWort(viertel, LENGTH(viertel), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
- if (zeit.minute() >= 50 && zeit.minute() < 55) { ZeigeWort(zehn, LENGTH(zehn), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
- if (zeit.minute() >= 55 && zeit.minute() <= 59) { ZeigeWort(fuenf, LENGTH(fuenf), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
- // Stunden
- if (zeit.hour() == 0 && zeit.minute() >= 25) { ZeigeWort(eins, LENGTH(eins), farbe, intensity); }
- if (zeit.hour() == 1 && zeit.minute() == 0) { ZeigeWort(ein, LENGTH(ein), farbe, intensity); } if (zeit.hour() == 1 && zeit.minute() >= 1 && zeit.minute() <= 29) { ZeigeWort(eins, LENGTH(eins), farbe, intensity); } if (zeit.hour() == 1 && zeit.minute() >= 25) { ZeigeWort(zwei, LENGTH(zwei), farbe, intensity); }
- if (zeit.hour() == 2 && zeit.minute() < 24) { ZeigeWort(zwei, LENGTH(zwei), farbe, intensity); } if (zeit.hour() == 2 && zeit.minute() >= 25) { ZeigeWort(drei, LENGTH(drei), farbe, intensity); }
- if (zeit.hour() == 3 && zeit.minute() < 24) { ZeigeWort(drei, LENGTH(drei), farbe, intensity); } if (zeit.hour() == 3 && zeit.minute() >= 25) { ZeigeWort(vier, LENGTH(vier), farbe, intensity); }
- if (zeit.hour() == 4 && zeit.minute() < 24) { ZeigeWort(vier, LENGTH(vier), farbe, intensity); } if (zeit.hour() == 4 && zeit.minute() >= 25) { ZeigeWort(fuenf2, LENGTH(fuenf2), farbe, intensity); }
- if (zeit.hour() == 5 && zeit.minute() < 24) { ZeigeWort(fuenf2, LENGTH(fuenf2), farbe, intensity); } if (zeit.hour() == 5 && zeit.minute() >= 25) { ZeigeWort(sechs, LENGTH(sechs), farbe, intensity); }
- if (zeit.hour() == 6 && zeit.minute() < 24) { ZeigeWort(sechs, LENGTH(sechs), farbe, intensity); } if (zeit.hour() == 6 && zeit.minute() >= 25) { ZeigeWort(sieben, LENGTH(sieben), farbe, intensity); }
- if (zeit.hour() == 7 && zeit.minute() < 24) { ZeigeWort(sieben, LENGTH(sieben), farbe, intensity); } if (zeit.hour() == 7 && zeit.minute() >= 25) { ZeigeWort(acht, LENGTH(acht), farbe, intensity); }
- if (zeit.hour() == 8 && zeit.minute() < 24) { ZeigeWort(acht, LENGTH(acht), farbe, intensity); } if (zeit.hour() == 8 && zeit.minute() >= 25) { ZeigeWort(neun, LENGTH(neun), farbe, intensity); }
- if (zeit.hour() == 9 && zeit.minute() < 24) { ZeigeWort(neun, LENGTH(neun), farbe, intensity); } if (zeit.hour() == 9 && zeit.minute() >= 25) { ZeigeWort(zehn2, LENGTH(zehn2), farbe, intensity); }
- if (zeit.hour() == 10 && zeit.minute() < 29) { ZeigeWort(zehn2, LENGTH(zehn2), farbe, intensity); } if (zeit.hour() == 10 && zeit.minute() >= 25) { ZeigeWort(elf, LENGTH(elf), farbe, intensity); }
- if (zeit.hour() == 11 && zeit.minute() < 29) { ZeigeWort(elf, LENGTH(elf), farbe, intensity); } if (zeit.hour() == 11 && zeit.minute() >= 25) { ZeigeWort(zwoelf, LENGTH(zwoelf), farbe, intensity); }
- if (zeit.hour() == 12 && zeit.minute() < 29) { ZeigeWort(zwoelf, LENGTH(zwoelf), farbe, intensity); } if (zeit.hour() == 12 && zeit.minute() >= 25) { ZeigeWort(eins, LENGTH(eins), farbe, intensity); }
- if (zeit.minute() == 0) ZeigeWort(uhr, LENGTH(uhr), farbe, intensity);
- Serial.println();
- }
- if (Mode == 1) // ANZEIGE TEMPERATUR
- {
- float read_temp = round(kty());
- int zehner = ((int)read_temp / 10) % 10;
- int einer = (int)read_temp % 10;
- }
- }
- void allesaus()
- {
- FastLED.clear();
- FastLED.show();
- }
- void ZeigeWort(const byte *wort, byte len, int hue, byte intensity) //
- {
- for(int i = 0; i < len; i++)
- {
- CHSV led;
- led.hue = hue;
- led.saturation = 255;
- led.value = intensity;
- hsv2rgb_spectrum(led, leds[wort[i]]);
- }
- FastLED.show();
- }
- void translateIR() // takes action based on IR code received
- // describing Remote IR codes
- {
- switch(results.value)
- {
- case 0xFF629D: Serial.println(" FORWARD"); break;
- case 0xFF22DD: Serial.println(" LEFT"); break;
- case 0xFF02FD: Serial.println(" -OK-"); break;
- case 0xFFC23D: Serial.println(" RIGHT"); break;
- case 0xFFA857: Serial.println(" REVERSE"); break;
- case 0xFF6897: Serial.println(" 1"); break;
- case 0xFF9867: Serial.println(" 2"); break;
- case 0xFFB04F: Serial.println(" 3"); break;
- case 0xFF30CF: Serial.println(" 4"); break;
- case 0xFF18E7: Serial.println(" 5"); break;
- case 0xFF7A85: Serial.println(" 6"); break;
- case 0xFF10EF: Serial.println(" 7"); break;
- case 0xFF38C7: Serial.println(" 8"); break;
- case 0xFF5AA5: Serial.println(" 9"); break;
- case 0xFF42BD: Serial.println(" *"); break;
- case 0xFF4AB5: Serial.println(" 0"); break;
- case 0xFF52AD: Serial.println(" #"); break;
- case 0xFFFFFFFF: Serial.println(" REPEAT");break;
- default:
- Serial.print(" other button ");
- Serial.println(results.value, HEX);
- }
- delay(100); // Do not get immediate repeat
- }
- float kty() {
- float temp = 82;
- ADCSRA = 0x00;
- ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
- ADMUX = 0x00;
- ADMUX = (1<<REFS0);
- ADMUX |= 0;
- for (int i=0;i<=64;i++)
- {
- ADCSRA|=(1<<ADSC);
- while (ADCSRA & (1<<ADSC));
- temp += (ADCL + ADCH*256);
- }
- temp /= 101;
- temp -= 156;
- return (temp);
- }
Add Comment
Please, Sign In to add comment