# Comunicacion Serial Inalambrica Xbee, Encendido De 4 Leds A Distancia.



## REMIXNEITOR888 (Ene 29, 2014)

Hola mundo, esta ocasion quisiera que alguien me resolviera una duda que tengo. He comprado dos modulos Xbee serie 1, junto con dos arduinos uno. La comunicacion inalambrica entre los arduinos mediante los xbee\'s funciona perfectamente, tambien alambricamente, es decir, conecto desde el arduino uno 1 un cable de su TX hasta la patilla RX del otro arduino uno 2, comunicacion serial alambrica. y para que vean que no soy codo, aqui anexare los codigos:


EMISOR: 

int button1 = 2;
int button2 = 4;
int button3 = 7;
int button4 = 8;
void setup()
{
  Serial.begin(9600);
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
}
void loop(){
  if(digitalRead(button1)==HIGH){
    Serial.print('a');
    delay(10);
  }
  if(digitalRead(button2)==HIGH){
    Serial.print('b');
    delay(10);
  }
  if(digitalRead(button3)==HIGH){
    Serial.print('c');
    delay(10);
  }
  if(digitalRead(button4)==HIGH){
    Serial.print('d');
    delay(10);
  }
}



Ahora el RECEPTOR:


//RECEPTOR
int incomingByte;
int led1 = 2;
int led2 = 4;
int led3 = 7;
int led4 = 8;
void setup()
{
    Serial.begin(9600);          
    pinMode(led1, OUTPUT); 
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
}
void loop(){
  if (Serial.available()>0){
    incomingByte = Serial.read();
    if (incomingByte == 'a'){
        digitalWrite(led1, HIGH);
        delay(10);
        digitalWrite(led1, LOW);
        digitalWrite(led2, LOW);
        digitalWrite(led3, LOW);
        digitalWrite(led4, LOW); 
  }
  if (incomingByte == 'b'){
        digitalWrite(led1, LOW);
        digitalWrite(led2, HIGH);
        delay(10);
        digitalWrite(led2, LOW);
        digitalWrite(led3, LOW);
        digitalWrite(led4, LOW); 
  }
  if (incomingByte == 'c'){
        digitalWrite(led1, LOW);
        digitalWrite(led2, LOW);
        digitalWrite(led3, HIGH);
        delay(10);
        digitalWrite(led3, LOW);
        digitalWrite(led4, LOW);
  }
  if (incomingByte == 'd'){
        digitalWrite(led1, LOW);
        digitalWrite(led2, LOW);
        digitalWrite(led3, LOW);
        digitalWrite(led4, HIGH); 
        delay(10);
        digitalWrite(led4, LOW);
   }
 }
}




El problema que se me presenta, es el siguiente. A la hora de presionar dos botones, enciendo dos leds a distancia. PERO, resulta que estos mismos parpadean. Cuando enciendo un led a distancia, no parpadea. Pero al momento de encender dos hasta los 4 leds a distancia al mismo tiempo, estos mismos parpadean rapidamente como si tuvieran un delay rapido. ¿Pero porque pasa eso? Se supone que no deberian hacer eso los leds, ¿Alguien podria echarme una mano? Porque la verdad tengo serios problemas para conectarlo a un puente H. Les agradeceria mucho su ayuda. Espero sus prontas respuestas, y hasta la proxima. ...


----------



## gca (Ene 29, 2014)

Comenta que tendria que hacer el program.
Segun veo de la forma que  envias y recibis los datos trendias que usar mas letras para las  combinaciones de pulsadores pulsados (16 combinaciones), recibir de otra forma, o enviar y  recibir de otra forma como enviar un byte por cada pulsador (usando dos  valores) donde un valor es prendido y otro apagado.
Tendrias que  esperar a recibir los 4 byte mas un 5to que iria primero indicando  inicio de transmicion asi identificas cual es el pulsador 1, 2, 3 y 4  segun el orden que los envies y luego decidir que prender o apagar.

ejemplo:
envio: 00000000  00001111 00001111 00001111 11110000
donde 00000000 indica inicio, 00001111 prendido ,11110000 apagado y el segun el orden el dato del pulsador.
(pulsador 1: prendido - pulsador 2: prendido - pulsador 3: prendido - pulsador 4: apagado)

Saludos


----------



## REMIXNEITOR888 (Ene 29, 2014)

gca dijo:


> Comenta que tendria que hacer el program.
> Segun veo de la forma que  envias y recibis los datos trendias que usar mas letras para las  combinaciones de pulsadores pulsados (16 combinaciones), recibir de otra forma, o enviar y  recibir de otra forma como enviar un byte por cada pulsador (usando dos  valores) donde un valor es prendido y otro apagado.
> Tendrias que  esperar a recibir los 4 byte mas un 5to que iria primero indicando  inicio de transmicion asi identificas cual es el pulsador 1, 2, 3 y 4  segun el orden que los envies y luego decidir que prender o apagar.
> 
> ...



Gracias por tu comentario, y aporte. Espero que me puedas ayudar, asi como yo a otros en el foro. 

A el programa es el arduino, y el programa en arduino en si, en mi caso y en este caos, es apretar 4 botones y encender 4 leds de los mismos botones presionados a distancia, de forma inalambrica, y pues he a qui esta mi problema. Es que cuando lo conecto a mi puente H de transistores y relevadores, cuando enciendo un led a distancia, se activa un relevador del puente h, ahi no hay problema. pero cuando enciendo dos o mas relevadores a distancia, con los xbees, el mismo puente h hace un ruido muy fuerte. Me han dicho que es debido a que no le llega suficiene corriente al relay para que este mismo active. ¿Es eso? Y como le podria hacer si mi problema no tuviera solucion?


Trato de hacer un sumobot de 20 kilos, ese es mi proyecto.


----------

