Page 151 - BiDiB und iTrain
P. 151

DMX- Beleuchtung für Modellbahn      151






                      case 20:
                         Farbe_Abend(90,100,0,0,0,0);
                         break;
                      case 21:
                         Farbe_Abend(80,90,0,0,0,0);
                         break;
                      case 22:
                         Farbe_Abend(30,80,0,0,0,0);
                         break;
                      case 23:
                         Farbe_Abend(0,30,0,0,0,0);
                         break;
                      case 24:
                         Farbe_Abend(0,0,0,0,0,0);

                      }
                    }

                    // Aufhellen des Lichtes      sind die Werte die sich von einer Stunde zur nächsten ansteigen

                    void Farbe_Morgen(unsigned int rO, unsigned int rU, unsigned int gO, unsigned int gU,unsigned int bO,
               unsigned int bU){
                      int r = rO - rU;
                      int g = gO - gU;
                      int b = bO - bU;
                      int a = 0;
                      int c = 0;
                      int d = 0;
                    int maxWert = r;                  // ermittel der maximalen Durchlaufe der for-Schleife
                    if (maxWert < g){                 // er wird mit den größten Wert von r, b und g ermittelt
                      maxWert = g;                    // es könnte somit 255 (größter Schritt) * (50+50+50+500 - siehe for schleife
               delay)
                      }                               // im Zeitdurchlauf werden = 165750msec werden. Somit sollte der geringste Wert
               für die Stunde
                    if (maxWert < b){                 // (Var Zeit) nicht kleiner als 180000msec (2,5 min sein) Somit dauert ein Tag
               2,5 min * 24 = 60 min
                      maxWert = b;                    // Somit dauert ein Tag eine Stunde auf der Modellbahn - bei der
               Farbeinstellung (wie Vorgabe) kann man bis 10000ms rundergehen.
                      }

                      for (maxWert; maxWert > 1 ; maxWert=maxWert-5){

                        if (r>0 ){
                          a = a+5;                     // hochzählen bis maxWert mit dem wert macht man die stufung fest feiner als 5
               erhöht die Wertezeit zwischen den einzelen Stunden
                          r = r-5;                     // den Farbwert der dargestellt wird um 5 veringern um die forschleife bei 0 zu
               beeneden
                          DmxSimple.write(1,(a+rU));   // ROT einschalten
                          delay(50);
                          }
                        if (g>0 ){
                          c = c+5;
                          g = g-5;
                          DmxSimple.write(2,(c+gU));  // GRÜN einschalten
                          delay(50);
                          }
                        if (b>0 ){
   146   147   148   149   150   151   152   153   154   155   156