Advertisement
Guest User

Untitled

a guest
Dec 6th, 2022
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.88 KB | Source Code | 0 0
  1. #include <SPI.h>
  2. #include <Ethernet.h>
  3. #include <Controllino.h>
  4.  
  5. //zmienne webservera===================
  6. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address DE:AD:BE:EF:FE:ED
  7. byte ip[] = { 192, 168, 1, 10 }; // ip in lan
  8. byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
  9. byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
  10. EthernetServer server(80); //server port
  11. String incoming;
  12. //=====================================
  13.  
  14. //zmienne zegara 1Hz ==================
  15. unsigned long previousMillis = 0;
  16. unsigned long currentMillis;
  17. int cntSekundy = 0;
  18. bool zegar1Hz = false;
  19. //=====================================
  20.  
  21. void setup(){
  22.  
  23. pinMode(CONTROLLINO_A0, INPUT);
  24. pinMode(CONTROLLINO_A1, INPUT);
  25. pinMode(CONTROLLINO_A2, INPUT);
  26. pinMode(CONTROLLINO_A3, INPUT);
  27. pinMode(CONTROLLINO_A4, INPUT);
  28. pinMode(CONTROLLINO_A5, INPUT);
  29. pinMode(CONTROLLINO_A6, INPUT);
  30. pinMode(CONTROLLINO_A7, INPUT);
  31. pinMode(CONTROLLINO_A8, INPUT);
  32. pinMode(CONTROLLINO_A9, INPUT);
  33. pinMode(CONTROLLINO_IN0, INPUT);
  34. pinMode(CONTROLLINO_IN1, INPUT);
  35.  
  36. pinMode(CONTROLLINO_D0, OUTPUT);
  37. pinMode(CONTROLLINO_D1, OUTPUT);
  38. pinMode(CONTROLLINO_D2, OUTPUT);
  39. pinMode(CONTROLLINO_D3, OUTPUT);
  40. pinMode(CONTROLLINO_D4, OUTPUT);
  41. pinMode(CONTROLLINO_D5, OUTPUT);
  42. pinMode(CONTROLLINO_D6, OUTPUT);
  43. pinMode(CONTROLLINO_D7, OUTPUT);
  44. pinMode(CONTROLLINO_D8, OUTPUT);
  45. pinMode(CONTROLLINO_D9, OUTPUT);
  46. pinMode(CONTROLLINO_D10, OUTPUT);
  47. pinMode(CONTROLLINO_D11, OUTPUT);
  48.  
  49. pinMode(CONTROLLINO_R0, OUTPUT);
  50. pinMode(CONTROLLINO_R1, OUTPUT);
  51. pinMode(CONTROLLINO_R2, OUTPUT);
  52. pinMode(CONTROLLINO_R3, OUTPUT);
  53. pinMode(CONTROLLINO_R4, OUTPUT);
  54. pinMode(CONTROLLINO_R5, OUTPUT);
  55. pinMode(CONTROLLINO_R6, OUTPUT);
  56. pinMode(CONTROLLINO_R7, OUTPUT);
  57. pinMode(CONTROLLINO_R8, OUTPUT);
  58. pinMode(CONTROLLINO_R9, OUTPUT);
  59.  
  60.  
  61.  
  62. //start Ethernet
  63. Ethernet.begin(mac,ip);
  64. server.begin();
  65.  
  66. //enable serial data print
  67. Serial.begin(9600);
  68. Serial.println(Ethernet.localIP()); // print your IP Address on Serial Monitor
  69. }
  70.  
  71. void loop(){
  72.  
  73. bool bCzujnikBramaOtwarta = digitalRead(CONTROLLINO_A0);//czujnik otwarcia bramy
  74. bool bCzujnikBramaZamknieta = digitalRead(CONTROLLINO_A1);//czujnik zamkniecia bramy
  75. bool bCzujnikAutoWBramie = digitalRead(CONTROLLINO_A2);//czujnik obecnosci samochodu
  76. bool input3 = digitalRead(CONTROLLINO_A3);
  77.  
  78. bool bPodtrzymajOtwarcieBramy = digitalRead(CONTROLLINO_D0);
  79. bool output1 = digitalRead(CONTROLLINO_D1);
  80. bool output2 = digitalRead(CONTROLLINO_D2);
  81. bool output3 = digitalRead(CONTROLLINO_D3);
  82.  
  83. bool relay0 = digitalRead(CONTROLLINO_R0);
  84. bool relay1 = digitalRead(CONTROLLINO_R1);
  85. bool relay2 = digitalRead(CONTROLLINO_R2);
  86. bool relay3 = digitalRead(CONTROLLINO_R3);
  87.  
  88. //generowanie zegara 1 Hz=======================
  89. currentMillis = millis();//odczytanie czasu od wystartowania sterownika z milisekundach
  90. if (currentMillis - previousMillis >= 500) {//500 ms interwal zmiany zeby fala zegar byl 1Hz
  91.  
  92. previousMillis = currentMillis;
  93.  
  94. if (zegar1Hz == false) {
  95. zegar1Hz = true;
  96. //Serial.println("cyk"); - do debugowania zegara
  97. }
  98. else {
  99. zegar1Hz = false;
  100. }
  101. }
  102. //==============================================
  103.  
  104. //odmierzanie sekund do pomiaru czasu otwarcia bramy
  105. if (zegar1Hz){
  106. cntSekundy++;
  107. }
  108.  
  109. //jesli minelo 60 sekund kiedy auto nie jest w bramie, nie jest podtrzymane otwarcie bramy i brama nie jest zamknieta - zamknij brame
  110. if (cntSekundy >= 60 && !bPodtrzymajOtwarcieBramy && (!bCzujnikBramaZamknieta || bCzujnikAutoWBramie)){
  111. cntSekundy = 0;
  112. digitalWrite(CONTROLLINO_R0, HIGH);
  113. Serial.println("Wyslano sygnal zamknij/otworz brame");
  114. delay(1000);
  115. digitalWrite(CONTROLLINO_R0, LOW);
  116. Serial.println("Sygnal zamknij/otworz brame zakonczony");
  117. }
  118.  
  119.  
  120.  
  121.  
  122. // Create a client connection
  123. EthernetClient client = server.available();
  124. if (client) {
  125. while (client.connected()) {
  126. if (client.available()) {
  127. char c = client.read();
  128.  
  129. //read char by char HTTP request
  130. if (incoming.length() < 100) {
  131.  
  132. //store characters to string
  133. incoming += c;
  134. //Serial.print(c);
  135. }
  136.  
  137. //if HTTP request has ended
  138. if (c == '\n') {
  139.  
  140. ///////////////
  141. Serial.println(incoming); //print to serial monitor for debuging
  142.  
  143. //now output HTML data header
  144. if(incoming.indexOf('?') >=0) { //don't send new page
  145. client.println("HTTP/1.1 204 no data");
  146. client.println();
  147. client.println();
  148. }
  149. else {
  150. client.println("HTTP/1.1 200 OK"); //send new page
  151. client.println("Content-Type: text/html");
  152. client.println();
  153.  
  154. client.println("<html>");
  155. client.println("<head>");
  156. client.println("<TITLE> Sm@rt_Garaz </TITLE>");
  157. client.println("</head>");
  158.  
  159. client.println("<body>");
  160. client.println("<div>");
  161. client.println("<FORM action=\"http://192.168.1.10/\">");
  162. client.println("<input type=radio name=R0 value=1 checked="checked" style="opacity: 0%;"><br>");
  163. client.println("<input type=submit value="Otworz/zamknij" style="font-size: 81px; padding: 10px; border-radius: 20px;">");
  164. client.println("</FORM>");
  165. client.println("</div>");
  166.  
  167. client.println("<div style="width: 30%; padding: 10px">");
  168. client.println("<div style="background-color: honeydew; width: fit-content; padding: 10px; border-style: groove; float: right;">");
  169. client.println("<H2>Czujniki:</H2>");
  170. if (bCzujnikBramaOtwarta)//czujnik otwarcia bramy
  171. {
  172. client.println("<h3 style="color: lawngreen;">otwarcia bramy: aktywny</h3>");
  173. }
  174. else
  175. {
  176. client.println("<h3 style="color: tomato;">otwarcia bramy: nieaktywny</h3> ");
  177. }
  178.  
  179.  
  180. if (bCzujnikBramaZamknieta)//czujnik zamkniecia bramy
  181. {
  182. client.println("<h3 style="color: lawngreen;">zamkniecia bramy: aktywny</h3>");
  183. }
  184. else
  185. {
  186. client.println("<h3 style="color: tomato;">zamkniecia bramy: nieaktywny</h3>");
  187. }
  188.  
  189. if (bCzujnikAutoWBramie)//czujnik obecnosci samochodu
  190. {
  191. client.println("<h3 style="color: lawngreen;">obecnosci samochodu: aktywny</h3>");
  192. }
  193. else
  194. {
  195. client.println("<h3 style="color: tomato;">obecnosci samochodu: nieaktywny</h3>");
  196. }
  197. client.println("</div>");
  198.  
  199. client.println("<H4>Wl/Wyl podtrzymanie otwarcia<br> bramy (wyjscie DO0):</H4> ");
  200. client.println("<FORM action=\"http://192.168.1.10/\">");
  201. client.println("<input type=radio name=DO0 value=1 checked="checked" style="opacity: 0%;"><br>");
  202. client.println("<input type=submit value=Wlacz style="font-size: 50px; padding: 10px; border-radius: 20px; background-color: lawngreen;">");
  203. client.println("</FORM>");
  204.  
  205. client.println("<FORM action=\"http://192.168.1.10/\">");
  206. client.println("<input type=radio name=DO0 value=0 checked="checked" style="opacity: 0%;"><br>");
  207. client.println("<input type=submit value=Wylacz style="font-size: 50px; padding: 10px; border-radius: 20px; background-color: tomato;">");
  208. client.println("</div>");
  209. client.println("</BODY>");
  210. client.println("</HTML>");
  211. }
  212.  
  213. delay(1);
  214. //stopping client
  215. client.stop();
  216.  
  217. //funkcje pochodzace z webserwera:
  218.  
  219. //wlacz podtrzymanie otwarcia bramy
  220. if(incoming.indexOf("GET /?DO0=1") >=0 && !bPodtrzymajOtwarcieBramy)
  221. {
  222. digitalWrite(CONTROLLINO_D0, HIGH);//wlacza podtrzymanie otwarcia bramy
  223. Serial.println("Wlaczono podtrzymanie otwarcia bramy");
  224. }
  225.  
  226. //wylacz podtrzymanie otwarcia bramy
  227. if(incoming.indexOf("GET /?DO0=0") >=0)//wylacza podtrzymanie otwarcia bramy
  228. {
  229. digitalWrite(CONTROLLINO_D0, LOW);
  230. Serial.println("Wylaczono podtrzymanie otwarcia bramy");
  231. }
  232.  
  233. //wyslij styk zamknij/otworz brame
  234. if(incoming.indexOf("GET /?R0=1") >=0 && !relay0)//zamknij/otworz brame
  235. {
  236. digitalWrite(CONTROLLINO_R0, HIGH);
  237. digitalWrite(CONTROLLINO_D0, LOW);//wylacz podtrzymanie otwarcia bramy
  238. Serial.println("Wyslano sygnal zamknij/otworz brame");
  239. delay(1000);//pstryknij stykiem na sekunde zeby zasymulowac nacisniecie pilota
  240. digitalWrite(CONTROLLINO_R0, LOW);
  241. Serial.println("Sygnal zamknij/otworz brame zakonczony");
  242. }
  243.  
  244. delay(10);
  245. incoming=" ";//clear
  246.  
  247. }
  248. }
  249. }
  250. }
  251. //kasowanie zegara 1Hz zeby zrobic z niego puls
  252. zegar1Hz = false;
  253. }
Tags: #controllino
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement