Hallo,
De afgelopen tijd heb ik het (redelijk) druk gehad.
ondanks dat ben ik toch een aantal avonden met mijn arduinos aan het prutsen geweest.
heb wat standaard voorbeelden genomen die ik zelf heb geprobeerd uit te werken.
het is mij echter helaas nog niet gelukt om dit werkend te krijgen.
ik denk dat het een en ander nog mist in mijn programma's, maar wat mist er/doe ik fout ?
de code voor het versturen van een pakketje (draait op Arduino Ethernet):
// Voor de Arduino Ethernet !!
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x8D, 0xE6};
byte ip[] = { 192, 168, 0, 11 };
byte gw[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
unsigned int localPort = 8888; // local port to listen on
// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;
const int buttonPin = 2;
int buttonState = 0;
void setup() {
Serial.begin(9600);
Ethernet.begin(mac,ip);
Udp.begin(localPort);
pinMode(buttonPin, INPUT);
Serial.println("verbinding met Arduino Ethernet");
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
Serial.println("Pin 2 hoog");
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write("hello");
Udp.endPacket();
delay(1000);
} else {
Serial.println("Pin 2 laag");
delay(1000);
}
}
de code voor het ontvangen van een pakketje (draait op Arduino Uno + Ethernet shield):
// voor de Arduino Uno + Ethernet !!
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.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, 0xFE, 0xED};
byte ip[] = { 192, 168, 0, 10 };
byte gw[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
unsigned int localPort = 8888; // local port to listen on
// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
void setup() {
Serial.begin(9600);
Serial.println("verbinding met Arduino Uno + shield");
Ethernet.begin(mac,ip);
Udp.begin(localPort);
}
void loop() {
int packetSize = Udp.parsePacket();
if(packetSize)
{
Serial.print("Received packet of size ");
Serial.println(packetSize);
Serial.print("From ");
IPAddress remote = Udp.remoteIP();
for (int i =0; i < 4; i++)
{
Serial.print(remote[i], DEC);
if (i < 3)
{
Serial.print(".");
}
}
Serial.print(", port ");
Serial.println(Udp.remotePort());
// read the packet into packetBufffer
Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
Serial.println("Contents:");
Serial.println(packetBuffer);
}
}
Wat gaat er fout bij bovenstaande programma's ?
Probeer het nu met een "hello" berichtje, later wil ik zoals ik in mijn
eerste bericht vermeld er IO mee aansturen.
"broncode" arduinosite: http://arduino.cc/en/Reference/EthernetUDPWrite en http://arduino.cc/en/Reference/EthernetUDPRead
Met vriendelijke groet,
Matthijs