Paso 3: Programar el Arduino: receptor
El receptor fue programado para que recibió datos serie del transmisor y entonces envió a 5V a través de los pines de E/S digitales apropiados. Por ejemplo, si "a" recibió, la placa de Arduino receptor haría 1 entrada-salida Digital ser 0V. Si "b" fue recibida, la placa de Arduino receptor haría 1 entrada-salida Digital ser 5V. Si "c" fue recibido, la placa de Arduino receptor tendría entrada-salida Digital 2 ser 0V. Si "d" fue recibido entonces la placa de Arduino receptor tendría entrada-salida Digital 2 ser 5V. A continuación se muestran los pasos necesarios para cargar el código para el Arduino receptor:
1. Retire el escudo de Proto de Arduino que escojas como microprocesador ATMEGA el receptor debe estar en la placa Arduino.
2. conectar el Arduino al ordenador mediante el cable USB.
3. Abra el programa de software de Arduino en el ordenador
4. Seleccione Puerto de serie de herramientas y luego seleccione el COM port que se refiere a la placa Arduino. Esto suele ser el primer puerto de COM en la lista.
5. Copie y pegue el código siguiente en la ventana de código de Arduino. Tenga en cuenta que este código es para la transmisión a una velocidad de 19200 baudios. Si necesita transmitir a una velocidad diferente que dondequiera en el código dice 19200, cambie a la velocidad deseada.
Este programa recibe la información de una radio MaxStream XBee.
serie está en el puerto 1
en es en el puerto 0
int outputPin2 = 2;
int outputPin3 = 3;
int outputPin4 = 4;
int outputPin5 = 5;
int outputPin6 = 6;
int outputPin7 = 7;
int outputPin8 = 8;
int outputPin9 = 9;
int outputPin10 = 10;
int outputPin11 = 11;
int outputPin12 = 12;
int outputPin13 = 13;
un byte para recibir datos:
char inByte = 0;
char inByte2 = 0;
char inByte3 = 0;
char inByte4 = 0;
char inByte5 = 0;
char inByte6 = 0;
char inByte7 = 0;
char inByte8 = 0;
char inByte9 = 0;
char inByte10 = 0;
char inByte11 = 0;
char inByte12 = 0;
char inByte13 = 0;
void setup () {}
Set pasadores para entrada y salida debidamente
pinMode (outputPin2, salida);
pinMode (outputPin3, salida);
pinMode (outputPin4, salida);
pinMode (outputPin5, salida);
pinMode (outputPin6, salida);
pinMode (outputPin7, salida);
pinMode (outputPin8, salida);
pinMode (outputPin9, salida);
pinMode (outputPin10, salida);
pinMode (outputPin11, salida);
pinMode (outputPin12, salida);
pinMode (outputPin13, salida);
poner en marcha la conexión serie con 19200-8-n-1-verdadero (no invertida):
Serial.Begin(19200);
por alguna razón parece ayudar a enviar primero un carácter arbitrario
a continuación, pausa para el tiempo de guardia antes de solicitar el modo de comando
Serial.Print("X");
Delay(1100);
poner el XBee en modo comando
Serial.Print("+++");
Delay(1100);
esperar una respuesta de lo XBee de 2000 ms, o iniciar
con la instalación si no hay respuesta válida viene
Si (returnedOK() == ' t ') {}
Si recibió una autorización continúe
}
Else {}
Setup(); de lo contrario volver atrás y vuelva a intentarlo configuración
}
configurar la bandeja de número de identificación (red de área personal)
Este ejemplo utiliza 0x3330, pero usted querrá elegir su propio
único número hexadecimal entre 0 x 0 y 0xFFFE
(observe la coma al final del comando que indica que seguirá otro comando)
Serial.Print("ATID3330,");
establecer la mi (dirección de 16 bits)
Este ejemplo utiliza 0 x 0 para enviar y 0 x 1 para recibe sin embargo
quieres elegir tus propios números hexadecimales entre 0 x 0 y 0xFFFE
Serial.Print("MY1,");
salir del modo de comando (note que utilizamos Serial.printLN aquí dar un salto de línea que completa la secuencia de comandos)
Serial.println("cn");
los comandos anteriores también se pueden enviar en una sola línea, con un solo mando con comas:
Serial.println("ATID3330,MY1,CN");
la línea de comandos anterior también podría ser enviada como comandos separados, por volver a emitir el comando AT:
Serial.println("ATID3330");
Serial.println("ATMY1");
Serial.println("ATCN");
esperar una respuesta de lo XBee de 2000 ms, o iniciar
con la instalación si no hay respuesta válida viene
Si (returnedOK() == ' t ') {}
Si recibió una autorización continúe
}
Else {}
Setup(); de lo contrario volver atrás y vuelva a intentarlo configuración
}
}
void loop () {}
obtener los datos de entrada:
Si (Serial.available() > 1) {}
leer un byte
inByte = Serial.read();
Serial.Print(inByte);
enciende el LED si se ha recibido un 1
Si (inByte == 'a') {}
digitalWrite (outputPin2, bajo);
}
Si (inByte == 'b') {}
digitalWrite (outputPin2, HIGH);
}
Si (inByte == 'c') {}
digitalWrite (outputPin3, bajo);
}
Si (inByte == había ') {}
digitalWrite (outputPin3, HIGH);
}
Si (inByte == 'e') {}
digitalWrite (outputPin4, bajo);
}
Si (inByte == 'f') {}
digitalWrite (outputPin4, HIGH);
}
Si (inByte == 'g') {}
digitalWrite (outputPin5, bajo);
}
Si (inByte == 'h') {}
digitalWrite (outputPin5, HIGH);
}
Si (inByte == 'i') {}
digitalWrite (outputPin6, bajo);
}
Si (inByte == 'j') {}
digitalWrite (outputPin6, HIGH);
}
Si (inByte == 'k') {}
digitalWrite (outputPin7, bajo);
}
Si (inByte == 'l') {}
digitalWrite (outputPin7, HIGH);
}
Si (inByte == estoy ') {}
digitalWrite (outputPin8, bajo);
}
Si (inByte == ' n ') {}
digitalWrite (outputPin8, HIGH);
}
Si (inByte == ' o ') {}
digitalWrite (outputPin9, bajo);
}
Si (inByte == 'p') {}
digitalWrite (outputPin9, HIGH);
}
Si (inByte == 'q') {}
digitalWrite (outputPin10, bajo);
}
Si (inByte == 'r') {}
digitalWrite (outputPin10, HIGH);
}
Si (inByte == de ') {}
digitalWrite (outputPin11, bajo);
}
Si (inByte == ' t ') {}
digitalWrite (outputPin11, HIGH);
}
Si (inByte == 'u') {}
digitalWrite (outputPin12, bajo);
}
Si (inByte == 'v') {}
digitalWrite (outputPin12, HIGH);
}
Si (inByte == 'w') {}
digitalWrite (outputPin13, bajo);
}
Si (inByte == 'x') {}
digitalWrite (outputPin13, HIGH);
}
}
}
{} void blinkLED (int targetPin, int numBlinks)
Esta función parpadea el estado LED luz tantas veces por requerimiento
para (int i = 0; i
digitalWrite (targetPin, HIGH); el LED se pone en
Delay(250); espera un segundo
digitalWrite (targetPin, bajo); fija el LED apagado
Delay(250);
}
}
char returnedOK () {}
Esta función comprueba la respuesta en el puerto serie para ver si era un "OK" o no
char incomingChar [3];
char okString [] = "OK";
char el resultado = ' n ';
int startTime = millis();
mientras que (millis() - startTime < 2000 & & resultado == ' n ') {/ / usar un tiempo de espera de 10 segundos
Si (Serial.available() > 1) {}
leer tres bytes de entrada que deben ser "O", "K", un salto de línea:
para (int i = 0; i < 3; i ++) {}
incomingChar [i] = Serial.read();
}
Si (strstr (incomingChar, okString)! = NULL) {/ / comprobar si la respuesta es "OK"
Si (incomingChar [0] == ' o ' & & incomingChar [1] == 'K') {/ / comprobar si los dos primeros caracteres son "OK"
resultado = ' t '; T retorno si "OK" fue la respuesta
}
Else {}
resultado = 'F'; de lo contrario volver F
}
}
}
volver a resultado;
}
6. una vez que el código ha sido copiado en la ventana de código de Arduino, seleccionar "Compile" para verificar que no hay ningún error en el código. Si no hay errores presentes Pulse "Añadir al botón de la placa de E/S".
7. una vez que el código se ha subido a la placa Arduino, desconecte el cable USB y vuelva a colocar el ProtoShield (incluye el módulo Xbee). Ahora termine cargando el código en el receptor de Arduino.