Page 149 - BiDiB und iTrain
P. 149
DMX- Beleuchtung für Modellbahn 149
Das Programm
// RS_485_DMX512_Controller_Teil_1 Tobias Kuch GPL 3.0
#include <DmxSimple.h>
int Stunde; //Variable für die Stunde in case
int Zeit = 8000; //Zeit für eine Stunde
int Auto = 1;
int x0 = 0;
int x1 = 0;
int x2 = 0;
int x3 = 0;
int xsum;
void setup() {
pinMode(8, INPUT_PULLUP); //AUTO An/Aus
pinMode(4, INPUT_PULLUP); //Bit2Hoch0
pinMode(5, INPUT_PULLUP); //Bit2Hoch1
pinMode(6, INPUT_PULLUP); //Bit2Hoch2
pinMode(7, INPUT_PULLUP); //Bit2Hoch3
DmxSimple.usePin(3); //ist die Ausgabe auf dem Arduino für DMX - in der DmxSimple.h festgelegt
DmxSimple.maxChannel(512); // max 512 Kanäle
DmxSimple.write(4, 0); // Kanal 4 full Color
DmxSimple.write(5, 0); // Kanal 5 Strobe und Speed
DmxSimple.write(6, 0); // Kanal 6 Modi 1- RGB control 2-Color fade 3- color change 4- musik-
controlled
Serial.begin(9600); // wenn ich den Monitor für die Fehlersuche benötige
}
void loop() {
Serial.println(Stunde);
Serial.println(Auto);
//Serial.println(x0);
Auto = digitalRead(8); //Auto = 1 Interne Zeit 0 Bit-Eingabe
//Bit-Eingabe und Summenbildung
x0 = digitalRead(4);
x1 = digitalRead(5);
x2 = digitalRead(6);
x3 = digitalRead(7);
xsum = (x0*1)+(x1*2)+(x2*4)+(x3*8);
//Abfrage ob mit bit-Eingabe oder interener Zeit gearbeitet wird
if (Auto == 1){ //Interne Zeit
delay(Zeit);
if (Stunde < 24)
{
Stunde = Stunde +1;
}
else {
Stunde = 1;
}
}
if (Auto == 0) //Bit-Eingabe
{
Stunde = xsum;
}
switch (Stunde) { //case 1 bis 24 sind die 24 Stunden des Tages)