Paso 5: Aquí está el código
/*Este bosquejo envía una cadena de mensaje UDP
Anthony Kelly 11/07/2012
adaptado de UDPSendReceive.pde:
21 de agosto de 2010
por Michael Margolis
Este código es de dominio público.
*/
#include < SPI.h > / / necesario para las versiones de Arduino más adelante que 0018
#include < Ethernet.h >
#include < EthernetUdp.h > / / biblioteca UDP: bjoern 30/12/2008
Introduzca una dirección de MAC y dirección IP para el controlador a continuación.
La dirección IP dependerá de tu red local:
mac de bytes [] = {}
0x90, 0xA2, 0xDA, 0 x 00, 0x85, 0x46};
Ip dirección IP (192, 168, 2, 177);
Dirección IP rem_ip (192, 168, 2, 178);
unsigned int PuertoLocal = 8887; / / local puerto a escuchar el
unsigned int remPort = 8888; / remoto / Puerto para enviar a
char rcv; / / Recibir carácter (hacer esto una matriz de cadena Rx)
char snd; / / Transmitir carácter (hacer esto una matriz de cadena Rx)
Definir las conexiones de Arduino
int swPin0 = A0;
int swPin1 = A1;
int LEDPin = 9;
int sw0, sw1, swd0, swd1;
Una instancia de EthernetUDP que nos permiten enviar y recibir paquetes sobre UDP void setup() {}
EthernetUDP Udp;
Serial.begin(9600) de ;
Ethernet.Begin(Mac,IP);
Serial.Print ("server es a");
Serial.println(Ethernet.localIP());
UDP.Begin(localPort);
pinMode(LEDPin,OUTPUT);
Fijar los pasadores a las entradas y permitir las pullups por lo que no necesitamos
externos de enderezamiento para los interruptores de
pinMode(swPin0,INPUT) de ;
pinMode(swPin1,INPUT);
digitalWrite(swPin0,HIGH); / / Habilitar Pullup
digitalWrite(swPin1,HIGH); Activar subida
}
void loop() {}
Si (RcvPkt()) {}
Acabo de recibir un paquete UDP para actuar en eso.
si (rcv == '1') {}
digitalWrite(LEDPin,HIGH);
Serial.println("ON");
}
else if (rcv == '0') {}
digitalWrite(LEDPin,LOW);
Serial.println("OFF");
}
}
¿ / / Lo hizo alguien basta con pulsar un botón?
swd0 = sw0; / / Recuerda el viejo valor del interruptor
sw0 = digitalRead(swPin0); / / Obtener el nuevo valor
swd1 = sw1;
SW1 = digitalRead(swPin1);
Si el valor anterior no se presiona (1) y el nuevo valor se pulsa (0)
Luego simplemente se presiona la tecla.
si (swd0 & &! sw0) snd = '1';
else if (swd1 & &! sw1) snd = '0';
otro snd = '-';
Enviar un paquete a la dirección IP y el puerto int RcvPkt() {}
si (snd! = '-') {}
Udp.beginPacket (rem_ip, remPort);
UDP.Write(SND);
Udp.endPacket();
}
Delay(100);
}
Si se dispone de datos, leer un paquete
packetSize de int = Udp.parsePacket();
if(packetSize)
{
Serial.Print ("paquete recibido de tamaño");
Serial.println(packetSize);
Serial.Print ("desde");
Dirección IP remoto = Udp.remoteIP();
para (int i = 0; i < 4; i ++)
{
Serial.Print (mando a distancia [i], DEC);
Si (i < 3)
{
Serial.Print(".");
}
}
Serial.Print (", puerto");
Serial.println(UDP.remotePort());
Lea el paquete en packetBufffer
Udp.read (y rcv, 1);
Serial.println("Contents:");
Serial.println(RCV);
}
volver packetSize;
}