Advertisement
adolf01

Untitled

Jul 2nd, 2017
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.30 KB | None | 0 0
  1. #define LED 8 //pin pri pripojeni kontrolni LED stavu MCU
  2. bool SwitchF[8] = {true, true, true, 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, false, false, false, false, false, false}; // True znamená že vstup je invertovaný. Tato funkce funguje pouze na vstupu SwitchF false a BlinkF
  5. int EnableF[8] = {0, 0, 2, 3, 4, 5, 6, 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, 0, 2, 3, 4, 5, 6, 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 {  //funkce tlacitka switchF false
  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.     bool blikat = false;
  92.  
  93.     if (SwitchF[i]) {
  94.       if (BlinkF[i]) {
  95.         if (SwitchState[i] == 1) {
  96.           if (!Invert[i]) blikat = true;
  97.         } else {
  98.           if (Invert[i]) blikat = true;
  99.         }
  100.       }
  101.     } else {
  102.       if (BlinkF[i]) {
  103.         if (LastState[i] == 0) {
  104.           if (!Invert[i]) blikat = true;
  105.         } else {
  106.           if (Invert[i]) blikat = true;
  107.         }
  108.       }
  109.     }
  110.  
  111.  
  112.     if (blikat) {
  113.       if (millis() - BlinkTime[i] >= casbliku) {
  114.         BlinkTime[i] = millis();
  115.         if (BlinkState[i] == 1) {
  116.           digitalWrite(OUTPins[i], LOW);
  117.           BlinkState[i] = 0;
  118.         } else {
  119.  
  120.           digitalWrite(OUTPins[i], HIGH);
  121.           BlinkState[i] = 1;
  122.         }
  123.       }
  124.     }
  125.     //Kontrolka behu MCU
  126.  
  127.     if (millis() - blikacka >= casbliku) {
  128.       blikacka = millis();
  129.       if (blika == 1) {
  130.         digitalWrite(LED, LOW);
  131.         blika = 0;
  132.       } else {
  133.         digitalWrite(LED, HIGH);
  134.         blika = 1;
  135.       }
  136.     }
  137.  
  138.   }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement