Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //librerias
- #include <SPI.h>
- #include <nRF24L01.h>
- #include <RF24.h>
- RF24 radio(7, 8);
- //la sensitividad del avión
- int flapMax;
- //declarar variables que necesito para el joystick
- int x;
- int y;
- //variables que usare para correjir fallos en el joystick
- int xMid;
- int yMid;
- float xMoved;
- float yMoved;
- //declaro las 4 variables que necesito procesar y transmitir
- int motorSpeed;
- int flapR;
- int flapL;
- int flapBack;
- //esta es la variable que contendra el valor de las otras cuatro variables y es la que transmitiré al receptor
- int transmit[4];
- const byte address[6] = "00001";
- void setup() {
- //inicialización de la antena
- radio.begin();
- radio.openWritingPipe(address);
- radio.setPALevel(RF24_PA_MAX);
- radio.setDataRate(RF24_1MBPS);
- radio.stopListening();
- xMid = 1023 - analogRead(A3);;
- yMid = analogRead(A4);
- }
- void loop() {
- //leer de los sensores la velocidad, la sensibilidad y la posicion del joystick
- motorSpeed = analogRead(A0);
- flapMax = analogRead(A1);
- x = 1023 - analogRead(A3);
- y = analogRead(A4);
- //los valores de los potenciometros van de 0-1023, el motor recibe ordenes de 0-180 asi que corrijo los datos
- motorSpeed = map(motorSpeed, 0, 1023, 0, 180);
- flapMax = map(flapMax, 0, 1023, 0, 180);
- //Corrección de movimientos en el eje x del joystick
- if (x == xMid) {
- xMoved == 0;
- } else {
- if (x > xMid) {
- xMoved = (x - xMid) / (1023 - xMid + 0.0) * 100;
- } else if (x < xMid) {
- xMoved = -1 * (100 - (x / (xMid + 0.0) * 100));
- }
- }
- //Corrección de movimientos en el eje y del joystick
- if (y == yMid) {
- yMoved == 0;
- } else {
- if (y > yMid) {
- yMoved = (y - yMid) / (1023 - yMid + 0.0) * 100;
- } else if (y < yMid) {
- yMoved = -1 * (100 - (y / (yMid + 0.0) * 100));
- }
- }
- //Calculo de posición de los tres flaps
- flapL = ((yMoved / 100 * flapMax * -1) + (xMoved / 100 * flapMax * -1)) / 2;
- flapR = ((yMoved / 100 * flapMax * -1) + (xMoved / 100 * flapMax)) / 2;
- flapBack = yMoved / 100 * flapMax;
- //insertar cada valor que hay que transmitir en una sola variable
- transmit[0] = motorSpeed;
- transmit[1] = flapL;
- transmit[2] = flapR;
- transmit[3] = flapBack;
- //transmitir la variable que contiene a su vez 4 variables distintas
- radio.write(&transmit, sizeof(transmit));
- delay(20);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement