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 ){