Advertisement
spliterst

2 prekidaca, 5 ledica

Aug 14th, 2020 (edited)
2,107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int prekidac1 = 8;
  2. int prekidac2 = 9;
  3.  
  4. int led1 = 2;
  5. int led2 = 3;
  6. int led3 = 4;
  7. int led4 = 5;
  8.  
  9. int ledicaUpaljena = 0;
  10.  
  11. // pocetna stanja prekidaca
  12. int prethodnoStanjePrekidaca1;
  13. int prethodnoStanjePrekidaca2;
  14.  
  15. void setup(){
  16.   pinMode(prekidac1,INPUT);
  17.   pinMode(prekidac2,INPUT);
  18.  
  19.   pinMode(led1,OUTPUT);
  20.   pinMode(led2,OUTPUT);
  21.   pinMode(led3,OUTPUT);
  22.   pinMode(led4,OUTPUT);
  23.  
  24.   // pocetna stanja prekidaca
  25.   prethodnoStanjePrekidaca1 = digitalRead(prekidac1);
  26.   prethodnoStanjePrekidaca2 = digitalRead(prekidac2);
  27. }
  28.  
  29.  
  30. void upali_desno_livo(){
  31.     digitalWrite(led1,HIGH);
  32.     delay(150);
  33.     digitalWrite(led2,HIGH);
  34.     delay(150);
  35.     digitalWrite(led3,HIGH);
  36.     delay(150);
  37.     digitalWrite(led4,HIGH);
  38. }
  39.  
  40.  
  41. void upali_livo_desno(){
  42.     digitalWrite(led4,HIGH);
  43.     delay(300);  
  44.     digitalWrite(led3,HIGH);
  45.     delay(300);
  46.     digitalWrite(led2,HIGH);
  47.     delay(300);
  48.     digitalWrite(led1,HIGH);
  49. }
  50.  
  51.  
  52. void ugasi_desno_livo(){
  53.     digitalWrite(led1,LOW);
  54.     delay(500);
  55.     digitalWrite(led2,LOW);
  56.     delay(500);
  57.     digitalWrite(led3,LOW);
  58.     delay(500);
  59.     digitalWrite(led4,LOW);
  60. }
  61.  
  62.  
  63. void ugasi_livo_desno(){
  64.     digitalWrite(led4,LOW);
  65.    
  66.     delay(1000);
  67.     digitalWrite(led3,LOW);
  68.     delay(1000);
  69.     digitalWrite(led2,LOW);
  70.     delay(1000);
  71.     digitalWrite(led1,LOW);
  72. }
  73.  
  74.  
  75. void loop(){
  76.   int p1 = digitalRead(prekidac1);
  77.   if (p1 != prethodnoStanjePrekidaca1) {
  78.     // prekidac promjenio stanje
  79.     long trenutak_pritisnut = millis();
  80.    
  81.     while(p1 != prethodnoStanjePrekidaca1) { // dok je pritisnut (u promjenjenom stanju)
  82.       long trenutak_sada = millis();
  83.       int pritisnut_milisekunda = (trenutak_sada - trenutak_pritisnut); // koliko je milisekundi vec stisnut
  84.  
  85.       if(pritisnut_milisekunda > 100) {
  86.         // ako pritisnut vise od 100 milisekunda
  87.         // prekidac promjenio stanje
  88.         prethodnoStanjePrekidaca1 = digitalRead(prekidac1);
  89.        
  90.         // promjeni stanje ledice
  91.         if(ledicaUpaljena == 1) {
  92.           // ugasi ledicu
  93.           ugasi_livo_desno();
  94.           ledicaUpaljena = 0; // zapamti da si ugasia ledicu da znas je upalit iduci put
  95.         } else { // inace upali ledicu
  96.           upali_desno_livo();
  97.           ledicaUpaljena = 1; // zapamti da si upalija ledicu da znas je ugasit iduci put
  98.         }
  99.       }
  100.  
  101.       // ponovo procitaj stanje prekidaca
  102.       p1 = digitalRead(prekidac1);
  103.       delay(40);
  104.     }
  105.   }
  106.  
  107.   int p2 = digitalRead(prekidac2);
  108.   if (p2 != prethodnoStanjePrekidaca2) {
  109.     // prekidac promjenio stanje
  110.     long trenutak_pritisnut = millis();
  111.    
  112.     while(p2 != prethodnoStanjePrekidaca2) { // dok je pritisnut (u promjenjenom stanju)
  113.       long trenutak_sada = millis();
  114.       int pritisnut_milisekunda = (trenutak_sada - trenutak_pritisnut); // koliko je milisekundi vec stisnut
  115.  
  116.       if(pritisnut_milisekunda > 100) {
  117.         // ako pritisnut vise od 100 milisekunda
  118.         // prekidac promjenio stanje
  119.         prethodnoStanjePrekidaca2 = digitalRead(prekidac2);
  120.        
  121.         // promjeni stanje ledice
  122.         if(ledicaUpaljena == 1) {
  123.           // ugasi ledicu
  124.           ugasi_desno_livo();
  125.           ledicaUpaljena = 0; // zapamti da si ugasia ledicu da znas je upalit iduci put
  126.         } else { // inace upali ledicu
  127.           upali_livo_desno();
  128.           ledicaUpaljena = 1; // zapamti da si upalija ledicu da znas je ugasit iduci put
  129.         }
  130.       }
  131.  
  132.       // ponovo procitaj stanje prekidaca
  133.       p2 = digitalRead(prekidac2);
  134.       delay(40);
  135.     }
  136.   }
  137.  
  138.   // delay izmedu provjera
  139.   delay(40);
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement