Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include "nRF24L01.h"
- #include "RF24.h"
- #include "CyberLib.h"
- #define bitCheckSet(value, bit, res) if(res) {(value) |= (1UL << (bit));} else {(value) &= ~(1UL << (bit));}
- // fast ADC
- #ifndef cbi
- #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
- #endif
- #ifndef sbi
- #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
- #endif
- #define j1x 0
- #define j1y 1
- #define j2x 2
- #define j2y 3
- #define tmax 50
- #define rfch 0x00
- bool sdebug = 0;
- RF24 radio(9, 10);
- byte address[][6] = {"z1", "z2", "z3", "z4", "z5", "z6"};
- void setup() {
- // set ADC prescale to 16
- // ADCSRA |= (1 << ADPS2);
- // ADCSRA &= ~(1 << ADPS1 | 1 << ADPS0);
- sbi(ADCSRA,ADPS2) ;
- cbi(ADCSRA,ADPS1) ;
- cbi(ADCSRA,ADPS0) ;
- D2_In;
- D3_In;
- D4_In;
- D5_In;
- D6_In;
- D7_In;
- D2_High;
- D3_High;
- D4_High;
- D5_High;
- D6_High;
- D7_High;
- if (! D2_Read == 1 && ! D3_Read == 1) {
- sdebug = 1;
- Serial.begin(115200);
- }
- //setup radio
- radio.begin();
- radio.setAutoAck(0);
- radio.setRetries(0, 15);
- radio.enableAckPayload();
- radio.setPayloadSize(5);
- radio.openWritingPipe(address[0]);
- radio.setChannel(rfch);
- radio.setPALevel (RF24_PA_MAX); //RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
- radio.setDataRate (RF24_250KBPS); //RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
- radio.powerUp();
- radio.stopListening();
- }
- void loop() {
- uint32_t last_time = 0;
- byte data[5] = {0};
- uint8_t count = 0;
- while(true) {
- if (millis() - last_time > tmax) {
- data[0] = map(analogRead(j1x), 0, 1023, 0, 255);
- data[1] = map(analogRead(j1y), 0, 1023, 255, 0);
- data[2] = map(analogRead(j2x), 0, 1023, 0, 255);
- data[3] = map(analogRead(j2y), 0, 1023, 255, 0);
- bitCheckSet(data[4], 0, (!D2_Read));
- bitCheckSet(data[4], 1, (!D3_Read));
- bitCheckSet(data[4], 2, (!D4_Read));
- bitCheckSet(data[4], 3, (!D5_Read));
- bitCheckSet(data[4], 4, (!D6_Read));
- bitCheckSet(data[4], 5, (!D7_Read));
- if (data[0] < 3) {
- data[0] = 0;
- }
- if (data[0] > 125 && data[0] < 133) {
- data[0] = 127;
- }
- if (data[0] > 252) {
- data[0] = 255;
- }
- if (data[1] < 3) {
- data[1] = 0;
- }
- if (data[1] > 124 && data[1] < 130) {
- data[1] = 127;
- }
- if (data[2] < 3) {
- data[2] = 0;
- }
- if (data[2] > 122 && data[2] < 130) {
- data[2] = 127;
- }
- if (data[2] > 252) {
- data[2] = 255;
- }
- if (data[3] < 3) {
- data[3] = 0;
- }
- if (data[3] > 112 && data[3] < 142) {
- data[3] = 127;
- }
- last_time = millis();
- radio.write(&data, sizeof(data));
- if (sdebug == 1) {
- count++;
- Serial.print(count);
- Serial.print("\t");
- Serial.print(data[0]);
- Serial.print("\t");
- Serial.print(data[1]);
- Serial.print("\t");
- Serial.print(data[2]);
- Serial.print("\t");
- Serial.print(data[3]);
- Serial.print("\t");
- Serial.println(data[4]);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement