Guest User

Untitled

a guest
Feb 9th, 2017
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.63 KB | None | 0 0
  1. #include "Wire.h"
  2. #include "RTClib.h"
  3. #include <FastLED.h>
  4. #include "IRremote.h"
  5. #include <math.h>
  6.  
  7. #define NUM_LEDS 150
  8. #define DATA_PIN 3
  9. #define LENGTH(x) (byte)(sizeof(x)/sizeof(x[0]))
  10.  
  11. // IR Empfänger
  12. int receiver = 11;
  13.  
  14. IRrecv irrecv(receiver);     // create instance of 'irrecv'
  15. decode_results results;      // create instance of 'decode_results'
  16. RTC_DS1307 RTC;
  17.  
  18. // RGB Stripe
  19. CRGB leds[NUM_LEDS];
  20.  
  21. // Wörter
  22. const byte es[] = { 0, 1 };
  23. const byte ist[] = { 3, 4, 5 };
  24. const byte fuenf[] = { 7, 8, 9, 10 };
  25. const byte zehn[] = { 18, 19, 20, 21 };
  26. const byte zwanzig[] = { 11, 12, 13, 14, 15, 16, 17 };
  27. const byte dreiviertel[] = { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 };
  28. const byte viertel[] = { 26, 27, 28, 29, 30, 31, 32 };
  29. const byte vor[] = { 41, 42, 43 };
  30. const byte nach[] = { 33, 34, 35, 36 };
  31. const byte halb[] = { 44, 45, 46, 47 };
  32. const byte elf[] = { 49, 50, 51 };
  33. const byte fuenf2[] = { 51, 52, 53, 54 };
  34. const byte ein[] = { 62, 63, 64 };
  35. const byte eins[] = { 62, 63, 64, 65 };
  36. const byte zwei[] = { 55, 56, 57, 58 };
  37. const byte drei[] = { 66, 67, 68, 69 };
  38. const byte vier[] = { 73, 74, 75, 76 };
  39. const byte sechs[] = { 83, 84, 85, 86, 87 };
  40. const byte acht[] = { 77, 78, 79, 80 };
  41. const byte sieben[] = { 88, 89, 90, 91, 92, 93 };
  42. const byte zwoelf[] = { 94, 95, 96, 97, 98 };
  43. const byte zehn2[] = { 106, 107, 108, 109 };
  44. const byte neun[] = { 103, 104, 105, 106 };
  45. const byte uhr[] = { 99, 100, 101 };
  46. /*
  47. const byte zahl10[] = { 44,45,46,47,65,62,66,69,87,84,88,89,90,91 };
  48. const byte zahl11[] = { 47,62,63,67,69,84,91 };
  49. const byte zahl12[] = { 44,45,46,47,62,66,67,68,69,87,88,89,90,91 };
  50. const byte zahl13[] = { 44,45,46,47,62,66,67,68,69,84,88,89,90,91 };
  51. const byte zahl14[] = { 44,63,65,66,67,68,69,85,90 };
  52. const byte zahl15[] = { 44,45,46,47,65,66,67,68,69,84,88,89,90,91 };
  53. const byte zahl16[] = { 44,45,46,47,65,66,67,68,69,84,87,88,89,90,91 };
  54. const byte zahl17[] = { 44,45,46,47,62,69,84,91 };
  55. const byte zahl18[] = { 44,45,46,47,62,65,66,67,68,69,84,87,88,89,90,91 };
  56. const byte zahl19[] = { 44,45,46,47,62,65,66,67,68,69,84,91 };
  57. */
  58.  
  59. int Mode = 1;
  60. DateTime zeit;
  61. int farbe = 110;
  62. int intensity = 20;
  63.  
  64. void setup() {
  65.   Serial.begin(9600);
  66.   Wire.begin();
  67.   RTC.begin();
  68.   if (!RTC.isrunning()) { Serial.println("RTC is NOT running!"); RTC.adjust(DateTime(__DATE__, __TIME__)); }   //== initialisation TinyRTC
  69.   irrecv.enableIRIn(); // Start the receiver
  70.   FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // FastLED init
  71.   FastLED.setMaxPowerInVoltsAndMilliamps(5,1000); // FastLED init
  72. }
  73.  
  74. void loop() {
  75.  
  76. zeit = RTC.now();
  77. if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); } // IR Empfang?
  78.    
  79.    if (Mode == 0)  // NORMALER UHR-ANZEIGE-MODUS
  80.    {
  81.       ZeigeWort(es, LENGTH(es), farbe, intensity);
  82.       ZeigeWort(ist, LENGTH(ist), farbe, intensity);
  83.      
  84.       // Minuten
  85.      
  86.       //if (zeit.minute() >= 1) { ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
  87.       if (zeit.minute() >= 5 && zeit.minute() < 10) { ZeigeWort(fuenf, LENGTH(fuenf), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
  88.       if (zeit.minute() >= 10 && zeit.minute() < 15) { ZeigeWort(zehn, LENGTH(zehn), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
  89.       if (zeit.minute() >= 15 && zeit.minute() < 20) { ZeigeWort(viertel, LENGTH(viertel), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
  90.       if (zeit.minute() >= 20 && zeit.minute() < 25) { ZeigeWort(zwanzig, LENGTH(zwanzig), farbe, intensity); ZeigeWort(nach, LENGTH(nach), farbe, intensity); }
  91.       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); }
  92.       if (zeit.minute() >= 30 && zeit.minute() < 34) { ZeigeWort(halb, LENGTH(halb), farbe, intensity); }
  93.       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); }
  94.       if (zeit.minute() >= 40 && zeit.minute() < 45) { ZeigeWort(zwanzig, LENGTH(zwanzig), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
  95.       if (zeit.minute() >= 45 && zeit.minute() < 50) { ZeigeWort(viertel, LENGTH(viertel), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
  96.       if (zeit.minute() >= 50 && zeit.minute() < 55) { ZeigeWort(zehn, LENGTH(zehn), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
  97.       if (zeit.minute() >= 55 && zeit.minute() <= 59) { ZeigeWort(fuenf, LENGTH(fuenf), farbe, intensity); ZeigeWort(vor, LENGTH(vor), farbe, intensity); }
  98.  
  99.       // Stunden
  100.       if (zeit.hour() == 0 && zeit.minute() >= 25) { ZeigeWort(eins, LENGTH(eins), farbe, intensity); }
  101.       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); }
  102.       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); }
  103.       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); }
  104.       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); }
  105.       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); }
  106.       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); }
  107.       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); }
  108.       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); }
  109.       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); }
  110.       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); }
  111.       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); }
  112.       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); }
  113.       if (zeit.minute() == 0) ZeigeWort(uhr, LENGTH(uhr), farbe, intensity);
  114.       Serial.println();
  115.    }
  116.    
  117.    if (Mode == 1)  // ANZEIGE TEMPERATUR
  118.    {
  119.     float read_temp = round(kty());
  120.     int zehner = ((int)read_temp / 10) % 10;
  121.     int einer = (int)read_temp % 10;
  122.        
  123.    }
  124. }
  125.  
  126. void allesaus()
  127. {
  128.  
  129.   FastLED.clear();
  130.   FastLED.show();
  131.  
  132. }
  133. void ZeigeWort(const byte *wort, byte len, int hue, byte intensity) //
  134. {
  135.  
  136.   for(int i = 0; i < len; i++)
  137.   {
  138.     CHSV led;
  139.     led.hue = hue;
  140.     led.saturation = 255;
  141.     led.value = intensity;
  142.    
  143.     hsv2rgb_spectrum(led, leds[wort[i]]);
  144.   }
  145.   FastLED.show();
  146.  
  147.  
  148. }
  149.  
  150. void translateIR() // takes action based on IR code received
  151.  
  152. // describing Remote IR codes
  153.  
  154. {
  155.   switch(results.value)
  156.   {
  157.  
  158.   case 0xFF629D: Serial.println(" FORWARD"); break;
  159.   case 0xFF22DD: Serial.println(" LEFT");    break;
  160.   case 0xFF02FD: Serial.println(" -OK-");    break;
  161.   case 0xFFC23D: Serial.println(" RIGHT");   break;
  162.   case 0xFFA857: Serial.println(" REVERSE"); break;
  163.   case 0xFF6897: Serial.println(" 1");    break;
  164.   case 0xFF9867: Serial.println(" 2");    break;
  165.   case 0xFFB04F: Serial.println(" 3");    break;
  166.   case 0xFF30CF: Serial.println(" 4");    break;
  167.   case 0xFF18E7: Serial.println(" 5");    break;
  168.   case 0xFF7A85: Serial.println(" 6");    break;
  169.   case 0xFF10EF: Serial.println(" 7");    break;
  170.   case 0xFF38C7: Serial.println(" 8");    break;
  171.   case 0xFF5AA5: Serial.println(" 9");    break;
  172.   case 0xFF42BD: Serial.println(" *");    break;
  173.   case 0xFF4AB5: Serial.println(" 0");    break;
  174.   case 0xFF52AD: Serial.println(" #");    break;
  175.   case 0xFFFFFFFF: Serial.println(" REPEAT");break;  
  176.  
  177.   default:
  178.     Serial.print(" other button   ");
  179.     Serial.println(results.value, HEX);
  180.  
  181.   }
  182.  
  183.   delay(100); // Do not get immediate repeat
  184.  
  185.  
  186. }
  187. float kty() {
  188.          float temp = 82;
  189.          ADCSRA = 0x00;
  190.          ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
  191.          ADMUX = 0x00;
  192.          ADMUX = (1<<REFS0);
  193.          ADMUX |= 0;  
  194.  
  195.          for (int i=0;i<=64;i++)
  196.          {
  197.                  ADCSRA|=(1<<ADSC);
  198.                  while (ADCSRA & (1<<ADSC));
  199.                  temp += (ADCL + ADCH*256);
  200.          }
  201.  
  202.          temp /= 101;
  203.          temp -= 156;
  204.        return (temp);
  205.  }
Add Comment
Please, Sign In to add comment