Page 197 - BiDiB und iTrain
P. 197
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