Advertisement
Guest User

Ampelsteuerung

a guest
Oct 31st, 2017
902
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.36 KB | None | 0 0
  1. int dataPin = 8; // Pin DS
  2. int storePin = 9; // Pin STCP
  3. int shiftPin = 10; // Pin SHCP
  4. int tag_nacht = 7;
  5. int schalter_3 = 11;
  6. int schalter_2 = 12;
  7. int schalter_1 = 13;
  8. int ah_rot = 2;
  9. int ah_gelb = 3;
  10. int ah_gruen = 4;
  11. int fan_rot = 5;
  12. int fan_gruen = 6;
  13.  
  14.  
  15. // Q0=AN-rot
  16. // Q7=AN-gelb
  17. // Q6=AN-gruen
  18. // Q5=AL-rot
  19. // Q4=AL-gelb
  20. // Q3=AL-gruen
  21. // Q2=FAH-rot
  22. // Q1=FAH-gruen
  23.  
  24. int phase_1_13[8] =    {0,0,1,0,0,1,0,1};
  25. int phase_4[8] =       {0,0,1,1,0,1,0,1};
  26. int phase_5[8] =       {0,0,0,0,1,1,0,1};
  27. int phase_6[8] =       {0,0,0,1,0,1,0,1};
  28. int phase_7[8] =       {1,0,1,0,0,1,0,1};
  29. int phase_8_10[8] =    {0,1,1,0,0,1,0,0};
  30. int phase_9[8] =       {0,1,1,0,0,0,1,0};
  31. int phase_11[8] =      {1,0,1,0,0,1,0,0};
  32. int phase_12[8] =      {0,0,1,0,0,1,0,1};
  33. int nachtphase_1[8] =  {0,0,1,0,0,1,0,1};
  34.  
  35. void setup() {
  36.  pinMode(ah_rot,OUTPUT);           //AH-rot
  37.  pinMode(ah_gelb,OUTPUT);          //AH-gelb
  38.  pinMode(ah_gruen,OUTPUT);         //AH-gruen
  39.  pinMode(fan_rot,OUTPUT);          //FAN-rot
  40.  pinMode(fan_gruen,OUTPUT);        //FAN-gruen
  41.  pinMode(tag_nacht,INPUT);         //Tag-Nacht
  42.  pinMode(schalter_3,INPUT);        //S3
  43.  pinMode(schalter_2,INPUT);        //S2
  44.  pinMode(schalter_1,INPUT);        //S1
  45.  pinMode(shiftPin,OUTPUT);         //SHCP
  46.  pinMode(storePin,OUTPUT);         //STCP
  47.  pinMode(dataPin,OUTPUT);          //DS
  48.  digitalWrite(shiftPin,LOW);
  49.  digitalWrite(storePin,LOW);
  50.  digitalWrite(dataPin,LOW);
  51. }
  52.  
  53. void loop() {
  54.  
  55.  digitalWrite(ah_rot,LOW);
  56.  digitalWrite(ah_gelb,LOW);
  57.  digitalWrite(ah_gruen,HIGH);
  58.  digitalWrite(fan_rot,LOW);
  59.  digitalWrite(fan_gruen,HIGH);
  60.  
  61.  digitalWrite(storePin,LOW);
  62.   for (int i=0; i<8; i++) {
  63.   digitalWrite(shiftPin, LOW);
  64.   digitalWrite(dataPin, phase_1_13[i]);
  65.   digitalWrite(shiftPin, HIGH);
  66. }
  67.  digitalWrite(storePin, HIGH);
  68.  
  69.  boolean wechsel = false;
  70.  boolean nachtwechsel = false;
  71.  boolean nachtwechsel_2 = false;
  72.  int vergleich_schalter_1 = 0;
  73.  int vergleich_schalter_2 = 0;
  74.  int vergleich_schalter_3 = 0;
  75.  int state_tag_nacht = 0;
  76.    
  77.  for (int x = 0; x<400; x++) {
  78.   vergleich_schalter_1 = digitalRead(schalter_1);
  79.   vergleich_schalter_2 = digitalRead(schalter_2);
  80.   vergleich_schalter_3 = digitalRead(schalter_3);
  81.  
  82.   if (vergleich_schalter_1 == HIGH || vergleich_schalter_2 == HIGH) {          //Prüft, ob S1, S2 oder S3 waehrend dieser Zeit gedrueckt wurde. Return: wechsel = true
  83.    wechsel = true;
  84.    nachtwechsel = true;
  85.   }
  86.   if (vergleich_schalter_3 == HIGH){
  87.    wechsel = true;
  88.    nachtwechsel_2 = true;
  89.  }
  90.   delay(50);
  91. }
  92.  
  93.  
  94.  state_tag_nacht = digitalRead(tag_nacht);
  95.  if (state_tag_nacht == LOW && wechsel == false) {                 // Bei Nacht und falls wechsel auf false ist, wird der Ausdruck im Block ausgefuehrt
  96.   while (wechsel == false) {                                       // Solange wechsel auf false ist, wird der Block wiederholt ausgefuehrt, bis S1,S2 oder S3 gedrueckt wird
  97.    vergleich_schalter_1 = digitalRead(schalter_1);                 // Beim Schalterdruck wird ein Status gesetzt
  98.     if (vergleich_schalter_1 == HIGH) {
  99.      wechsel = true;
  100.      nachtwechsel = true;
  101.    }
  102.     vergleich_schalter_2 = digitalRead(schalter_2);
  103.     if (vergleich_schalter_2 == HIGH){              
  104.      wechsel = true;
  105.      nachtwechsel = true;
  106.    }
  107.     vergleich_schalter_3 = digitalRead(schalter_3);
  108.     if (vergleich_schalter_3 == HIGH){
  109.      wechsel = true;
  110.      nachtwechsel_2 = true;
  111.    }
  112.    delay (50);
  113.  }                                                              //End of while
  114. }                                                               //End of if
  115.  if (state_tag_nacht == HIGH) {                                  //Bei Tag wird dieser Block ausgefuehrt
  116.  
  117.   digitalWrite(fan_gruen,LOW);
  118.   digitalWrite(fan_rot,HIGH);
  119.  
  120.  
  121.   delay(5000);       //P2-P3
  122.  
  123.   digitalWrite(ah_gruen,LOW);
  124.   digitalWrite(ah_gelb,HIGH);
  125.  
  126.  
  127.   delay(3500);       //P3-P4
  128.  
  129.  
  130.   digitalWrite(ah_gelb,LOW);
  131.   digitalWrite(ah_rot,HIGH);
  132.  
  133.   digitalWrite(storePin,LOW);
  134.   for (int i=0; i<8; i++) {
  135.    digitalWrite(shiftPin, LOW);
  136.    digitalWrite(dataPin, phase_4[i]);
  137.    digitalWrite(shiftPin, HIGH);
  138.   }
  139.   digitalWrite(storePin, HIGH);
  140.  
  141.  
  142.   delay(1000);     //P4-P5
  143.  
  144.  
  145.   digitalWrite(storePin,LOW);
  146.   for (int i=0; i<8; i++) {
  147.    digitalWrite(shiftPin, LOW);
  148.    digitalWrite(dataPin, phase_5[i]);
  149.    digitalWrite(shiftPin, HIGH);
  150.   }
  151.   digitalWrite(storePin, HIGH);
  152.  
  153.  
  154.   delay(7000);    //P5-P6
  155.  
  156.  
  157.   digitalWrite(storePin,LOW);
  158.   for (int i=0; i<8; i++) {
  159.    digitalWrite(shiftPin, LOW);
  160.    digitalWrite(dataPin, phase_6[i]);
  161.    digitalWrite(shiftPin, HIGH);
  162.   }
  163.   digitalWrite(storePin, HIGH);
  164.  
  165.  
  166.   delay(3000);      //P6-P7
  167.  
  168.  
  169.   digitalWrite(storePin,LOW);
  170.   for (int i=0; i<8; i++) {
  171.    digitalWrite(shiftPin, LOW);
  172.    digitalWrite(dataPin, phase_7[i]);
  173.    digitalWrite(shiftPin, HIGH);
  174.   }
  175.   digitalWrite(storePin, HIGH);
  176.  
  177.  
  178.   delay(1000);       //P7-P8
  179.  
  180.  
  181.   digitalWrite(storePin,LOW);
  182.   for (int i=0; i<8; i++) {
  183.    digitalWrite(shiftPin, LOW);
  184.    digitalWrite(dataPin, phase_8_10[i]);
  185.    digitalWrite(shiftPin, HIGH);
  186.   }
  187.   digitalWrite(storePin, HIGH);
  188.  
  189.  
  190.    delay(1500);      //P8-P9
  191.  
  192.  
  193.   digitalWrite(storePin,LOW);
  194.   for (int i=0; i<8; i++) {
  195.    digitalWrite(shiftPin, LOW);
  196.    digitalWrite(dataPin, phase_9[i]);
  197.    digitalWrite(shiftPin, HIGH);
  198.   }
  199.   digitalWrite(storePin, HIGH);
  200.  
  201.  
  202.   delay(7000);      //P9-P10
  203.  
  204.  
  205.   digitalWrite(storePin,LOW);
  206.   for (int i=0; i<8; i++) {
  207.    digitalWrite(shiftPin, LOW);
  208.    digitalWrite(dataPin, phase_8_10[i]);
  209.    digitalWrite(shiftPin, HIGH);
  210.   }
  211.   digitalWrite(storePin, HIGH);
  212.  
  213.  
  214.   delay(3500);      //P10-P11
  215.  
  216.  
  217.  
  218.   digitalWrite(storePin,LOW);
  219.   for (int i=0; i<8; i++) {
  220.    digitalWrite(shiftPin, LOW);
  221.    digitalWrite(dataPin, phase_11[i]);
  222.    digitalWrite(shiftPin, HIGH);
  223.   }
  224.   digitalWrite(storePin, HIGH);
  225.  
  226.  
  227.   delay(3000);       //P11-P12
  228.  
  229.  
  230.   digitalWrite(ah_gelb,HIGH);
  231.  
  232.   digitalWrite(storePin,LOW);
  233.   for (int i=0; i<8; i++) {
  234.    digitalWrite(shiftPin, LOW);
  235.    digitalWrite(dataPin, phase_12[i]);
  236.    digitalWrite(shiftPin, HIGH);
  237.   }
  238.   digitalWrite(storePin, HIGH);
  239.  
  240.  
  241.   delay(1000);      //P12-P13
  242.  
  243.  
  244.   digitalWrite(ah_rot,LOW);
  245.   digitalWrite(ah_gelb,LOW);
  246.   digitalWrite(ah_gruen,HIGH);
  247.  
  248.   digitalWrite(storePin,LOW);
  249.   for (int i=0; i<8; i++) {
  250.    digitalWrite(shiftPin, LOW);
  251.    digitalWrite(dataPin, phase_1_13[i]);
  252.    digitalWrite(shiftPin, HIGH);
  253.   }
  254.   digitalWrite(storePin, HIGH);
  255.  
  256.  
  257.   delay(1500);
  258.  }                                                                      //End of Tagschaltung
  259.  if (state_tag_nacht == LOW){                                            //Bei Nacht wird dieser Block ausgefuehrt
  260.   digitalWrite(fan_gruen,LOW);
  261.   digitalWrite(fan_rot,HIGH);
  262.  
  263.   for (int x=0; x<80; x++) {                                             //Bei Tasterdruck wird der Status gespeichert und spaeter abgerufen
  264.    vergleich_schalter_1 = digitalRead(schalter_1);
  265.    vergleich_schalter_2 = digitalRead(schalter_2);
  266.    vergleich_schalter_3 = digitalRead(schalter_3);
  267.  
  268.    if (vergleich_schalter_1 == HIGH || vergleich_schalter_2 == HIGH){     //S1 oder S2 gedrueckt: Status nachtwechsel auf true
  269.     nachtwechsel = true;
  270.    }
  271.    if (vergleich_schalter_3 == HIGH){                                     //S3 gedrueckt: Status nachtwechsel_2 auf true
  272.     nachtwechsel_2 = true;
  273.    }
  274.    delay(50);
  275.   }
  276.  
  277.  
  278.   digitalWrite(ah_gruen,LOW);
  279.   digitalWrite(ah_gelb,HIGH);
  280.  
  281.   for (int x=0; x<70; x++) {
  282.    vergleich_schalter_1 = digitalRead(schalter_1);
  283.    vergleich_schalter_2 = digitalRead(schalter_2);
  284.    vergleich_schalter_3 = digitalRead(schalter_3);
  285.  
  286.    if (vergleich_schalter_1 == HIGH || vergleich_schalter_2 == HIGH){
  287.     nachtwechsel = true;
  288.    }
  289.    if (vergleich_schalter_3 == HIGH){
  290.     nachtwechsel_2 = true;
  291.    }
  292.  
  293.    delay(50);
  294.   }
  295.  
  296.  
  297.   digitalWrite(ah_gelb,LOW);
  298.   digitalWrite(ah_rot,HIGH);
  299.  
  300.   if (nachtwechsel_2 == true){                                   // Pruefe nachtwechsel_2 (S3): Bei true wird der Block ausgefuehrt
  301.    digitalWrite(storePin,LOW);
  302.    for (int i=0; i<8; i++) {
  303.     digitalWrite(shiftPin, LOW);
  304.     digitalWrite(dataPin, phase_4[i]);
  305.     digitalWrite(shiftPin, HIGH);
  306.    }
  307.    digitalWrite(storePin, HIGH);
  308.  
  309.    for (int x=0; x<20; x++) {
  310.     vergleich_schalter_1 = digitalRead(schalter_1);
  311.     vergleich_schalter_2 = digitalRead(schalter_2);
  312.     if (vergleich_schalter_1 == HIGH || vergleich_schalter_2 == HIGH){
  313.      nachtwechsel = true;
  314.     }
  315.  
  316.     delay(50);
  317.    }  
  318.  
  319.    digitalWrite(storePin,LOW);
  320.    for (int i=0; i<8; i++) {
  321.     digitalWrite(shiftPin, LOW);
  322.     digitalWrite(dataPin, phase_5[i]);
  323.     digitalWrite(shiftPin, HIGH);
  324.    }
  325.    digitalWrite(storePin, HIGH);
  326.  
  327.  
  328.    for (int x=0; x<140; x++) {
  329.     vergleich_schalter_1 = digitalRead(schalter_1);
  330.     vergleich_schalter_2 = digitalRead(schalter_2);
  331.     if (vergleich_schalter_1 == HIGH || vergleich_schalter_2 == HIGH){
  332.      nachtwechsel = true;
  333.     }
  334.     delay(50);
  335.    }
  336.    digitalWrite(storePin,LOW);
  337.    for (int i=0; i<8; i++) {
  338.     digitalWrite(shiftPin, LOW);
  339.     digitalWrite(dataPin, phase_6[i]);
  340.     digitalWrite(shiftPin, HIGH);
  341.    }
  342.    digitalWrite(storePin, HIGH);
  343.  
  344.    for (int x=0; x<60; x++) {
  345.     vergleich_schalter_1 = digitalRead(schalter_1);
  346.     vergleich_schalter_2 = digitalRead(schalter_2);
  347.     if (vergleich_schalter_1 == HIGH || vergleich_schalter_2 == HIGH){
  348.      nachtwechsel = true;
  349.     }
  350.     delay (50);    
  351.    }
  352.    if (nachtwechsel == true) {                                                   // Pruefe nachtwechsel: Bei true wird der Block auch ausgefuehrt
  353.     digitalWrite(storePin,LOW);
  354.     for (int i=0; i<8; i++) {
  355.      digitalWrite(shiftPin, LOW);
  356.      digitalWrite(dataPin, phase_7[i]);
  357.      digitalWrite(shiftPin, HIGH);
  358.     }
  359.     digitalWrite(storePin, HIGH);
  360.  
  361.  
  362.     delay(1000);    
  363.  
  364.  
  365.     digitalWrite(storePin,LOW);
  366.     for (int i=0; i<8; i++) {
  367.      digitalWrite(shiftPin, LOW);
  368.      digitalWrite(dataPin, phase_8_10[i]);
  369.      digitalWrite(shiftPin, HIGH);
  370.     }
  371.     digitalWrite(storePin, HIGH);
  372.  
  373.  
  374.     delay(1500);    
  375.  
  376.  
  377.     digitalWrite(storePin,LOW);
  378.     for (int i=0; i<8; i++) {
  379.      digitalWrite(shiftPin, LOW);
  380.      digitalWrite(dataPin, phase_9[i]);
  381.      digitalWrite(shiftPin, HIGH);
  382.     }
  383.     digitalWrite(storePin, HIGH);
  384.  
  385.  
  386.     delay(7000);      
  387.  
  388.  
  389.     digitalWrite(storePin,LOW);
  390.     for (int i=0; i<8; i++) {
  391.      digitalWrite(shiftPin, LOW);
  392.      digitalWrite(dataPin, phase_8_10[i]);
  393.      digitalWrite(shiftPin, HIGH);
  394.     }
  395.     digitalWrite(storePin, HIGH);
  396.  
  397.  
  398.     delay(3500);      
  399.  
  400.  
  401.  
  402.     digitalWrite(storePin,LOW);
  403.     for (int i=0; i<8; i++) {
  404.      digitalWrite(shiftPin, LOW);
  405.      digitalWrite(dataPin, phase_11[i]);
  406.      digitalWrite(shiftPin, HIGH);
  407.     }
  408.     digitalWrite(storePin, HIGH);
  409.  
  410.  
  411.     delay(2500);      
  412.  
  413.  
  414.     digitalWrite(ah_gelb,HIGH);
  415.  
  416.     digitalWrite(storePin,LOW);
  417.     for (int i=0; i<8; i++) {
  418.      digitalWrite(shiftPin, LOW);
  419.      digitalWrite(dataPin, phase_12[i]);
  420.      digitalWrite(shiftPin, HIGH);
  421.     }
  422.     digitalWrite(storePin, HIGH);
  423.  
  424.  
  425.     delay(1000);
  426.      
  427.  
  428.     digitalWrite(ah_rot,LOW);
  429.     digitalWrite(ah_gelb,LOW);
  430.     digitalWrite(ah_gruen,HIGH);
  431.  
  432.     digitalWrite(storePin,LOW);
  433.     for (int i=0; i<8; i++) {
  434.      digitalWrite(shiftPin, LOW);
  435.      digitalWrite(dataPin, phase_1_13[i]);
  436.      digitalWrite(shiftPin, HIGH);
  437.     }
  438.     digitalWrite(storePin, HIGH);
  439.  
  440.  
  441.     delay(1500);
  442.    }                                                  //End of nachtwechsel(S1,S2)(true)
  443.    else{                                              //nachtwechsel (S1,S2): Bei false wird dieser Block ausgefuehrt                                          
  444.     digitalWrite(storePin,LOW);
  445.     for (int i=0; i<8; i++) {
  446.      digitalWrite(shiftPin, LOW);
  447.      digitalWrite(dataPin, nachtphase_1[i]);
  448.      digitalWrite(shiftPin, HIGH);
  449.     }
  450.     digitalWrite(storePin, HIGH);
  451.    
  452.     digitalWrite(ah_gelb,HIGH);
  453.  
  454.  
  455.     delay(1000);
  456.  
  457.  
  458.     digitalWrite(ah_rot,LOW);
  459.     digitalWrite(ah_gelb,LOW);
  460.     digitalWrite(ah_gruen,HIGH);
  461.  
  462.     digitalWrite(storePin,LOW);
  463.     for (int i=0; i<8; i++) {
  464.      digitalWrite(shiftPin, LOW);
  465.      digitalWrite(dataPin, phase_1_13[i]);
  466.      digitalWrite(shiftPin, HIGH);
  467.     }
  468.     digitalWrite(storePin, HIGH);
  469.  
  470.  
  471.     delay(1500);        
  472.    }                                             //End of else nachtwechsel (S1,S2)
  473.   }
  474.   else{                                         //nachtwechsel_2 (S3): Bei false wird dieser Block ausgefuehrt
  475.    digitalWrite(storePin,LOW);
  476.    for (int i=0; i<8; i++) {
  477.     digitalWrite(shiftPin, LOW);
  478.     digitalWrite(dataPin, phase_7[i]);
  479.     digitalWrite(shiftPin, HIGH);
  480.    }
  481.    digitalWrite(storePin, HIGH);
  482.  
  483.  
  484.  
  485.    delay(1000);
  486.  
  487.  
  488.    digitalWrite(storePin,LOW);
  489.    for (int i=0; i<8; i++) {
  490.     digitalWrite(shiftPin, LOW);
  491.     digitalWrite(dataPin, phase_8_10[i]);
  492.     digitalWrite(shiftPin, HIGH);
  493.    }
  494.    digitalWrite(storePin, HIGH);
  495.  
  496.  
  497.    delay (1500);
  498.  
  499.  
  500.    digitalWrite(storePin,LOW);
  501.    for (int i=0; i<8; i++) {
  502.     digitalWrite(shiftPin, LOW);
  503.     digitalWrite(dataPin, phase_9[i]);
  504.     digitalWrite(shiftPin, HIGH);
  505.    }
  506.    digitalWrite(storePin, HIGH);
  507.  
  508.  
  509.    delay(7000);
  510.  
  511.  
  512.    digitalWrite(storePin,LOW);
  513.    for (int i=0; i<8; i++) {
  514.     digitalWrite(shiftPin, LOW);
  515.     digitalWrite(dataPin, phase_8_10[i]);
  516.     digitalWrite(shiftPin, HIGH);
  517.    }
  518.    digitalWrite(storePin, HIGH);
  519.  
  520.  
  521.    delay(3500);
  522.  
  523.  
  524.    digitalWrite(storePin,LOW);
  525.    for (int i=0; i<8; i++) {
  526.     digitalWrite(shiftPin, LOW);
  527.     digitalWrite(dataPin, phase_11[i]);
  528.     digitalWrite(shiftPin, HIGH);
  529.    }
  530.    digitalWrite(storePin, HIGH);
  531.  
  532.  
  533.    delay(3000);
  534.  
  535.  
  536.    digitalWrite(ah_gelb,HIGH);
  537.  
  538.    digitalWrite(storePin,LOW);
  539.    for (int i=0; i<8; i++) {
  540.     digitalWrite(shiftPin, LOW);
  541.     digitalWrite(dataPin, phase_12[i]);
  542.     digitalWrite(shiftPin, HIGH);
  543.    }
  544.    digitalWrite(storePin, HIGH);
  545.  
  546.  
  547.    delay(1000);
  548.  
  549.  
  550.    digitalWrite(ah_rot,LOW);
  551.    digitalWrite(ah_gelb,LOW);
  552.    digitalWrite(ah_gruen,HIGH);
  553.  
  554.    digitalWrite(storePin,LOW);
  555.    for (int i=0; i<8; i++) {
  556.     digitalWrite(shiftPin, LOW);
  557.     digitalWrite(dataPin, phase_1_13[i]);
  558.     digitalWrite(shiftPin, HIGH);
  559.    }
  560.    digitalWrite(storePin, HIGH);
  561.  
  562.  
  563.    delay(1500);    
  564.   }                                         //End of else nachtwechsel_2 (S3)
  565.  }                                          //End of Nachtschaltung
  566. }                                           //End of void(loop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement