Advertisement
dberweger

transmisor

Sep 6th, 2020 (edited)
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //librerias
  2. #include <SPI.h>
  3. #include <nRF24L01.h>
  4. #include <RF24.h>
  5.  
  6. RF24 radio(7, 8);
  7.  
  8. //la sensitividad del avión
  9. int flapMax;
  10.  
  11. //declarar variables que necesito para el joystick
  12. int x;
  13. int y;
  14.  
  15. //variables que usare para correjir fallos en el joystick
  16. int xMid;
  17. int yMid;
  18. float xMoved;
  19. float yMoved;
  20.  
  21. //declaro las 4 variables que necesito procesar y transmitir
  22. int motorSpeed;
  23. int flapR;
  24. int flapL;
  25. int flapBack;
  26.  
  27. //esta es la variable que contendra el valor de las otras cuatro variables y es la que transmitiré al receptor
  28. int transmit[4];
  29.  
  30. const byte address[6] = "00001";
  31.  
  32. void setup() {
  33.   //inicialización de la antena
  34.   radio.begin();
  35.   radio.openWritingPipe(address);
  36.   radio.setPALevel(RF24_PA_MAX);
  37.   radio.setDataRate(RF24_1MBPS);
  38.   radio.stopListening();
  39.  
  40.   xMid = 1023 - analogRead(A3);;
  41.   yMid = analogRead(A4);
  42. }
  43.  
  44. void loop() {
  45.   //leer de los sensores la velocidad, la sensibilidad y la posicion del joystick
  46.   motorSpeed = analogRead(A0);
  47.   flapMax = analogRead(A1);
  48.   x = 1023 - analogRead(A3);
  49.   y = analogRead(A4);
  50.  
  51.   //los valores de los potenciometros van de 0-1023, el motor recibe ordenes de 0-180 asi que corrijo los datos
  52.   motorSpeed = map(motorSpeed, 0, 1023, 0, 180);
  53.   flapMax = map(flapMax, 0, 1023, 0, 180);
  54.  
  55.   //Corrección de movimientos en el eje x del joystick
  56.   if (x == xMid) {
  57.     xMoved == 0;
  58.   } else {
  59.     if (x > xMid) {
  60.       xMoved = (x - xMid) / (1023 - xMid + 0.0) * 100;
  61.     } else if (x < xMid) {
  62.       xMoved = -1 * (100 - (x / (xMid + 0.0) * 100));
  63.     }
  64.   }
  65.   //Corrección de movimientos en el eje y del joystick
  66.   if (y == yMid) {
  67.     yMoved == 0;
  68.   } else {
  69.     if (y > yMid) {
  70.       yMoved = (y - yMid) / (1023 - yMid + 0.0) * 100;
  71.     } else if (y < yMid) {
  72.       yMoved = -1 * (100 - (y / (yMid + 0.0) * 100));
  73.     }
  74.   }
  75.  
  76.   //Calculo de posición de los tres flaps
  77.   flapL = ((yMoved / 100 * flapMax * -1) + (xMoved / 100 * flapMax * -1)) / 2;
  78.   flapR = ((yMoved / 100 * flapMax * -1) + (xMoved / 100 * flapMax)) / 2;
  79.   flapBack = yMoved / 100 * flapMax;
  80.  
  81.   //insertar cada valor que hay que transmitir en una sola variable
  82.   transmit[0] = motorSpeed;
  83.   transmit[1] = flapL;
  84.   transmit[2] = flapR;
  85.   transmit[3] = flapBack;
  86.  
  87.   //transmitir la variable que contiene a su vez 4 variables distintas
  88.   radio.write(&transmit, sizeof(transmit));
  89.   delay(20);
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement