control infrarrojo por server ayuda

hola a todos.... soy nuevo en esto de los arduino por lo tanto necesito de sus colaboraciones en el tema

tengo 2 programas diferentes ambos encontrados en google el primero es un control remoto infrarrojo que controla mi equipo de sonido pulsando un boton lo prende y lo apaga...el segundo es un servidor con 1 boton en la web que prende un led, entonces en vez de prender el led quiero que envie el comando de prender y apagar el equipo de sonido cada vez que es presionado el boton de la pagina web...algo como unir los 2 en 1...
a continuacion los programas disponibles

control infrarrojo

#include <IRremote.h>
IRsend irsend;

const int buttonPin = 2;

int buttonState = 0;

unsigned int powerOn[68] = {4550,4450,550,600,550,500,600,550,600,500,600,1650,550,600,550,550,550,550,600,500,600,550,550,600,550,550,550,1650,600,600,500,550,550,550,550,600,550,1700,550,1650,550,1700,600,1650,550,550,550,600,550,550,550,1650,600,550,550,550,550,600,550,550,550,1700,550,1650,600,1650,550};

void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);

}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
irsend.sendRaw(powerOn,68,38);
delay(500);

}
}

boton server
#include "etherShield.h"

// please modify the following two lines. mac and ip have to be unique
// in your local area network. You can not have the same numbers in
// two devices:
static uint8_t mymac[6] = {0x00,0x02,0xF1,0x53,0x33,0x76};
static uint8_t myip[4] = {192,168,11,15};
static char baseurl[]="http://192.168.11.15/";
static uint16_t mywwwport =80; // listen port for tcp/www (max range 1-254)

#define BUFFER_SIZE 500
static uint8_t buf[BUFFER_SIZE+1];
#define STR_BUFFER_SIZE 22
static char strbuf[STR_BUFFER_SIZE+1];

EtherShield es=EtherShield();

// prepare the webpage by writing the data to the tcp send buffer
uint16_t print_webpage(uint8_t *buf, byte on_off);
int8_t analyse_cmd(char *str);

// LED cathode connects the Pin4, anode to 5V through 1K resistor
#define LED_PIN 4

void setup(){

/initialize enc28j60/
es.ES_enc28j60Init(mymac);
es.ES_enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz
delay(10);

/* Magjack leds configuration, see enc28j60 datasheet, page 11 */
// LEDA=greed LEDB=yellow
//
// 0x880 is PHLCON LEDB=on, LEDA=on
// enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
es.ES_enc28j60PhyWrite(PHLCON,0x880);
delay(500);
//
// 0x990 is PHLCON LEDB=off, LEDA=off
// enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
es.ES_enc28j60PhyWrite(PHLCON,0x990);
delay(500);
//
// 0x880 is PHLCON LEDB=on, LEDA=on
// enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
es.ES_enc28j60PhyWrite(PHLCON,0x880);
delay(500);
//
// 0x990 is PHLCON LEDB=off, LEDA=off
// enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
es.ES_enc28j60PhyWrite(PHLCON,0x990);
delay(500);
//
// 0x476 is PHLCON LEDA=links status, LEDB=receive/transmit
// enc28j60PhyWrite(PHLCON,0b0000 0100 0111 01 10);
es.ES_enc28j60PhyWrite(PHLCON,0x476);
delay(100);

//init the ethernet/ip layer:
es.ES_init_ip_arp_udp_tcp(mymac,myip,80);

pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW); // switch on LED
}

void loop(){
uint16_t plen, dat_p;
int8_t cmd;
byte on_off = 1;

plen = es.ES_enc28j60PacketReceive(BUFFER_SIZE, buf);

/*plen will ne unequal to zero if there is a valid packet (without crc error) */
if(plen!=0){

// arp is broadcast if unknown but a host may also verify the mac address by sending it to a unicast address.
if(es.ES_eth_type_is_arp_and_my_ip(buf,plen)){
es.ES_make_arp_answer_from_request(buf);
return;
}

// check if ip packets are for us:
if(es.ES_eth_type_is_ip_and_my_ip(buf,plen)==0){
return;
}

if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V){
es.ES_make_echo_reply_from_request(buf,plen);
return;
}

// tcp port www start, compare only the lower byte
if (buf[IP_PROTO_P]==IP_PROTO_TCP_V&&buf[TCP_DST_PORT_H_P]==0&&buf[TCP_DST_PORT_L_P]==mywwwport){
if (buf[TCP_FLAGS_P] & TCP_FLAGS_SYN_V){
es.ES_make_tcp_synack_from_syn(buf); // make_tcp_synack_from_syn does already send the syn,ack
return;
}
if (buf[TCP_FLAGS_P] & TCP_FLAGS_ACK_V){
es.ES_init_len_info(buf); // init some data structures
dat_p=es.ES_get_tcp_data_pointer();
if (dat_p==0){ // we can possibly have no data, just ack:
if (buf[TCP_FLAGS_P] & TCP_FLAGS_FIN_V){
es.ES_make_tcp_ack_from_any(buf);
}
return;
}
if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0){
// head, post and other methods for possible status codes see:
// HTTP/1.1: Status Code Definitions
plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n

200 OK

"));
goto SENDTCP;
}
if (strncmp("/ ",(char *)&(buf[dat_p+4]),2)==0){
plen=print_webpage(buf, on_off);
goto SENDTCP;
}
cmd=analyse_cmd((char *)&(buf[dat_p+5]));

if (cmd==2){
on_off=1;
digitalWrite(LED_PIN, LOW); // switch on LED
}
else if (cmd==3){
on_off=0;
digitalWrite(LED_PIN, HIGH); // switch off LED
}
plen=print_webpage(buf, on_off);

plen=print_webpage(buf, on_off);
SENDTCP: es.ES_make_tcp_ack_from_any(buf); // send ack for http get
es.ES_make_tcp_ack_with_data(buf,plen); // send data
}
}
}

}
// The returned value is stored in the global var strbuf
uint8_t find_key_val(char *str,char *key)
{
uint8_t found=0;
uint8_t i=0;
char *kp;
kp=key;
while(*str && *str!=' ' && found==0){
if (*str == *kp){
kp++;
if (*kp == '\0'){
str++;
kp=key;
if (*str == '='){
found=1;
}
}
}else{
kp=key;
}
str++;
}
if (found==1){
// copy the value to a buffer and terminate it with '\0'
while(*str && *str!=' ' && *str!='&' && i<STR_BUFFER_SIZE){
strbuf_=*str;_

  • i++;*
  • str++;*
  • }*
    _ strbuf*='\0';_
    _
    }_
    _
    return(found);_
    _
    }_
    int8_t analyse_cmd(char str)
    _
    {
    _
    * int8_t r=-1;*

* if (find_key_val(str,"cmd")){
_ if (strbuf < 0x3a && strbuf > 0x2f){_
_
// is a ASCII number, return it
_
_ r=(strbuf-0x30);_
_
}
_
* }*
* return r;*
}
uint16_t print_webpage(uint8_t buf, byte on_off)
_
{_
_
int i=0;*_

* uint16_t plen;*

* plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

Welcome to led server

"));*

* plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("



_
<form METHOD=get action=""));_
plen=es.ES_fill_tcp_data(buf,plen,baseurl);
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("">"));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

REMOTE LED is

"));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

<font color="#00FF00"> "));*

* if(on_off)
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("ON"));
_
else*_
* plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("OFF"));*

* plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("


_
") );*_

* if(on_off){
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR(""));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value="Switch off">"));
_
}_
_
else {_
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR(""));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value="Switch on">"));
_
}*_

* plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("


V1.0 <a href="http://www.m.com">www.m.com"));*

* return(plen);*
}
SALUDOS......

entiendes los codigos por separado?
has conseguido hacerlos funcionar por separado?

hola..si claro por separado los entiendo y por separados he conseguido que trabajen he tratado de unirlos pero sin ningun exito
saludos...

unsigned int powerOn[68] = {4550,4450,550,600,550,500,600,550,600,500,600,1650,550,600,550,550,550,550,600,500,600,550,550,600,550,550,550,1650,600,600,500,550,550,550,550,600,550,1700,550,1650,550,1700,600,1650,550,550,550,600,550,550,550,1650,600,550,550,550,550,600,550,550,550,1700,550,1650,600,1650,550};

Nunca habia usado raw en los controles remotos IR, siempre habia utilizado el RC5. Para saber por ejemplo el comando que envia el mando del aire acondicionado como lees el mensaje raw.
Salu2

con IRrecvDump con ese code leo los controles ...probe con un aire LG y todo bien
...alguien me ayuda con el codigo ..? o algo parecido, es un control infrarrojo por servidor web ...
buscando encontre algo como lo que necesito aqui adjunto archivos.. alguien que me ayude con esto
saludos

http://www.megaupload.com/?d=B2LBOYX6

Con esa shield ethernet me pierdo, tenia una tarjeta y al final opte por comprar una con wiznet5100.

Lo siento por no poder ayudarte, por cierto gracias por el enlace.

tambien tengo la wiznet5100 por si acaso alguien tiene algo parecido a lo que necesito
saludos-.-.-.