Академический Документы
Профессиональный Документы
Культура Документы
Descripcin
Esto es un Joystick a control remoto por medio de Radio Frecuencia de 2.4 MHz, con el
circuito integrado NRF24L01. Usamos el Arduino Pro Mini para miniaturizar, pero se puede
usar igual el Arduino Uno. Coinciden los nmeros de Pines.
Est vinculado al trabajo 141 - Arduino - Robot tipo Rover Carrito de dos Ruedas (NRF24L01
y MMA7361) en cuanto a que debe poder controlar ese carrito, sin ninguna modificacin.
De ese trabajo, el carrito es el mismo, el programa de recepcin para el carrito
(RoverRx.ino) es el mismo y est en el archivo.ZIP
Para cumplir con ello, las seales que el Joystick entrega, deben ser del tipo:
X343Y342B0; que son los valores de X, Y y el estado del botn de parada.
X e Y deben estar entre 220 y 480, debindose por lo tanto Mapear los valores ledos por
el Joystick (Entre 0 y 980 aproximadamente) para entregarlos entre 220 y 480. La premisa
es que el receptor no necesite un programa especial, y tener un solo programa receptor.
Adems el botn debe entregar 0 (Cero) como estado normal.
Para leer solamente y limpiamente lo que el Joistick entrega, se debe cargar en el Carrito
Rover este programa: NRF24TextRx.ino, que est en el archivo.ZIP.
Se leer la salida como: X343Y342B0
1
Esquema
Programa Joystick_Rf_Tx.ino
#include <SPI.h> // Para NRF2401
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
int PinX = 1; // Ponerle nombre a todos los pines usados
2
int PinY = 0;
int PinC = 5; // Boton de la palanca Joy, unico que usaremos
RF24 radio(9,10); // Para NRF2401
const uint64_t pipe = 0xE8E8F0F0E1LL; // Para NRF2401
int X; // Definir todas las variables
int Y;
int C;
String Cadena; // Para NRF2401
void setup()
{
radio.begin(); // Para NRF2401
radio.openWritingPipe(pipe); // Para NRF2401
Serial.begin(9600); // Unicamente para pruebas
pinMode(PinC, INPUT); // Seleccionar entrada/salida
} // FIN del void setup()
void loop()
{
X = analogRead(PinX); // Leer todos los valores
X = map(X, 0, 968,220, 480); // Para usar en el Rover
Y = analogRead(PinY);
Y = map(Y, 0, 968,480, 220); // Para usar en el Rover
C = digitalRead(PinC);
if (C == 1) {C = 0;} // Para usar en el Rover
else {C = 1;} // Para usar en el Rover
Cadena= "X" + String(X) + "Y" + String(Y) + "B" + String(C); // Para enviar por RF.
//Serial.println(Cadena);
3
radio.write(charToSend,1);
}
// Enviar el caracter de FIN
int msg[1]; // Para NRFZ24L1
msg[0] = 2;
radio.write(msg,1); // Envia el caracter para confirmar envio correcto
radio.powerDown();
delay(100);
radio.powerUp();