Dag Jantje,
Bedankt voor de info, inmiddels heb ik de voorbeeldscriptjes van de EthernetShield al bij elkaar gedaan en iets gemodificeerd. Wanneer hij een aanvraag krijgt, gaat de webserver antwoorden en anders is het mogelijk een pakketje te versturen (als client). Dus niet tegelijkertijd, maar zeker werkbaar.
Dus het is gelukt!
Ter info: dit is mijn script:
/*
GPIO-Ethernet code v2 by Robert-Jan.
some source code used from the examples, credits:
Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xAA, 0xAA };
IPAddress ip(192,168,1, 45);
IPAddress ip_server(192,168,1,44); // PHP webserver
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
int led1 = 7;
int button1 = 3;
boolean flag1 = false;
int i1 = 0;
void setup() {
pinMode(A0, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(button1, INPUT);
// Open serial communications and wait for port to open:
Serial.begin(9600);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
digitalWrite(A0, HIGH);
Serial.println("Client connected");
boolean currentLineIsBlank = true;
String buffer = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
// Serial.print(c); // commented voor performance
buffer+=c;
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
if (digitalRead(7)){
client.print(" GPO 1 is <font color='green'>HOOG</font>");
Serial.println("GPO 1 hoog gemaakt");
}else{
client.print(" GPO 1 is <font color='red'>LAAG</font>");
Serial.println("GPO 1 laag gemaakt");
}
client.println("<br />");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
buffer="";
} else if (c == '\r') {
if(buffer.indexOf("GET /?gpo=")>=0) {
// Serial.println(buffer.substring(10,11));
// GPO 1 hoog
if (buffer.substring(10,11) == "1") {
digitalWrite(led1,HIGH);
}
// GPO 1 laag
if (buffer.substring(10,11) == "0") {
digitalWrite(led1,LOW);
}
}
}
else {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disonnected");
Serial.println("");
} else {
digitalWrite(A0, LOW);
int sensorValue = digitalRead(3);
if (sensorValue == HIGH) {
flag1 = true;
} else {
flag1 = false;
i1 = 0;
}
if (flag1 == true && i1 == 0) {
Serial.println("GPI 1 hoog");
flag1 = false;
i1 = 1;
if (client.connect(ip_server, 80)) {
Serial.println("connected");
Serial.println("");
// Make a HTTP request:
client.println("GET /gpi_1.php HTTP/1.0");
client.println();
if (!client.connected()) {
client.stop();
}
} else {
Serial.println("connection failed");
}
}
}
}