Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Ethernet.h>
- #include <Controllino.h>
- //zmienne webservera===================
- byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address DE:AD:BE:EF:FE:ED
- byte ip[] = { 192, 168, 1, 10 }; // ip in lan
- byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
- byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
- EthernetServer server(80); //server port
- String incoming;
- //=====================================
- //zmienne zegara 1Hz ==================
- unsigned long previousMillis = 0;
- unsigned long currentMillis;
- int cntSekundy = 0;
- bool zegar1Hz = false;
- //=====================================
- void setup(){
- pinMode(CONTROLLINO_A0, INPUT);
- pinMode(CONTROLLINO_A1, INPUT);
- pinMode(CONTROLLINO_A2, INPUT);
- pinMode(CONTROLLINO_A3, INPUT);
- pinMode(CONTROLLINO_A4, INPUT);
- pinMode(CONTROLLINO_A5, INPUT);
- pinMode(CONTROLLINO_A6, INPUT);
- pinMode(CONTROLLINO_A7, INPUT);
- pinMode(CONTROLLINO_A8, INPUT);
- pinMode(CONTROLLINO_A9, INPUT);
- pinMode(CONTROLLINO_IN0, INPUT);
- pinMode(CONTROLLINO_IN1, INPUT);
- pinMode(CONTROLLINO_D0, OUTPUT);
- pinMode(CONTROLLINO_D1, OUTPUT);
- pinMode(CONTROLLINO_D2, OUTPUT);
- pinMode(CONTROLLINO_D3, OUTPUT);
- pinMode(CONTROLLINO_D4, OUTPUT);
- pinMode(CONTROLLINO_D5, OUTPUT);
- pinMode(CONTROLLINO_D6, OUTPUT);
- pinMode(CONTROLLINO_D7, OUTPUT);
- pinMode(CONTROLLINO_D8, OUTPUT);
- pinMode(CONTROLLINO_D9, OUTPUT);
- pinMode(CONTROLLINO_D10, OUTPUT);
- pinMode(CONTROLLINO_D11, OUTPUT);
- pinMode(CONTROLLINO_R0, OUTPUT);
- pinMode(CONTROLLINO_R1, OUTPUT);
- pinMode(CONTROLLINO_R2, OUTPUT);
- pinMode(CONTROLLINO_R3, OUTPUT);
- pinMode(CONTROLLINO_R4, OUTPUT);
- pinMode(CONTROLLINO_R5, OUTPUT);
- pinMode(CONTROLLINO_R6, OUTPUT);
- pinMode(CONTROLLINO_R7, OUTPUT);
- pinMode(CONTROLLINO_R8, OUTPUT);
- pinMode(CONTROLLINO_R9, OUTPUT);
- //start Ethernet
- Ethernet.begin(mac,ip);
- server.begin();
- //enable serial data print
- Serial.begin(9600);
- Serial.println(Ethernet.localIP()); // print your IP Address on Serial Monitor
- }
- void loop(){
- bool bCzujnikBramaOtwarta = digitalRead(CONTROLLINO_A0);//czujnik otwarcia bramy
- bool bCzujnikBramaZamknieta = digitalRead(CONTROLLINO_A1);//czujnik zamkniecia bramy
- bool bCzujnikAutoWBramie = digitalRead(CONTROLLINO_A2);//czujnik obecnosci samochodu
- bool input3 = digitalRead(CONTROLLINO_A3);
- bool bPodtrzymajOtwarcieBramy = digitalRead(CONTROLLINO_D0);
- bool output1 = digitalRead(CONTROLLINO_D1);
- bool output2 = digitalRead(CONTROLLINO_D2);
- bool output3 = digitalRead(CONTROLLINO_D3);
- bool relay0 = digitalRead(CONTROLLINO_R0);
- bool relay1 = digitalRead(CONTROLLINO_R1);
- bool relay2 = digitalRead(CONTROLLINO_R2);
- bool relay3 = digitalRead(CONTROLLINO_R3);
- //generowanie zegara 1 Hz=======================
- currentMillis = millis();//odczytanie czasu od wystartowania sterownika z milisekundach
- if (currentMillis - previousMillis >= 500) {//500 ms interwal zmiany zeby fala zegar byl 1Hz
- previousMillis = currentMillis;
- if (zegar1Hz == false) {
- zegar1Hz = true;
- //Serial.println("cyk"); - do debugowania zegara
- }
- else {
- zegar1Hz = false;
- }
- }
- //==============================================
- //odmierzanie sekund do pomiaru czasu otwarcia bramy
- if (zegar1Hz){
- cntSekundy++;
- }
- //jesli minelo 60 sekund kiedy auto nie jest w bramie, nie jest podtrzymane otwarcie bramy i brama nie jest zamknieta - zamknij brame
- if (cntSekundy >= 60 && !bPodtrzymajOtwarcieBramy && (!bCzujnikBramaZamknieta || bCzujnikAutoWBramie)){
- cntSekundy = 0;
- digitalWrite(CONTROLLINO_R0, HIGH);
- Serial.println("Wyslano sygnal zamknij/otworz brame");
- delay(1000);
- digitalWrite(CONTROLLINO_R0, LOW);
- Serial.println("Sygnal zamknij/otworz brame zakonczony");
- }
- // Create a client connection
- EthernetClient client = server.available();
- if (client) {
- while (client.connected()) {
- if (client.available()) {
- char c = client.read();
- //read char by char HTTP request
- if (incoming.length() < 100) {
- //store characters to string
- incoming += c;
- //Serial.print(c);
- }
- //if HTTP request has ended
- if (c == '\n') {
- ///////////////
- Serial.println(incoming); //print to serial monitor for debuging
- //now output HTML data header
- if(incoming.indexOf('?') >=0) { //don't send new page
- client.println("HTTP/1.1 204 no data");
- client.println();
- client.println();
- }
- else {
- client.println("HTTP/1.1 200 OK"); //send new page
- client.println("Content-Type: text/html");
- client.println();
- client.println("<html>");
- client.println("<head>");
- client.println("<TITLE> Sm@rt_Garaz </TITLE>");
- client.println("</head>");
- client.println("<body>");
- client.println("<div>");
- client.println("<FORM action=\"http://192.168.1.10/\">");
- client.println("<input type=radio name=R0 value=1 checked="checked" style="opacity: 0%;"><br>");
- client.println("<input type=submit value="Otworz/zamknij" style="font-size: 81px; padding: 10px; border-radius: 20px;">");
- client.println("</FORM>");
- client.println("</div>");
- client.println("<div style="width: 30%; padding: 10px">");
- client.println("<div style="background-color: honeydew; width: fit-content; padding: 10px; border-style: groove; float: right;">");
- client.println("<H2>Czujniki:</H2>");
- if (bCzujnikBramaOtwarta)//czujnik otwarcia bramy
- {
- client.println("<h3 style="color: lawngreen;">otwarcia bramy: aktywny</h3>");
- }
- else
- {
- client.println("<h3 style="color: tomato;">otwarcia bramy: nieaktywny</h3> ");
- }
- if (bCzujnikBramaZamknieta)//czujnik zamkniecia bramy
- {
- client.println("<h3 style="color: lawngreen;">zamkniecia bramy: aktywny</h3>");
- }
- else
- {
- client.println("<h3 style="color: tomato;">zamkniecia bramy: nieaktywny</h3>");
- }
- if (bCzujnikAutoWBramie)//czujnik obecnosci samochodu
- {
- client.println("<h3 style="color: lawngreen;">obecnosci samochodu: aktywny</h3>");
- }
- else
- {
- client.println("<h3 style="color: tomato;">obecnosci samochodu: nieaktywny</h3>");
- }
- client.println("</div>");
- client.println("<H4>Wl/Wyl podtrzymanie otwarcia<br> bramy (wyjscie DO0):</H4> ");
- client.println("<FORM action=\"http://192.168.1.10/\">");
- client.println("<input type=radio name=DO0 value=1 checked="checked" style="opacity: 0%;"><br>");
- client.println("<input type=submit value=Wlacz style="font-size: 50px; padding: 10px; border-radius: 20px; background-color: lawngreen;">");
- client.println("</FORM>");
- client.println("<FORM action=\"http://192.168.1.10/\">");
- client.println("<input type=radio name=DO0 value=0 checked="checked" style="opacity: 0%;"><br>");
- client.println("<input type=submit value=Wylacz style="font-size: 50px; padding: 10px; border-radius: 20px; background-color: tomato;">");
- client.println("</div>");
- client.println("</BODY>");
- client.println("</HTML>");
- }
- delay(1);
- //stopping client
- client.stop();
- //funkcje pochodzace z webserwera:
- //wlacz podtrzymanie otwarcia bramy
- if(incoming.indexOf("GET /?DO0=1") >=0 && !bPodtrzymajOtwarcieBramy)
- {
- digitalWrite(CONTROLLINO_D0, HIGH);//wlacza podtrzymanie otwarcia bramy
- Serial.println("Wlaczono podtrzymanie otwarcia bramy");
- }
- //wylacz podtrzymanie otwarcia bramy
- if(incoming.indexOf("GET /?DO0=0") >=0)//wylacza podtrzymanie otwarcia bramy
- {
- digitalWrite(CONTROLLINO_D0, LOW);
- Serial.println("Wylaczono podtrzymanie otwarcia bramy");
- }
- //wyslij styk zamknij/otworz brame
- if(incoming.indexOf("GET /?R0=1") >=0 && !relay0)//zamknij/otworz brame
- {
- digitalWrite(CONTROLLINO_R0, HIGH);
- digitalWrite(CONTROLLINO_D0, LOW);//wylacz podtrzymanie otwarcia bramy
- Serial.println("Wyslano sygnal zamknij/otworz brame");
- delay(1000);//pstryknij stykiem na sekunde zeby zasymulowac nacisniecie pilota
- digitalWrite(CONTROLLINO_R0, LOW);
- Serial.println("Sygnal zamknij/otworz brame zakonczony");
- }
- delay(10);
- incoming=" ";//clear
- }
- }
- }
- }
- //kasowanie zegara 1Hz zeby zrobic z niego puls
- zegar1Hz = false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement