0
Καλησπέρα σ’ όλους.
Θα ήθελα την σκέψη και την βοήθεια σας σχετικά με μια εφαρμογή που προσπαθώ να κάνω. Έχω ένα Arduino nano, ένα Ethernet, ένα rtc DS3231 και ένα relay. Σκοπός μου είναι να ανοίξω ένα relay, να πάρω και να αποθηκεύσω από το rtc έναv στιγμιαίο χρόνο (π.χ σε μορφή “12:00:00”), να τον προσθέσω με μια σταθερά που του ορίζω (DelayTime) και να τον συγκρίνω με τον πραγματικό χρόνο για να κλείσει το relay. Δεν θέλω να χρησιμοποιήσω εντολές όπως millis, while και for οι οποίες “παγώνουν” το πρόγραμμα.
Κάθε βοήθεια δεκτήΕυχαριστώ
#include <DS3231.h>
#include <Ethernet.h>
#include <SPI.h>
#include <Wire.h>
DS3231 rtc(SDA, SCL);
int CH1 = 5;
String DelayTime ="00:02:00";
String readString;
byte ip[] = {192, 168, 1, 99 };
byte gateway[] = {192, 168, 1, 1 };
byte subnet[] = {255, 255, 255, 0 };
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server = EthernetServer(80);
void setup() {
Serial.begin(9600);
Wire.begin();
rtc.begin();
pinMode(CH1, OUTPUT);
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print("Server started at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 10");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("<center><input type=submit value=ON style=width:100px;height:45px onClick=location.href='/?on~'>");
digitalWrite(CH1, HIGH);
if(readString.indexOf('~') >0)
{ rtc.getTimeStr();
digitalWrite(CH1, LOW);
}
client.println("</html>");
break;
}
if (c == '\n') {currentLineIsBlank = true;}
else if (c != '\r') {currentLineIsBlank = false;}
}
}
delay(1);
client.stop();
Serial.println("client disconnected");
}
}