Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include "printf.h"
- #include "nRF24L01.h"
- #include "RF24.h"
- RF24 radio(9, 10);
- uint32_t coil = 0x123456; // Номер катушки
- void setup() {
- Serial.begin(115200);
- printf_begin();
- radio.begin();
- // Настраиваем радио
- radio.setDataRate(RF24_2MBPS);
- radio.setPALevel(RF24_PA_MAX);
- radio.setCRCLength(RF24_CRC_16);
- radio.enableDynamicPayloads();
- radio.setAutoAck(false);
- // Задаем адрес катушки
- radio.setAddressWidth(5);
- uint64_t address = coil << 8 | 0xC3000000A5;
- address = reverse_bytes(address, 5);
- radio.openReadingPipe(0, address);
- // Ищем рабочий канал
- int channel = 0;
- while(!radio.available()) {
- if(channel>=76 || channel<4) {
- channel = 4;
- } else {
- channel = channel + 2;
- }
- radio.stopListening();
- radio.setChannel(channel);
- radio.startListening();
- delay(1);
- }
- radio.flush_rx();
- }
- void loop() {
- uint8_t pipe = false;
- if(radio.available()) {
- // Получаем размер принятых данных
- uint8_t data_length = radio.getDynamicPayloadSize();
- // Принимаем данные
- if(data_length > 0 && data_length <= 32) {
- byte data[data_length] = {};
- char message[sizeof(data)*2+1] = "";
- radio.read(&data, sizeof(data));
- bytes2hex(data, sizeof(data), message);
- printf("%s\n", message);
- }
- // Очищаем буфер приема
- radio.flush_rx();
- }
- }
- void bytes2hex(byte array[], unsigned int len, char buffer[]) {
- for(unsigned int i = 0; i < len; i++) {
- byte nib1 = (array[i] >> 4) & 0x0F;
- byte nib2 = (array[i] >> 0) & 0x0F;
- buffer[i*2+0] = nib1 < 0xA ? '0' + nib1 : 'A' + nib1 - 0xA;
- buffer[i*2+1] = nib2 < 0xA ? '0' + nib2 : 'A' + nib2 - 0xA;
- }
- buffer[len*2] = '\0';
- }
- uint64_t reverse_bytes(uint64_t bytes, int length) {
- uint64_t result = 0x00;
- char *n1 = (char *)&bytes;
- char *n2 = (char *)&result;
- for(int i=0;i<length;i++) {
- *(n2 + i) = *(n1 + length-i-1);
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement