Hallo,
Ik ben bezig een generator te automatiseren, dat is een heel verhaal, en ik ben er nog niet helemaal uit.
De bedoeling is, dat als je op het knopje drukt, dan start de generator. nog een keer knopje, generator is weer uit.
(trekmagneet aan = brandstofpomp open, startmotor aan, als moter loopt, dan startmotor weer uit, anders, na een 10 seconden de startmotor toch af, anders gaat ie stuk.)
Een prototype van dit idee is inmiddels werkend.
Maar nu komen er allemaal vervolgproblemen.
Ik wil er 1 noemen.
-Dan kom ik thuis, en dan staat de Generator opeens aan, en dan denk ik, hè, ik had 'm toch niet aangezet?
Dit kwam pas vanaf het 2e knopje 40 meter verder, in de stuurhut. (Boot)
-Nog later kwam ik erachter.
Er liggen zoveel kabels, dat er interferentie is.
Als ik de omvormer af zet, dan start de generator, terwijl het toch echt compleet van mekaar gescheiden lijkt. (misschien alleen de aarde van de omvormer, en de massa van de generator (én Arduino)
Dus, is er nu een LAN draad, en dan komt daar een 2e Arduino op, met een knopje, problem solved.
Maar hoe zorg ik nu, in een website, die de Arduino stuurt, dat de waarde van de sensors (oliedruk/temperatuur, volts van de batterijen) elke 5 seconden zich verversen, terwijl het knopje (evt. meerdere) niet ververst wordt, want dat is irritant.
Een proef-sketsch:
[i]#include <SPI.h>
#include <Ethernet.h>
//Arduino Uno and Ethernetshield.
//Pin 4, 10, 11, 12, 13 in use by Arduino.
//Scetch makes Webpage with Radiobuttons to swich each Pin on/off.
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = {
192, 168, 0, 90 }; // static ip of Arduino for Dlink
byte gateway[] = {
192, 168, 0, 1 }; // gateway address
byte subnet[] = {
255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //web server port
String HttpHeader = String(32);
int myPins[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
void setup(){
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
//initialize variable
HttpHeader="";
for (int i=5; i < 10; i++){
pinMode(i, OUTPUT);
digitalWrite(i,LOW);
}
}
void loop(){
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char C = client.read();
//store characters to string
HttpHeader = HttpHeader+C;
for (int i=5; i < 10; i++){
if (C == i+48) { C = client.read();HttpHeader = HttpHeader+C; C = client.read(); myPins[i] = C-48; HttpHeader = HttpHeader+C;}
}
//if HTTP request has ended
if (C == '\n') {
// start of web page
char myChar = 34; // appeltroffies doorsturen.
// client.println("HTTP/1.1 200 OK");
// client.println("Content-Type: text/html");
client.print("<html><head>");
client.print("<meta http-equiv=");
client.print(myChar);
client.print("refresh");
client.print(myChar);
client.print("content=");
client.print(myChar);
client.print("5");
client.print(myChar);
client.print("></head><body>");
client.print("
");
client.println("arduino");
client.print("
");
client.print("
");
client.print("Sensor A0 ");
client.println(analogRead(A0));
client.print("
");
client.print("Sensor A1 ");
client.println(analogRead(A1));
client.print("
");
client.print("
");
//client.println(HttpHeader);
//client.print("
");
for (int i=5; i < 10; i++){
if (myPins[i] == 0) {digitalWrite(i,LOW); }
else {digitalWrite(i,HIGH);}
//client.print("Pin ");client.println(i);client.print(" = ");client.print(myPins[i]);
}
//client.print("
");
//client.print("
");
client.print("<form method=get>");
for (int i=5; i < 10; i++){
client.print("Pin ");client.print(i);
client.print("<input type='radio' name=");
client.print(i);client.print(" value='1' ");
if (myPins[i]== 1) {client.print("checked=true ");}
client.print("> aan");
client.print("<input type='radio' name=");
client.print(i);client.print(" value='0' ");
if (myPins[i]== 0) {client.print("checked=true ");}
client.print("> uit
");
}
client.print("
");
client.print("
");
client.print("<input type=submit value=submit></form>");
client.print("</body></html>");
//clearing string for next read
HttpHeader="";
//stopping client
client.stop();
}
}
}
}
}
[/i]
Het gaat er dus om, dat de sensor info wel wordt ververst, maar de drukknoppen niet.
Hoe?