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)
   144   145   146   147   148   149   150   151   152   153   154