Advertisement
adolf01

Untitled

Jul 2nd, 2017
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.96 KB | None | 0 0
  1. #define LED 8 //pin pri pripojeni kontrolni LED stavu MCU
  2. bool SwitchF[8] = {true, true, false, true, true, true, true, true}; //pokud je na vstupu true tak se chová jako vypínač. V opačném případě výstup kopíruje stav vstupu
  3. bool BlinkF[8] = {false, false, false, false, false, false, false, false}; // True znamená, že vstup má funkci blinkru, funguje pouze na vstupu který má SwitchF true
  4. bool Invert[8] = {false, false, true, false, false, false, false, false}; // True znamená že vstup je invertovaný. Tato funkce funguje pouze na vstupu SwitchF false
  5. int EnableF[8] = {0, 1, 2, 3, 4, 5, 5, 7}; //jaky vstup musi byt aktivovan pro jeho povolení tzn aby fungoval vstup 5 musí byt zapnutý vstup 2. Neměnící se číslo vstupu neovlivňuje funkcni a vstup je automaticky povolen. Vstupy se počítají od 0
  6. int DualF[8] = {0, 1, 2, 3, 4, 5, 5, 7}; //zde nastavený vstup při pravní aktivaci rozsvítí svůj výstup a při druhé zhasne svůj na rozsvítí zde nastavený, chová se jako přepínač. Vstupy se počítají od 0
  7. int casbliku = 400; //cas pro blinkry
  8. int INPins[8] = {7, 6, 5, 1, 0, 4, 3, 2}; //Piny na které jesou připojeny vstupy. Vstup vyžaduje PullUP rezistor a reaguje na připojení 0
  9. int OUTPins[8] = {9, 10, A0, A1, A2, A3, A4, A5}; //Piny výstupů
  10.  
  11. int SwitchState[8] = {0, 0, 0, 0, 0, 0, 0, 0};
  12. int BlinkState[8] = {0, 0, 0, 0, 0, 0, 0, 0};
  13. long BlinkTime[8];
  14. int LastState[8];
  15. long blikacka = 0 ;
  16. int blika = 0;
  17. long starttime = millis();
  18.  
  19. void setup() {
  20.   pinMode(LED, OUTPUT);
  21.   for (int i = 0; i < 8; i++) {
  22.     pinMode(INPins[i], INPUT);
  23.     pinMode(OUTPins[i], OUTPUT);
  24.  
  25.   }
  26.  
  27. }
  28.  
  29. void loop() {
  30.   starttime = millis();
  31.  
  32.   // put your main code here, to run repeatedly:
  33.   for (int i = 0; i < 8; i++) {
  34.  
  35.     if (LastState[i] != digitalRead(INPins[i])) {
  36.       LastState[i] = digitalRead(INPins[i]);
  37.       if (SwitchF[i]) {
  38.         if (LastState[i] == 0) {
  39.  
  40.           if (SwitchState[i] == 0)  {
  41.             SwitchState[i] = 1;
  42.             if (SwitchState[EnableF[i]] == 1) {
  43.  
  44.               BlinkTime[i] = millis();
  45.               if (BlinkF[i]) BlinkState[i] = 1;
  46.               if (DualF[i] != i) {
  47.                 digitalWrite(OUTPins[i], HIGH);
  48.                 digitalWrite(OUTPins[DualF[i]], LOW);
  49.               } else {
  50.                 digitalWrite(OUTPins[i], HIGH);
  51.               }
  52.  
  53.             }
  54.           } else {
  55.             SwitchState[i] = 0;
  56.  
  57.             if (DualF[i] != i) {
  58.               if (SwitchState[DualF[i]] == 1) {
  59.                 digitalWrite(OUTPins[i], LOW);
  60.                 digitalWrite(OUTPins[DualF[i]], HIGH);
  61.               }
  62.  
  63.             } else {
  64.               digitalWrite(OUTPins[DualF[i]], LOW);
  65.               digitalWrite(OUTPins[i], LOW);
  66.  
  67.             }
  68.           }
  69.  
  70.  
  71.  
  72.         }
  73.       } else {
  74.         if (!Invert[i]) {
  75.           if (LastState[i] == 1) digitalWrite(OUTPins[i], LOW);
  76.           else digitalWrite(OUTPins[i], HIGH);
  77.         } else {
  78.           if (LastState[i] == 0) digitalWrite(OUTPins[i], LOW);
  79.           else digitalWrite(OUTPins[i], HIGH);
  80.         }
  81.  
  82.       }
  83.     }
  84.     if (SwitchF[i]) {
  85.       if (SwitchState[DualF[i]] == 0) {
  86.         digitalWrite(OUTPins[i], LOW);
  87.         digitalWrite(OUTPins[DualF[i]], LOW);
  88.       }
  89.     }
  90.  
  91.     if (SwitchF[i]) {
  92.       if (BlinkF[i]) {
  93.         if (SwitchState[i] == 1) {
  94.  
  95.           if (millis() - BlinkTime[i] >= casbliku) {
  96.             BlinkTime[i] = millis();
  97.             if (BlinkState[i] == 1) {
  98.               digitalWrite(OUTPins[i], LOW);
  99.               BlinkState[i] = 0;
  100.             } else {
  101.  
  102.               digitalWrite(OUTPins[i], HIGH);
  103.               BlinkState[i] = 1;
  104.             }
  105.           }
  106.         }
  107.       }
  108.     }
  109.     //Kontrolka behu MCU
  110.  
  111.     if (millis() - blikacka >= casbliku) {
  112.       blikacka = millis();
  113.       if (blika == 1) {
  114.         digitalWrite(LED, LOW);
  115.         blika = 0;
  116.       } else {
  117.         digitalWrite(LED, HIGH);
  118.         blika = 1;
  119.       }
  120.     }
  121.  
  122.   }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement