Advertisement
Guest User

Untitled

a guest
Mar 15th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 12.46 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. const int analogIn4 = A3;
  102. //=================
  103. float RawValue1 = 0;
  104. float RawValue2 = 0;
  105. float RawValue3 = 0;
  106. float RawValue4 = 0;
  107. //=================
  108. double Voltage1 = 0;
  109. double Voltage2 = 0;
  110. double Voltage3 = 0;
  111. float Voltage4 = 0;
  112. //==================
  113. double Amps1 = 0;
  114. double Amps2 = 0;
  115. //==================
  116.  
  117. void setup() {
  118.   //rozpoczecie teransmisi uart
  119.   Serial.begin(9600);
  120.   lcd.begin(40, 4); //Deklaracja typu
  121.   //zdefinowianie trybu pinów od oświetlenia
  122.   pinMode(room1, OUTPUT);
  123.   pinMode(room2, OUTPUT);
  124.   pinMode(room3, OUTPUT);
  125.   pinMode(room4, OUTPUT);
  126.   pinMode(room5, OUTPUT);
  127.   pinMode(room6, OUTPUT);
  128.   pinMode(room7, OUTPUT);
  129.   pinMode(room8, OUTPUT);
  130.   pinMode(room9, OUTPUT);
  131.   pinMode(room10, OUTPUT);
  132.   //zadelarownie pinów led panelu sterowania
  133.   pinMode(30, OUTPUT);
  134.   pinMode(32, OUTPUT);
  135.   pinMode(34, OUTPUT);
  136.   pinMode(36, OUTPUT);
  137.   pinMode(38, OUTPUT);
  138.   pinMode(40, OUTPUT);
  139.   pinMode(42, OUTPUT);
  140.   pinMode(44, OUTPUT);
  141.   pinMode(46, OUTPUT);
  142.   pinMode(48, OUTPUT);
  143.  //deklarowanie  pinów od przełaczników panelu sterowania
  144. pinMode(s1, INPUT_PULLUP); //Przycisk jako wejście
  145. pinMode(s2, INPUT_PULLUP); //Przycisk jako wejście
  146. pinMode(s3, INPUT_PULLUP); //Przycisk jako wejście
  147. pinMode(s4, INPUT_PULLUP); //Przycisk jako wejście
  148. pinMode(s5, INPUT_PULLUP); //Przycisk jako wejście
  149. pinMode(s6, INPUT_PULLUP); //Przycisk jako wejście
  150. pinMode(s7, INPUT_PULLUP); //Przycisk jako wejście
  151. pinMode(s8, INPUT_PULLUP); //Przycisk jako wejście
  152. pinMode(s9, INPUT_PULLUP); //Przycisk jako wejście
  153. pinMode(s10, INPUT_PULLUP); //Przycisk jako wejście
  154.  
  155.   //=============================
  156.   //formtowanie wyswietlacza   //
  157.   //=============================
  158.   lcd.begin(20, 4);
  159.   lcd.setCursor(9, 0);
  160.   lcd.print("RTC");
  161.   lcd.setCursor(9, 1);
  162.   lcd.print("TM");
  163.   lcd.setCursor(0, 2);
  164.   lcd.print("B=");
  165.   lcd.setCursor(0, 0);
  166.   lcd.print("Pi=");
  167.   lcd.setCursor(0, 1);
  168.   lcd.print("Po=");
  169.   lcd.setCursor(0, 3);
  170.   lcd.print("U");
  171. }
  172. //==============================//
  173. // zmienne od panelu sterowania //
  174. //==============================//
  175.  
  176.  
  177. void loop() {
  178.  
  179.   //ustawienie seed'u
  180.   randomSeed(analogRead(15));
  181.   //zapisanie obecnego czasu
  182.   current_time = millis();
  183.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  184.   //                 dzień                            //
  185.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  186.   if (stan == 1) {
  187.    
  188. lv1=0;
  189. lv2=0;
  190. lv3=0;
  191. lv4=0;
  192. lv5=0;
  193. lv6=0;
  194. lv7=0;
  195. lv8=0;
  196. lv9=0;
  197. lv10=0;
  198.   }
  199.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  200.   //                 noc                              //
  201.   //||||||||||||||||||||||||||||||||||||||||||||||||||//
  202.   if (stan == 2) {
  203.  
  204.  
  205.     //===========================================//
  206.     //     miganie oswietleniem w nocy           //
  207.     //===========================================//
  208.     //miganie room1
  209.     if (current_time - savedtime_room1 >= duration1)
  210.     { lv1 = !lv1;
  211.       duration1 = random(lighting_time_min, lighting_time_max );
  212.       savedtime_room1 = current_time;
  213.       digitalWrite(room1, lv1);
  214.     }
  215.     //miganie room2
  216.     if (current_time - savedtime_room2 >= duration2)
  217.     { lv2 = !lv2;
  218.       duration2 = random( lighting_time_min, lighting_time_max );
  219.       savedtime_room2 = current_time;
  220.       digitalWrite(room2, lv2);
  221.     }
  222.     //miganie room3
  223.     if (current_time - savedtime_room3 >= duration3)
  224.     { lv3 = !lv3;
  225.       duration3 = random( lighting_time_min, lighting_time_max );
  226.       savedtime_room3 = current_time;
  227.       digitalWrite(room3, lv3);
  228.     }
  229.     //miganie room4
  230.     if (current_time - savedtime_room4 >= duration4)
  231.     { lv4 = !lv4;
  232.       duration4 = random( lighting_time_min, lighting_time_max );
  233.       savedtime_room4 = current_time;
  234.       digitalWrite(room4, lv4);
  235.     }
  236.     //miganie room5
  237.     if (current_time - savedtime_room7 >= 1000)
  238.     { lv7 = !lv7;
  239.       duration7 = random( lighting_time_min, lighting_time_max);
  240.       savedtime_room7 = current_time;
  241.       digitalWrite(room7, lv7);
  242.  
  243.     }
  244.   }
  245.   //=========================================//
  246.   //              Pomiary                    //
  247.   //=========================================//
  248.   RawValue1 = analogRead(analogIn1);
  249.   Voltage1 = (RawValue1 / 1024.0) * 5000;
  250.   Amps1 = ((Voltage1 - ACSoffset) / mVperAmp);
  251.   Amps1 = Amps1*Voltage4;
  252.   RawValue2 = analogRead(analogIn2);
  253.   Voltage2 = (RawValue2 / 1024.0) * 5000;
  254.   Amps2 = ((Voltage2 - ACSoffset) / mVperAmp);
  255.   Amps2 = Amps2 * 5;
  256.   RawValue4=analogRead(analogIn4);
  257.   Voltage4=((RawValue4/1024.0)*5);
  258.   //=================================================//
  259.   //przetworzenie wyników pomiarów i ich wyświetlenie//
  260.   //=================================================//
  261.   if (current_time - savedtime_pomiar >= pomiartime)
  262.   { savedtime_pomiar = current_time;
  263.     RawValue3 = analogRead(analogIn3);
  264.     Voltage3 = (RawValue3 / 1024.0) * 5000;
  265.     Voltage3 = Voltage3 - 0.3;
  266.     power1 = Voltage3 * Amps1;
  267.     lcd.setCursor(0, 0);
  268.     lcd.setCursor(3, 0);
  269.     lcd.print(Amps1, 2);
  270.     lcd.setCursor(3, 1);
  271.     lcd.print(Amps2, 2);
  272.   }
  273.  
  274.  
  275.   //==============================================
  276.   //                      RTC                   //
  277.   //==============================================
  278.   //sekundy
  279.   if (current_time - savedtimeRTC >= 1000)
  280.   { savedtimeRTC = current_time;
  281.     s++;
  282.     //minuty
  283.     if (s >= 60) {
  284.       s = 0;
  285.       m++;
  286.     }
  287.     //godziny
  288.     if (m >= 60) {
  289.       m = 0;
  290.       h++;
  291.     }
  292.     //doba
  293.     if (h >= 24) {
  294.       h = 0;
  295.     }
  296.     //wyświetlanie godziny
  297.     lcd.setCursor(12, 0);
  298.     if (h < 10) {
  299.       lcd.print(0);
  300.     }
  301.     lcd.print(h);
  302.     lcd.print(":");
  303.     if (m < 10) {
  304.       lcd.print(0);
  305.     }
  306.     lcd.print(m);
  307.     lcd.print(":");
  308.     if (s < 10) {
  309.       lcd.print(0);
  310.     }
  311.     lcd.println(s);
  312.   }
  313.   //========================================//
  314.   //                 Czas makieta           //
  315.   //========================================//
  316.   //sekundy
  317.   if (current_time - savedtimeRTCm >= 1)
  318.   { savedtimeRTCm = current_time;
  319.     sm = sm + 11;
  320.     //minuty
  321.     if (sm >= 60)
  322.     { sm = 0 ;
  323.       mm++;
  324.     }
  325.     //godziny
  326.     if (mm >= 60) {
  327.       mm = 0;
  328.       hm++;
  329.     }
  330.     //doba
  331.     if (hm >= 24) {
  332.       hm = 0;
  333.     }
  334.     //wyświetlanie godziny
  335.     lcd.setCursor(12, 1);
  336.     if (hm < 10) {
  337.       lcd.print(0);
  338.     }
  339.     lcd.print(hm);
  340.     lcd.print(":");
  341.     if (mm < 10) {
  342.       lcd.print(0);
  343.     }
  344.     lcd.print(mm);
  345.     lcd.print(":");
  346.  
  347.     if (sm < 10) {
  348.       lcd.print(0);
  349.     }
  350.     lcd.println(sm);
  351.   }
  352.   //====================
  353.   //       lcd        //
  354.   //=====================
  355.   lcd.setCursor(9, 0);
  356.   lcd.print("RTC");
  357.   lcd.setCursor(9, 1);
  358.   lcd.print("TM");
  359.   lcd.setCursor(0, 2);
  360.   lcd.print("B=");
  361.   lcd.print(RawValue4);
  362.   lcd.setCursor(0, 0);
  363.   lcd.print("Pi=");
  364.   lcd.setCursor(0, 1);
  365.   lcd.print("Po=");
  366.   lcd.setCursor(0, 3);
  367.   lcd.print("U=");
  368.   //==============
  369.   //noce i dnie //
  370.   //==============
  371.   if (hm >= 6 && hm <= 19) {
  372.     stan = 1;
  373.   }
  374.   if (hm < 6 && hm < 19) {
  375.     stan = 2;
  376.   }
  377.   //============================//
  378.   // obsługa panelu sterowania  //
  379.   //============================//
  380. 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)
  381. {lv1=0;
  382. lv2=0;
  383. lv3=0;
  384. lv4=0;
  385. lv5=0;
  386. lv6=0;
  387. lv7=0;
  388. lv8=0;
  389. lv9=0;
  390. lv10=0;}
  391. if(digitalRead(s1)==1){lv1=1;stan=3; }
  392. if(digitalRead(s2)==1){lv2=1; stan=3;}
  393. if(digitalRead(s3)==1){lv3=1; ;stan=3;}
  394. if(digitalRead(s4)==1){lv4=1; stan=3;}
  395. if(digitalRead(s5)==1){lv5=1;stan=3;}
  396. if(digitalRead(s6)==1){lv6=1; stan=3;}
  397. if(digitalRead(s7)==1){lv7=1; stan=3;}
  398. if(digitalRead(s8)==1){lv8=1; stan=3;}
  399. if(digitalRead(s9)==1){lv9=1; stan=3;}
  400. if(digitalRead(s10)==1){lv10=1; ;stan=3;}
  401.  
  402. 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){
  403. if(digitalRead(s1)==0){lv1=0; }
  404. if(digitalRead(s2)==0){lv2=0;}
  405. if(digitalRead(s3)==0){lv3=0; }
  406. if(digitalRead(s4)==0){lv4=0; }
  407. if(digitalRead(s5)==0){lv5=0; }
  408. if(digitalRead(s6)==0){lv6=0; }
  409. if(digitalRead(s7)==0){lv7=0; }
  410. if(digitalRead(s8)==0){lv8=0; }
  411. if(digitalRead(s9)==0){lv9=0; }
  412. if(digitalRead(s10)==0){lv10=0;}
  413.  
  414. }
  415. 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){
  416.  
  417.  
  418.  
  419.  
  420. }
  421. if(lv1==1){digitalWrite(led1,1);
  422. digitalWrite(room1,1);}
  423. if(lv2==1){digitalWrite(led2,1);
  424. digitalWrite(room2,1);}
  425. if(lv3==1){digitalWrite(led3,1);
  426. digitalWrite(room3,1);}
  427. if(lv4==1){digitalWrite(led4,1);
  428. digitalWrite(room4,1);}
  429. if(lv5==1){digitalWrite(led5,1);
  430. digitalWrite(room5,1);}
  431. if(lv6==1){digitalWrite(led6,1);
  432. digitalWrite(room6,1);}
  433. if(lv7==1){digitalWrite(led7,1);
  434. digitalWrite(room7,1);}
  435. if(lv8==1){digitalWrite(led8,1);
  436. digitalWrite(room8,1);}
  437. if(lv9==1){digitalWrite(led9,1);
  438. }
  439. if(lv10==1){digitalWrite(led10,1);
  440. digitalWrite(room10,1);}
  441.  
  442. if(lv1==0){digitalWrite(led1,0);
  443. digitalWrite(room1,0);}
  444. if(lv2==0){digitalWrite(led2,0);
  445. digitalWrite(room2,0);}
  446. if(lv3==0){digitalWrite(led3,0);
  447. digitalWrite(room3,0);}
  448. if(lv4==0){digitalWrite(led4,0);
  449. digitalWrite(room4,0);}
  450. if(lv5==0){digitalWrite(led5,0);
  451. digitalWrite(room5,0);}
  452. if(lv6==0){digitalWrite(led6,0);
  453. digitalWrite(room6,0);}
  454. if(lv7==0){digitalWrite(led7,0);
  455. digitalWrite(room7,0);}
  456. if(lv8==0){digitalWrite(led8,0);
  457. digitalWrite(room8,0);}
  458. if(lv9==0){digitalWrite(led9,0);
  459. digitalWrite(room9,0);}
  460. if(lv10==0){digitalWrite(led10,0);
  461. digitalWrite(room10,0);}
  462. Serial.println(lv9);
  463. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement