Всем доброго времени суток, имею стандартный Arduino uno(приемник), Raspberry Pi 3(передатчик) и RF 24 между ними. Мне удалось запустить всю эту систему, но если бы все было так хорошо я бы сейчас не писал на этот форум. Сигнал который отсылает малинка не изменяется по ходу изменения программы, то есть когда я включаю скрипт на малинке функция write отправляет только первое значение отправляемой переменной. Возможно кто-то встречался с такой проблемой. Код для малинки: Код (Python): import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) from lib_nrf24 import NRF24 import time import spidev #Объявление кнопак button1 = 17 button2 = 27 GPIO.setup(button1, GPIO.IN) GPIO.setup(button2, GPIO.IN) pipes = [[0xF0, 0xF0, 0xF0, 0xF0, 0xE1], [0xf0, 0xf0, 0xf0, 0xf0, 0xe1]] radio = NRF24(GPIO, spidev.SpiDev()) radio.begin(0,21) radio.setRetries(15,15) radio.setPayloadSize(32) radio.setChannel(0x76) radio.setDataRate(NRF24.BR_1MBPS) radio.setPALevel(NRF24.PA_MIN) radio.setAutoAck(True) radio.enableDynamicPayloads() radio.enableAckPayload() radio.openWritingPipe(pipes[1]) radio.openReadingPipe(0, pipes[0]) radio.printDetails() while True: subBuf1 = int(GPIO.input(button1)) subBuf2 = int(GPIO.input(button2)) buf = [subBuf1,subBuf2] # send a packet to receiver radio.write(buf) print ("Sent:"), print (buf) Код для Ардуино: Код (C++): #include <SPI.h> // Подключаем библиотеку для работы с шиной SPI #include <nRF24L01.h> // Подключаем файл настроек из библиотеки RF24 #include <RF24.h> // Подключаем библиотеку для работы с nRF24L01+ #define GREEN 6 #define RED 7 RF24 radio(9, 10); // Создаём объект radio для работы с библиотекой RF24, указывая номера выводов nRF24L01+ (CE, CSN) char data[5] ; // Создаём массив для приёма данных uint8_t RPi [2]; const uint8_t leds[] = {GREEN,RED}; void setup(){ Serial.begin(9600); radio.begin(); // Инициируем работу nRF24L01+ radio.setChannel(0x76); // Указываем канал приёма данных (от 0 до 127), 5 - значит приём данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков) radio.setDataRate (RF24_1MBPS); // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек radio.setPALevel (RF24_PA_HIGH); // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm) radio.openReadingPipe (6, 0xF0F0F0F0E1LL); // Открываем 1 трубу с идентификатором 0x1234567890 для приема данных (на ожном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора) radio.startListening (); // Включаем приемник, начинаем прослушивать открытую трубу // radio.stopListening (); // Выключаем приёмник, если потребуется передать данные for (size_t i = 0; i < sizeof(leds);i++) { pinMode(OUTPUT,leds[i]); } } void loop(){ if(radio.available()){ // Если в буфере имеются принятые данные radio.read(&RPi,sizeof(RPi)); for(size_t i = 0; i < sizeof(leds);i++) { Serial.print(RPi[i]); digitalWrite(leds[i],RPi[i]); } Serial.println(); } }