Advertisement
Pilsonv

rc_tx

Sep 18th, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.56 KB | None | 0 0
  1. #include <SPI.h>
  2. #include "nRF24L01.h"
  3. #include "RF24.h"
  4. #include "CyberLib.h"
  5.  
  6. #define bitCheckSet(value, bit, res) if(res) {(value) |= (1UL << (bit));} else {(value) &= ~(1UL << (bit));}
  7.  
  8. // fast ADC
  9. #ifndef cbi
  10. #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
  11. #endif
  12. #ifndef sbi
  13. #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
  14. #endif
  15.  
  16. #define j1x  0
  17. #define j1y  1
  18. #define j2x  2
  19. #define j2y  3
  20.  
  21. #define tmax 50
  22. #define rfch 0x00
  23.  
  24. bool sdebug = 0;
  25. RF24 radio(9, 10);
  26. byte address[][6] = {"z1", "z2", "z3", "z4", "z5", "z6"};
  27.  
  28. void setup() {
  29.     // set ADC prescale to 16
  30. //    ADCSRA |= (1 << ADPS2);
  31. //    ADCSRA &= ~(1 << ADPS1 | 1 << ADPS0);
  32.     sbi(ADCSRA,ADPS2) ;
  33.     cbi(ADCSRA,ADPS1) ;
  34.     cbi(ADCSRA,ADPS0) ;
  35.  
  36.     D2_In;
  37.     D3_In;
  38.     D4_In;
  39.     D5_In;
  40.     D6_In;
  41.     D7_In;
  42.     D2_High;
  43.     D3_High;
  44.     D4_High;
  45.     D5_High;
  46.     D6_High;
  47.     D7_High;
  48.    
  49.     if (! D2_Read == 1 && ! D3_Read == 1) {
  50.         sdebug = 1;
  51.         Serial.begin(115200);
  52.     }
  53.  
  54.     //setup radio
  55.     radio.begin();
  56.     radio.setAutoAck(0);
  57.     radio.setRetries(0, 15);
  58.     radio.enableAckPayload();
  59.     radio.setPayloadSize(5);
  60.     radio.openWritingPipe(address[0]);
  61.     radio.setChannel(rfch);
  62.     radio.setPALevel (RF24_PA_MAX); //RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  63.     radio.setDataRate (RF24_250KBPS); //RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  64.     radio.powerUp();
  65.     radio.stopListening();
  66. }
  67.  
  68. void loop() {
  69.     uint32_t last_time = 0;
  70.     byte data[5] = {0};
  71.     uint8_t count = 0;
  72.     while(true) {
  73.         if (millis() - last_time > tmax) {
  74.             data[0] = map(analogRead(j1x), 0, 1023, 0, 255);
  75.             data[1] = map(analogRead(j1y), 0, 1023, 255, 0);
  76.             data[2] = map(analogRead(j2x), 0, 1023, 0, 255);
  77.             data[3] = map(analogRead(j2y), 0, 1023, 255, 0);
  78.             bitCheckSet(data[4], 0, (!D2_Read));
  79.             bitCheckSet(data[4], 1, (!D3_Read));
  80.             bitCheckSet(data[4], 2, (!D4_Read));
  81.             bitCheckSet(data[4], 3, (!D5_Read));
  82.             bitCheckSet(data[4], 4, (!D6_Read));
  83.             bitCheckSet(data[4], 5, (!D7_Read));
  84.             if (data[0] < 3) {
  85.                 data[0] = 0;
  86.             }
  87.             if (data[0] > 125 && data[0] < 133) {
  88.                 data[0] = 127;
  89.             }
  90.             if (data[0] > 252) {
  91.                 data[0] = 255;
  92.             }
  93.             if (data[1] < 3) {
  94.                 data[1] = 0;
  95.             }
  96.             if (data[1] > 124 && data[1] < 130) {
  97.                 data[1] = 127;
  98.             }
  99.             if (data[2] < 3) {
  100.                 data[2] = 0;
  101.             }
  102.             if (data[2] > 122 && data[2] < 130) {
  103.                 data[2] = 127;
  104.             }
  105.             if (data[2] > 252) {
  106.                 data[2] = 255;
  107.             }
  108.             if (data[3] < 3) {
  109.                 data[3] = 0;
  110.             }
  111.             if (data[3] > 112 && data[3] < 142) {
  112.                 data[3] = 127;
  113.             }
  114.             last_time = millis();
  115.             radio.write(&data, sizeof(data));
  116.             if (sdebug == 1) {
  117.                 count++;
  118.                 Serial.print(count);
  119.                 Serial.print("\t");
  120.                 Serial.print(data[0]);
  121.                 Serial.print("\t");
  122.                 Serial.print(data[1]);
  123.                 Serial.print("\t");
  124.                 Serial.print(data[2]);
  125.                 Serial.print("\t");
  126.                 Serial.print(data[3]);
  127.                 Serial.print("\t");
  128.                 Serial.println(data[4]);
  129.             }
  130.         }
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement