From 6f56178340e179c353c0614d9b861735cf50c706 Mon Sep 17 00:00:00 2001 From: Tilman Date: Sun, 3 May 2020 08:53:22 +0200 Subject: [PATCH] Gabellichtschranke TCST 2103 - Version 2 --- garage/Garage_-_Lichtschranke.fzz | Bin 106006 -> 104758 bytes .../Garage_-_Nano_Micro_-_Lichtschranke.ino | 193 ++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 garage/Garage_-_Nano_Micro_-_Lichtschranke.ino diff --git a/garage/Garage_-_Lichtschranke.fzz b/garage/Garage_-_Lichtschranke.fzz index 4005ac36ff0c5088e18ac62a62e4c491a444edf5..428756f122ab45bfdc09d0d07d85192913017ae3 100644 GIT binary patch delta 22877 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 S$2azwPvt^Kkqq(h`tpBFI(%*b delta 24134 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 HNx%Fb>-uBQ diff --git a/garage/Garage_-_Nano_Micro_-_Lichtschranke.ino b/garage/Garage_-_Nano_Micro_-_Lichtschranke.ino new file mode 100644 index 0000000..398ccbf --- /dev/null +++ b/garage/Garage_-_Nano_Micro_-_Lichtschranke.ino @@ -0,0 +1,193 @@ +#include +#include + +// Enter a MAC address and IP address for your controller below. +byte mac[] = {0xA4, 0xDA, 0x49, 0xB8, 0x19, 0xA4}; +IPAddress ip(192, 168, 178, 52); +EthernetServer server(80); + +const int remotePin = 2; +const int motorPin = 3; + +const int ledPin = LED_BUILTIN; + +const int remoteButton = 6; +const int motorButton = 7; + +const int sensorPin = A0; + +void setup() { + Serial.begin(9600); + + // Check PINs + Serial.print("MISO: "); + Serial.println(PIN_SPI_MISO); + Serial.print("MOSI: "); + Serial.println(PIN_SPI_MOSI); + Serial.print("SCK: "); + Serial.println(PIN_SPI_SCK); + Serial.print("SS: "); + Serial.println(PIN_SPI_SS); + + pinMode(remotePin, OUTPUT); + pinMode(motorPin, OUTPUT); + pinMode(ledPin, OUTPUT); + pinMode(remoteButton, INPUT); + pinMode(motorButton, INPUT); + + + // disable SD card if one in the slot + pinMode(4, OUTPUT); + digitalWrite(4, HIGH); + + Serial.println("Starting ethernet"); + Ethernet.begin(mac, ip); + + Serial.println(Ethernet.localIP()); + + Serial.println("init complete"); +} + +void loop() { + if (digitalRead(remoteButton) == HIGH) { + Serial.println("Remote button pressed"); + triggerRemote(); + } + + if (digitalRead(motorButton) == HIGH) { + Serial.println("Motor button pressed"); + triggerMotor(); + } + + // listen for incoming clients + EthernetClient client = server.available(); + if (client) { + Serial.println("new client"); + // an http request ends with a blank line + bool currentLineIsBlank = true; + + byte trigger = 0; + int sensorValue = 0; + char uri[64]; + byte idx = 0; + boolean uriLine = false; + + while (client.connected()) { + if (client.available()) { + char c = client.read(); + + if (currentLineIsBlank && c == 'G') { + uriLine = true; + uri[idx] = c; + idx++; + } + else if (uriLine) { + if (c == '\n') { + uriLine = false; + uri[idx] = '\0'; + } + else { + uri[idx] = c; + idx++; + } + } + + Serial.write(c); + // if you've gotten to the end of the line (received a newline + // character) and the line is blank, the http request has ended, + // so you can send a reply + if (c == '\n' && currentLineIsBlank) { + // send a standard http response header + client.println("HTTP/1.1 200 OK"); + client.println("Content-Type: text/plain"); + client.println("Connection: close"); // the connection will be closed after completion of the response + client.println(); + if (uri[4] == '/' && uri[5] == 'r' && uri[6] == ' ') { + client.println("trigger remote"); + trigger = 1; + } + else if (uri[4] == '/' && uri[5] == 'm' && uri[6] == ' ') { + client.println("trigger motor"); + trigger = 2; + } + else if (uri[4] == '/' && uri[5] == 'a' && uri[6] == ' ') { + client.println("trigger all"); + trigger = 3; + } + else if (uri[4] == '/' && uri[5] == 'c' && uri[6] == ' ') { + client.println("check sensor"); + sensorValue = analogRead(sensorPin); + + if (sensorValue > 512) { + client.println("true"); + } + else { + client.println("false"); + } + } + else if (uri[4] == '/' && uri[5] == 'p' && uri[6] == ' ') { + client.println("ping"); + } + else { + client.println("not found"); + } + break; + } + if (c == '\n') { + // you're starting a new line + currentLineIsBlank = true; + } else if (c != '\r') { + // you've gotten a character on the current line + currentLineIsBlank = false; + } + } + } + // give the web browser time to receive the data + delay(20); + // close the connection: + client.stop(); + Serial.println("client disconnected"); + + if (trigger == 1) { + triggerRemote(); + } + else if (trigger == 2) { + triggerMotor(); + } + else if (trigger == 3) { + triggerAll(); + } + + trigger = 0; + } + +} + +void triggerRemote() { + Serial.println("triggerRemote"); + digitalWrite(remotePin, HIGH); + digitalWrite(ledPin, HIGH); + delay(1000); + digitalWrite(remotePin, LOW); + digitalWrite(ledPin, LOW); +} + +void triggerMotor() { + Serial.println("triggerMotor"); + digitalWrite(motorPin, HIGH); + digitalWrite(ledPin, HIGH); + delay(1000); + digitalWrite(motorPin, LOW); + digitalWrite(ledPin, LOW); +} + +void triggerAll() { + Serial.println("triggerAll"); + digitalWrite(remotePin, HIGH); + digitalWrite(motorPin, HIGH); + digitalWrite(ledPin, HIGH); + delay(1000); + digitalWrite(remotePin, LOW); + digitalWrite(motorPin, LOW); + digitalWrite(ledPin, LOW); +}