Advertisement
Guest User

Untitled

a guest
Mar 15th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 12.75 KB | None | 0 0
  1.  //definiowanie pinów od przełaczników panelu sterowania
  2. #define s1 41//
  3. #define s2 49
  4. #define s3 47
  5. #define s4 45
  6. #define s5 35
  7. #define s6 37
  8. #define s7 39
  9. #define s8 43
  10. #define s9 31
  11. #define s10 33
  12.   //zdefiniowanie pinów led panelu sterowania
  13.   #define led1 40
  14.   #define led2 42
  15.   #define led3 32
  16.   #define led4 30
  17.   #define led5 44
  18.   #define led6 46
  19.   #define led7 34
  20.   #define led8 36
  21.   #define led9 48
  22.   #define led10 38
  23. //zdefiniowanie zmiennych globalnych służących do stworzenia opóźnień itd.
  24. unsigned long current_time = 0 ;
  25. // zmienne od używania millis
  26. unsigned long savedtime_room1 = 0 ;
  27. unsigned long savedtime_room2 = 0 ;
  28. unsigned long savedtime_room3 = 0 ;
  29. unsigned long savedtime_room4 = 0 ;
  30. unsigned long savedtime_room5 = 0 ;
  31. unsigned long savedtime_room6 = 0 ;
  32. unsigned long savedtime_room7 = 0 ;
  33. unsigned long savedtime_room8 = 0 ;
  34. unsigned long savedtime_room9 = 0 ;
  35. unsigned long savedtime_room10 = 0;
  36. unsigned long savedtime_pomiar = 0 ;
  37. //zmienna do zapisywanie wylosowaniej długości świecenia
  38. unsigned long duration1 = 0 ;
  39. unsigned long duration2 =  0 ;
  40. unsigned long duration3 = 0 ;
  41. unsigned long duration4 = 0 ;
  42. unsigned long duration5 = 0 ;
  43. unsigned long duration6 = 0 ;
  44. unsigned long duration7 = 0 ;
  45. unsigned long duration8 = 0 ;
  46. unsigned long duration9 = 0 ;
  47. unsigned long duration10 = 0;
  48. //zmienna od wyswietlanych danych o mocy
  49. double power1 = 0;
  50. //zmienna od maksymalnej i m inimalnej długości świecenia
  51. int lighting_time_min  = 100;
  52. int lighting_time_max = 15000;
  53. //przypisanie pinów oświetlenią w pokojach
  54. #define room1 13
  55. #define room2 22
  56. #define room3 24
  57. #define room4 26
  58. #define room5 28
  59. #define room6 12
  60. #define room7 11
  61. #define room8 10
  62. #define room9 9
  63. #define room10 8
  64. //dekleracjia zmiennych od pozimów logicznych pinów
  65. byte lv1 = 0;
  66. byte lv2 = 0;
  67. byte lv3 = 0;
  68. byte lv4 = 0;
  69. byte lv5 = 0;
  70. byte lv6 = 0;
  71. byte lv7 = 0;
  72. byte lv8 = 0;
  73. byte lv9 = 0;
  74. byte lv10 = 0;
  75. //okres wyświetlania się wyników pomiaru na lcd
  76. unsigned long  pomiartime = 500 ;
  77. //zmienne od RTC
  78. int s = 0 ;
  79. int m = 0 ;
  80. int h = 0 ;
  81. unsigned long savedtimeRTC = 0;
  82. //zmianne od czasu na makiecie
  83. int sm = 0 ;
  84. int mm = 0 ;
  85. int hm = 0 ;
  86. unsigned long savedtimeRTCm = 0;
  87. //cykl dobowy
  88. int stan = 1;
  89. #include <LiquidCrystal.h> //Dołączenie bilbioteki
  90.  
  91. LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza
  92. //============================//
  93. //    obsługa pomiarów        //
  94. //============================//
  95. //==================
  96. int mVperAmp = 185; // use 100 for 20A Module and 66 for 30A Module
  97. int ACSoffset = 2500;
  98. const int analogIn1 = A0;
  99. const int analogIn2 = A1;
  100. const int analogIn3 = A2 ;
  101. //=================
  102. int RawValue1 = 0;
  103. int RawValue2 = 0;
  104. int RawValue3 = 0;
  105. //=================
  106. double Voltage1 = 0;
  107. double Voltage2 = 0;
  108. double Voltage3 = 0;
  109. //==================
  110. double Amps1 = 0;
  111. double Amps2 = 0;
  112. //==================
  113. //pomiar panelu
  114. double Voltage4 = 0;
  115. int RawValue4 = 0;
  116. const int analogIn4 = A4 ;
  117. int p1 = 0;
  118. //==================
  119. void setup() {
  120.   //rozpoczecie teransmisi uart
  121.   Serial.begin(9600);
  122.   lcd.begin(40, 4); //Deklaracja typu
  123.   //zdefinowianie trybu pinów od oświetlenia
  124.   pinMode(room1, OUTPUT);
  125.   pinMode(room2, OUTPUT);
  126.   pinMode(room3, OUTPUT);
  127.   pinMode(room4, OUTPUT);
  128.   pinMode(room5, OUTPUT);
  129.   pinMode(room6, OUTPUT);
  130.   pinMode(room7, OUTPUT);
  131.   pinMode(room8, OUTPUT);
  132.   pinMode(room9, OUTPUT);
  133.   pinMode(room10, OUTPUT);
  134.   //zadelarownie pinów led panelu sterowania
  135.   pinMode(30, OUTPUT);
  136.   pinMode(32, OUTPUT);
  137.   pinMode(34, OUTPUT);
  138.   pinMode(36, OUTPUT);
  139.   pinMode(38, OUTPUT);
  140.   pinMode(40, OUTPUT);
  141.   pinMode(42, OUTPUT);
  142.   pinMode(44, OUTPUT);
  143.   pinMode(46, OUTPUT);
  144.   pinMode(48, OUTPUT);
  145.  //deklarowanie  pinów od przełaczników panelu sterowania
  146. pinMode(s1, INPUT_PULLUP); //Przycisk jako wejście
  147. pinMode(s2, INPUT_PULLUP); //Przycisk jako wejście
  148. pinMode(s3, INPUT_PULLUP); //Przycisk jako wejście
  149. pinMode(s4, INPUT_PULLUP); //Przycisk jako wejście
  150. pinMode(s5, INPUT_PULLUP); //Przycisk jako wejście
  151. pinMode(s6, INPUT_PULLUP); //Przycisk jako wejście
  152. pinMode(s7, INPUT_PULLUP); //Przycisk jako wejście
  153. pinMode(s8, INPUT_PULLUP); //Przycisk jako wejście
  154. pinMode(s9, INPUT_PULLUP); //Przycisk jako wejście
  155. pinMode(s10, INPUT_PULLUP); //Przycisk jako wejście
  156.  
  157.   //=============================
  158.   //formtowanie wyswietlacza   //
  159.   //=============================
  160.   lcd.begin(20, 4);
  161.   lcd.setCursor(9, 0);
  162.   lcd.print("RTC");
  163.   lcd.setCursor(9, 1);
  164.   lcd.print("TM");
  165.   lcd.setCursor(0, 2);
  166.   lcd.print("B=");
  167.   lcd.setCursor(0, 0);
  168.   lcd.print("Pi=");
  169.   lcd.setCursor(0, 1);
  170.   lcd.print("Po=");
  171.   lcd.setCursor(0, 3);
  172.   lcd.print("U");
  173. }
  174. //==============================//
  175. // zmienne od panelu sterowania //
  176. //==============================//
  177.  
  178.  
  179. void loop() {
  180.  
  181.   //ustawienie seed'u
  182.   randomSeed(analogRead(15));
  183.   //zapisanie obecnego czasu
  184.   current_time = millis();
  185.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  186.   //                 dzień                            //
  187.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  188.   if (stan == 1) {
  189.    
  190. lv1=0;
  191. lv2=0;
  192. lv3=0;
  193. lv4=0;
  194. lv5=0;
  195. lv6=0;
  196. lv7=0;
  197. lv8=0;
  198. lv9=0;
  199. lv10=0;
  200.   }
  201.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  202.   //                 noc                              //
  203.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  204.   if (stan == 2) {
  205.  
  206.  
  207.     //===========================================//
  208.     //     miganie oswietleniem w nocy           //
  209.     //===========================================//
  210.     //miganie room1
  211.     if (current_time - savedtime_room1 >= duration1)
  212.     { lv1 = !lv1;
  213.       duration1 = random(lighting_time_min, lighting_time_max );
  214.       savedtime_room1 = current_time;
  215.       digitalWrite(room1, lv1);
  216.     }
  217.     //miganie room2
  218.     if (current_time - savedtime_room2 >= duration2)
  219.     { lv2 = !lv2;
  220.       duration2 = random( lighting_time_min, lighting_time_max );
  221.       savedtime_room2 = current_time;
  222.       digitalWrite(room2, lv2);
  223.     }
  224.     //miganie room3
  225.     if (current_time - savedtime_room3 >= duration3)
  226.     { lv3 = !lv3;
  227.       duration3 = random( lighting_time_min, lighting_time_max );
  228.       savedtime_room3 = current_time;
  229.       digitalWrite(room3, lv3);
  230.     }
  231.     //miganie room4
  232.     if (current_time - savedtime_room4 >= duration4)
  233.     { lv4 = !lv4;
  234.       duration4 = random( lighting_time_min, lighting_time_max );
  235.       savedtime_room4 = current_time;
  236.       digitalWrite(room4, lv4);
  237.     }
  238.     //miganie room5
  239.     if (current_time - savedtime_room7 >= 1000)
  240.     { lv7 = !lv7;
  241.       duration7 = random( lighting_time_min, lighting_time_max);
  242.       savedtime_room7 = current_time;
  243.       digitalWrite(room7, lv7);
  244.  
  245.     }
  246.   }
  247.   //=========================================//
  248.   //              Pomiary                    //
  249.   //=========================================//
  250.   RawValue1 = analogRead(analogIn1);
  251.   Voltage1 = (RawValue1 / 1024.0) * 5000;
  252.   Amps1 = ((Voltage1 - ACSoffset) / mVperAmp);
  253.   RawValue2 = analogRead(analogIn2);
  254.   Voltage2 = (RawValue2 / 1024.0) * 5000;
  255.   Amps2 = ((Voltage2 - ACSoffset) / mVperAmp);
  256.   Amps2 = Amps2 * 5;
  257.   //=================================================//
  258.   //przetworzenie wyników pomiarów i ich wyświetlenie//
  259.   //=================================================//
  260.   if (current_time - savedtime_pomiar >= pomiartime)
  261.   { savedtime_pomiar = current_time;
  262.     RawValue3 = analogRead(analogIn3);
  263.     Voltage3 = (RawValue3 / 1024.0) * 5000;
  264.     Voltage3 = Voltage3 - 0.3;
  265.     power1 = Voltage3 * Amps1;
  266.     lcd.setCursor(0, 0);
  267.     lcd.setCursor(3, 0);
  268.     lcd.print(power1, 2);
  269.     lcd.setCursor(3, 1);
  270.     lcd.print(Amps2, 2);
  271.   }
  272.   //===================================================//
  273.   //          obsługa panelu                           //
  274.   //===================================================//
  275.   RawValue4 = analogRead(analogIn4);
  276.   Voltage4 = (RawValue4 / 1024.0) * 5000;
  277.   if (Voltage4 > 3000) {
  278.     digitalWrite(8, 1);
  279.   }
  280.   if (Voltage4 < 1500) {
  281.     digitalWrite(8, 0);
  282.   }
  283.  
  284.   //==============================================
  285.   //                      RTC                   //
  286.   //==============================================
  287.   //sekundy
  288.   if (current_time - savedtimeRTC >= 1000)
  289.   { savedtimeRTC = current_time;
  290.     s++;
  291.     //minuty
  292.     if (s >= 60) {
  293.       s = 0;
  294.       m++;
  295.     }
  296.     //godziny
  297.     if (m >= 60) {
  298.       m = 0;
  299.       h++;
  300.     }
  301.     //doba
  302.     if (h >= 24) {
  303.       h = 0;
  304.     }
  305.     //wyświetlanie godziny
  306.     lcd.setCursor(12, 0);
  307.     if (h < 10) {
  308.       lcd.print(0);
  309.     }
  310.     lcd.print(h);
  311.     lcd.print(":");
  312.     if (m < 10) {
  313.       lcd.print(0);
  314.     }
  315.     lcd.print(m);
  316.     lcd.print(":");
  317.     if (s < 10) {
  318.       lcd.print(0);
  319.     }
  320.     lcd.println(s);
  321.   }
  322.   //========================================//
  323.   //                 Czas makieta           //
  324.   //========================================//
  325.   //sekundy
  326.   if (current_time - savedtimeRTCm >= 1)
  327.   { savedtimeRTCm = current_time;
  328.     sm = sm + 11;
  329.     //minuty
  330.     if (sm >= 60)
  331.     { sm = 0 ;
  332.       mm++;
  333.     }
  334.     //godziny
  335.     if (mm >= 60) {
  336.       mm = 0;
  337.       hm++;
  338.     }
  339.     //doba
  340.     if (hm >= 24) {
  341.       hm = 0;
  342.     }
  343.     //wyświetlanie godziny
  344.     lcd.setCursor(12, 1);
  345.     if (hm < 10) {
  346.       lcd.print(0);
  347.     }
  348.     lcd.print(hm);
  349.     lcd.print(":");
  350.     if (mm < 10) {
  351.       lcd.print(0);
  352.     }
  353.     lcd.print(mm);
  354.     lcd.print(":");
  355.  
  356.     if (sm < 10) {
  357.       lcd.print(0);
  358.     }
  359.     lcd.println(sm);
  360.   }
  361.   //====================
  362.   //    perfixy lcd   //
  363.   //=====================
  364.   lcd.setCursor(9, 0);
  365.   lcd.print("RTC");
  366.   lcd.setCursor(9, 1);
  367.   lcd.print("TM");
  368.   lcd.setCursor(0, 2);
  369.   lcd.print("B=");
  370.   lcd.setCursor(0, 0);
  371.   lcd.print("Pi=");
  372.   lcd.setCursor(0, 1);
  373.   lcd.print("Po=");
  374.   lcd.setCursor(0, 3);
  375.   lcd.print("U=");
  376.   //==============
  377.   //noce i dnie //
  378.   //==============
  379.   if (hm >= 6 && hm <= 19) {
  380.     stan = 1;
  381.   }
  382.   if (hm < 6 && hm < 19) {
  383.     stan = 2;
  384.   }
  385.   //============================//
  386.   // obsługa panelu sterowania  //
  387.   //============================//
  388. if(digitalRead(s1)==1||digitalRead(s2)==1||digitalRead(s3)==1||digitalRead(s4)==1||digitalRead(s5)==1||digitalRead(s6)==1||digitalRead(s7)==1||digitalRead(s8)==1||digitalRead(s9)==1||digitalRead(s10)==1)
  389. {lv1=0;
  390. lv2=0;
  391. lv3=0;
  392. lv4=0;
  393. lv5=0;
  394. lv6=0;
  395. lv7=0;
  396. lv8=0;
  397. lv9=0;
  398. lv10=0;}
  399. if(digitalRead(s1)==1){lv1=1;stan=3; }
  400. if(digitalRead(s2)==1){lv2=1; stan=3;}
  401. if(digitalRead(s3)==1){lv3=1; ;stan=3;}
  402. if(digitalRead(s4)==1){lv4=1; stan=3;}
  403. if(digitalRead(s5)==1){lv5=1;stan=3;}
  404. if(digitalRead(s6)==1){lv6=1; stan=3;}
  405. if(digitalRead(s7)==1){lv7=1; stan=3;}
  406. if(digitalRead(s8)==1){lv8=1; stan=3;}
  407. if(digitalRead(s9)==1){lv9=1; stan=3;}
  408. if(digitalRead(s10)==1){lv10=1; ;stan=3;}
  409.  
  410. if(digitalRead(s1)==1||digitalRead(s2)==1||digitalRead(s3)==1||digitalRead(s4)==1||digitalRead(s5)==1|digitalRead(s6)==1||digitalRead(s7)==1||digitalRead(s8)==1||digitalRead(s9)==1||digitalRead(s10)==1){
  411. if(digitalRead(s1)==0){lv1=0; }
  412. if(digitalRead(s2)==0){lv2=0;}
  413. if(digitalRead(s3)==0){lv3=0; }
  414. if(digitalRead(s4)==0){lv4=0; }
  415. if(digitalRead(s5)==0){lv5=0; }
  416. if(digitalRead(s6)==0){lv6=0; }
  417. if(digitalRead(s7)==0){lv7=0; }
  418. if(digitalRead(s8)==0){lv8=0; }
  419. if(digitalRead(s9)==0){lv9=0; }
  420. if(digitalRead(s10)==0){lv10=0;}
  421.  
  422. }
  423. if(digitalRead(s1)==0&&digitalRead(s2)==0&&digitalRead(s3)==0&&digitalRead(s4)==0&&digitalRead(s5)==0&&digitalRead(s6)==0&&digitalRead(s7)==0&&digitalRead(s8)==0&&digitalRead(s9)==0&&digitalRead(s10)==0&&stan==3){
  424.  
  425.  
  426.  
  427.  
  428. }
  429. if(lv1==1){digitalWrite(led1,1);
  430. digitalWrite(room1,1);}
  431. if(lv2==1){digitalWrite(led2,1);
  432. digitalWrite(room2,1);}
  433. if(lv3==1){digitalWrite(led3,1);
  434. digitalWrite(room3,1);}
  435. if(lv4==1){digitalWrite(led4,1);
  436. digitalWrite(room4,1);}
  437. if(lv5==1){digitalWrite(led5,1);
  438. digitalWrite(room5,1);}
  439. if(lv6==1){digitalWrite(led6,1);
  440. digitalWrite(room6,1);}
  441. if(lv7==1){digitalWrite(led7,1);
  442. digitalWrite(room7,1);}
  443. if(lv8==1){digitalWrite(led8,1);
  444. digitalWrite(room8,1);}
  445. if(lv9==1){digitalWrite(led9,1);
  446. }
  447. if(lv10==1){digitalWrite(led10,1);
  448. digitalWrite(room10,1);}
  449.  
  450. if(lv1==0){digitalWrite(led1,0);
  451. digitalWrite(room1,0);}
  452. if(lv2==0){digitalWrite(led2,0);
  453. digitalWrite(room2,0);}
  454. if(lv3==0){digitalWrite(led3,0);
  455. digitalWrite(room3,0);}
  456. if(lv4==0){digitalWrite(led4,0);
  457. digitalWrite(room4,0);}
  458. if(lv5==0){digitalWrite(led5,0);
  459. digitalWrite(room5,0);}
  460. if(lv6==0){digitalWrite(led6,0);
  461. digitalWrite(room6,0);}
  462. if(lv7==0){digitalWrite(led7,0);
  463. digitalWrite(room7,0);}
  464. if(lv8==0){digitalWrite(led8,0);
  465. digitalWrite(room8,0);}
  466. if(lv9==0){digitalWrite(led9,0);
  467. digitalWrite(room9,0);}
  468. if(lv10==0){digitalWrite(led10,0);
  469. digitalWrite(room10,0);}
  470. Serial.println(lv9);
  471. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement