Помогите подключить nRF24l01+
-
fort (2016-05-19 16:48:38):Судя по статье, если правильно датчик к малине подключен, должно появиться устройство /dev/spidevX.Y, оно есть?
А ошибки компиляции можешь выложить здесь, посмотрим, может там просто все решается.Устройство есть, /dev/spidev0.0, кажется.
Спасибо, чуть позже выложу ошибки. -
В /dev вижу два устройства:
spidev0.0 spidev0.1
Пытаюсь выполнить эту часть:
git clone github.com/stanleyseow/RF24.git cd RF24 cd librf24-rpi/librf24 make sudo make install pi@MediaServer:~ $ sudo git clone https://github.com/stanleyseow/RF24.git Cloning into 'RF24'... remote: Counting objects: 2777, done. remote: Total 2777 (delta 0), reused 0 (delta 0), pack-reused 2777 Receiving objects: 100% (2777/2777), 1.16 MiB | 626.00 KiB/s, done. Resolving deltas: 100% (1757/1757), done. Checking connectivity... done. pi@MediaServer:~ $ cd RF24 pi@MediaServer:~/RF24 $ cd librf24-rpi/librf24 -bash: cd: librf24-rpi/librf24: Нет такого файла или каталога pi@MediaServer:~/RF24 $ ls Doxyfile FAQ printf.h RF24.cpp tests doxygen-custom.css keywords.txt README.md RF24.h wikidoc.xslt examples nRF24L01.h RF24_config.h RPi pi@MediaServer:~/RF24 $ cd RPi pi@MediaServer:~/RF24/RPi $ ls readme.md RF24 pi@MediaServer:~/RF24/RPi $ cd RF24 pi@MediaServer:~/RF24/RPi/RF24 $ ls bcm2835.c examples nRF24L01.h RF24_config.h RF24.h bcm2835.h Makefile readme.md RF24.cpp pi@MediaServer:~/RF24/RPi/RF24 $ sudo make g++ -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -c RF24.cpp gcc -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -c bcm2835.c g++ -shared -Wl,-soname,librf24-bcm.so.1 -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -o librf24-bcm.so.1.0 RF24.o bcm2835.o pi@MediaServer:~/RF24/RPi/RF24 $
В общем, структура хранения поменялась, но насколько понимаю, библиотеку я скомпиллировал.
Создаю файл, поменяв путь до библиотеки:
#include <cstdlib> #include <iostream> #include "/home/pi/RF24/RPi/RF24/RF24.h" #include <fstream> using namespace std; // spi device, spi speed, ce gpio pin RF24 radio("/dev/spidev0.0",80000000,25); void setup(void) { // init radio for reading radio.begin(); radio.enableDynamicPayloads(); radio.setAutoAck(1); radio.setRetries(15,15); radio.setDataRate(RF24_1MBPS); radio.setPALevel(RF24_PA_MAX); radio.setChannel(76); radio.setCRCLength(RF24_CRC_16); radio.openReadingPipe(1,0xF0F0F0F0E1LL); radio.startListening(); } void loop(void) { char receivePayload[64]; while (radio.available()) { uint8_t len = radio.getDynamicPayloadSize(); radio.read(receivePayload, len); // Костыль для создания промежуточного файла. ofstream out("/dev/nrf24"); out << receivePayload << "\n"; out.close (); //cout<<"\n Data="<<receivePayload; delay(200); } } int main(int argc, char** argv) { cout << "Driver initialized, please check values of /dev/nrf24" << endl; setup(); while(1) loop(); return 0; }
Компиллирую и получаю:
pi@MediaServer:~/MyProg $ sudo g++ -Wall -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -L../librf24/ -lrf24 arcon.c -o rpi In file included from /home/pi/RF24/RPi/RF24/RF24.h:23:0, from arcon.c:3: /usr/include/c++/4.9/bits/fstream.tcc: In member function ‘virtual std::basic_filebuf<_CharT, _Traits>::int_type std::basic_filebuf<_CharT, _Traits>::underflow()’: /home/pi/RF24/RPi/RF24/RF24_config.h:33:18: error: expected unqualified-id before ‘(’ token #define min(a,b) (a<b?a:b) ^ /usr/include/c++/4.9/bits/fstream.tcc: In member function ‘virtual std::streamsize std::basic_filebuf<_CharT, _Traits>::xsputn(const _CharT*, std::streamsize)’: /home/pi/RF24/RPi/RF24/RF24_config.h:33:18: error: expected unqualified-id before ‘(’ token #define min(a,b) (a<b?a:b) ^ arcon.c: At global scope: arcon.c:8:40: error: invalid conversion from ‘const char*’ to ‘uint8_t {aka unsigned char}’ [-fpermissive] RF24 radio("/dev/spidev0.0",80000000,25); ^ In file included from arcon.c:3:0: /home/pi/RF24/RPi/RF24/RF24.h:254:3: note: initializing argument 1 of ‘RF24::RF24(uint8_t, uint8_t, uint32_t)’ RF24(uint8_t _cepin, uint8_t _cspin, uint32_t spispeed ); ^ arcon.c:8:40: warning: large integer implicitly truncated to unsigned type [-Woverflow] RF24 radio("/dev/spidev0.0",80000000,25);
-
Похоже изменились исходники немного, у меня тоже не собирается. Вобщем что я делал.
Твой исходник я сохранил c именем testrf24 в папку RF24/RPi/RF24/examples, тамже поправил файл Makefile:PROGRAMS = gettingstarted gettingstarted_call_response transfer pingpair_dyn testrf24
Теперь командой make в этой папке будут компилироваться все примеры и этот исходник тоже.
/home/pi/RF24/RPi/RF24/RF24_config.h:33:18: error: expected unqualified-id before ‘(’ token #define min(a,b) (a<b?a:b)
Чтобы исправить эту ошибку нужно изменить файл /RF24/RPi/RF24/RF24_config.h (закомментировать эти define):// GCC a Arduino Missing
//#define max(a,b) (a>b?a:b) //#define min(a,b) (a<b?a:b) //#define _BV(x) (1<<(x)) //#define pgm_read_word(p) (*(p)) //#define pgm_read_byte(p) (*(p))
Во-первых, я думаю такие макросы/функции и так уже определены, во-вторых упоминается Arduino, а у нас малина. Но все равно нужно сохранить исходный файл и помнить что-где менялось.
Теперь ошибка осталась такая:
pi@raspberrypi:~/nrf24l01/RF24/RPi/RF24/examples $ make g++ -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -Wall -I../ -lrf24-bcm testrf24.cpp -o testrf24 testrf24.cpp:8:39: error: invalid conversion from ‘const char*’ to ‘uint8_t {aka unsigned char}’ [-fpermissive] RF24 radio("/dev/spidev0.0",8000000,25); ^ In file included from testrf24.cpp:3:0: ../RF24.h:254:3: note: initializing argument 1 of ‘RF24::RF24(uint8_t, uint8_t, uint32_t)’ RF24(uint8_t _cepin, uint8_t _cspin, uint32_t spispeed ); ^ testrf24.cpp:8:39: warning: large integer implicitly truncated to unsigned type [-Woverflow] RF24 radio("/dev/spidev0.0",8000000,25); ^ Makefile:28: recipe for target 'testrf24' failed make: *** [testrf24] Error 1
Если посмтреть файл /RF24/RPi/RF24/RF24.h, то там уже нет такого RF24 radio("/dev/spidev0.0",8000000,25) конструктора, а есть только такие:
/** * Constructor * * Creates a new instance of this driver. Before using, you create an instance * and send in the unique pins that this chip is connected to. * * @param _cepin The pin attached to Chip Enable on the RF module * @param _cspin The pin attached to Chip Select */ RF24(uint8_t _cepin, uint8_t _cspin); RF24(uint8_t _cepin, uint8_t _cspin, uint32_t spispeed );
Отличие в том, что в твоем исходнике, что бы создать объект класса RF24, вызывается конструктор этого класса, в который передается имя устройства, скорость и номер пина CE. А в исходниках этой библиотеки есть конструкторы которые принимают в качестве параметров номер пина CE, номер пина СS и скорость. Типы и смысл параметров разные.
Как заставить работать твой исходник пока не придумал, не сталкивался пока с SPI (интерфейс по которому этот модуль подключается к малине). Думаю можно попробовать заменитьRF24 radio("/dev/spidev0.0",8000000,25)
на
RF24 radio(<номер CE пина (25?)>,<номер CS пина>,8000000)
или точнее на (из примера transfer.cpp)
RF24 radio(RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ);
Номера пинов будут зависеть, наверно, от того к каким пинам подключен модуль на малине. И лучше использовать константы.
Позже посмотрю как там в примерах работают с этим классом. -
Спасибо за подробный ответ!
Приведенные выше ошибки пропали, появилась новая:pi@MediaServer:~/MyProg $ sudo g++ -Wall -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -L /home/pi/RF24/RPi/RF24 -lrf24 arcon.c -o rpi /usr/bin/ld: cannot find -lrf24 collect2: error: ld returned 1 exit status
Понятия не имею что такое lrf24…
Без этого параметра валится куча ошибок:
pi@MediaServer:~/MyProg $ sudo g++ -Wall -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -L /home/pi/RF24/RPi/RF24 arcon.c -o rpi /tmp/ccuf7ZZm.o: In function `setup()': arcon.c:(.text+0xc): undefined reference to `RF24::begin()' arcon.c:(.text+0x14): undefined reference to `RF24::enableDynamicPayloads()' arcon.c:(.text+0x20): undefined reference to `RF24::setAutoAck(bool)' arcon.c:(.text+0x30): undefined reference to `RF24::setRetries(unsigned char, unsigned char)' arcon.c:(.text+0x3c): undefined reference to `RF24::setDataRate(rf24_datarate_e)' arcon.c:(.text+0x48): undefined reference to `RF24::setPALevel(unsigned char)' arcon.c:(.text+0x54): undefined reference to `RF24::setChannel(unsigned char)' arcon.c:(.text+0x60): undefined reference to `RF24::setCRCLength(rf24_crclength_e)' arcon.c:(.text+0x74): undefined reference to `RF24::openReadingPipe(unsigned char, unsigned long long)' arcon.c:(.text+0x80): undefined reference to `RF24::startListening()' /tmp/ccuf7ZZm.o: In function `loop()': arcon.c:(.text+0xf4): undefined reference to `bcm2835_delay' arcon.c:(.text+0x14c): undefined reference to `RF24::available()' arcon.c:(.text+0x15c): undefined reference to `RF24::getDynamicPayloadSize()' arcon.c:(.text+0x16c): undefined reference to `RF24::read(void*, unsigned char)' /tmp/ccuf7ZZm.o: In function `_GLOBAL__sub_I_radio': arcon.c:(.text.startup+0x60): undefined reference to `RF24::RF24(unsigned char, unsigned char, unsigned int)' collect2: error: ld returned 1 exit status
-
Понятия не имею что такое lrf24…
Это подсказка линковщику ld (вызывается компилятором g++) что часть функций, которые описаны в RF24.h находится в динамической библиотеке lrf4. На самом деле она называется lrf24-bcm…
Если ты при установке библиотеки RF24 выполнял make install то в '/usr/local/lib' у тебя должно быть примерно так (должны быть скомпилированная библиотека и симлинки на неё):pi@raspberrypi:~/nrf24l01/RF24/RPi/RF24/examples $ ls -l /usr/local/lib total 44 lrwxrwxrwx 1 root staff 33 May 19 19:46 librf24-bcm.so -> /usr/local/lib/librf24-bcm.so.1.0 lrwxrwxrwx 1 root staff 33 May 19 19:46 librf24-bcm.so.1 -> /usr/local/lib/librf24-bcm.so.1.0 -rwxr-xr-x 1 root staff 40792 May 19 19:46 librf24-bcm.so.1.0 drwxrwsr-x 4 root staff 4096 Mar 18 11:13 python2.7и в '/usr/local/include' (должна быть папка RF24 с заголовчными файлами)ls -l /usr/local/include/ total 4 drwxr-sr-x 2 root staff 4096 May 19 19:46 RF24
Теперь о компиляции.
pi@MediaServer:~/MyProg $ sudo g++ -Wall -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -L /home/pi/RF24/RPi/RF24 -lrf24 arcon.c -o rpi /usr/bin/ld: cannot find -lrf24 collect2: error: ld returned 1 exit status
Во-первых, sudo не нужен.
Во-вторых -L /home/pi/RF24/RPi/RF24 вроде должен сообщать линковщику где искать библиотеки. Поскольку у меня (и у тебя скорее всего тоже) библиотека установлена командойmake installто библиотека уже будет в папке /usr/loca/lib, про которую линковщик и так в курсе, поэтому этот параметр можно убрать.
-lrf24нужно заменить на -lrf24-bcmтак как имя у библиотеки изменилось.Далее
#include "/home/pi/RF24/RPi/RF24/RF24.h"
должен указвать на RF24.h c закомментированными define'ами.
Я изменил это на #include <RF24.h> и добавил параметр-I../В итоге такой код (файл находится в папке /home/pi/nrf24l01/RF24/RPi/RF24/examples)
pi@raspberrypi:~/nrf24l01/RF24/RPi/RF24/examples $ cat testrf24.cpp #include <cstdlib> #include <iostream> #include "RF24.h" #include <fstream> using namespace std; // spi device, spi speed, ce gpio pin //RF24 radio("/dev/spidev0.0",8000000,25); RF24 radio(12,13,25);//значения просто для примера, чтобы компилятор не ругался. void setup(void) { // init radio for reading radio.begin(); radio.enableDynamicPayloads(); radio.setAutoAck(1); radio.setRetries(15,15); radio.setDataRate(RF24_1MBPS); radio.setPALevel(RF24_PA_MAX); radio.setChannel(76); radio.setCRCLength(RF24_CRC_16); radio.openReadingPipe(1,0xF0F0F0F0E1LL); radio.startListening(); } void loop(void) { char receivePayload[64]; while (radio.available()) { uint8_t len = radio.getDynamicPayloadSize(); radio.read(receivePayload, len); // Костыль для создания промежуточного файла. ofstream out("/dev/nrf24"); out << receivePayload << "\n"; out.close (); //cout<<"\n Data="<<receivePayload; delay(200); } } int main(int argc, char** argv) { cout << "Driver initialized, please check values of /dev/nrf24" << endl; setup(); while(1) loop(); return 0; }
компилируется такой командой
g++ -Wall -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -I../ -lrf24-bcm testrf24.cpp -o rpi
-
Большое спасибо, прога компиллируется!
Связать устройства пока не смог, буду мучать их дальше. -
Мне тоже скоро должны прийти такие модули. Когда придут буду разбираться с подключением и настройкой. Думаю совместно сможем заставить их работать.
-
fort (2016-05-30 17:29:17):Мне тоже скоро должны прийти такие модули. Когда придут буду разбираться с подключением и настройкой. Думаю совместно сможем заставить их работать.
Отлично, а то я что-то застопорился. С ардуино, вроде проблем не должно быть — модуль выдает о себе инфу, значит работает. Что-то, видимо, на стороне Raspnerry.
-
Добрый день.
Подскажите, как увидеть все данные, идущие по каналу?
Нужно записывать данные, передаваемые китайским ваттметром, но не знаю параметров передачи (канал, размер payload, адрес). В пример приёма добавил цикл с перебором каналов, но ничего не получаю.#include #include #include <RF24/RF24.h> using namespace std; // gpio pins, spi speed RF24 radio(RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); int main(int argc, char** argv) { char receivePayload[16]; uint8_t pipe_num=0; radio.begin(); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_1MBPS); radio.setCRCLength(RF24_CRC_16); radio.setRetries(15, 15); radio.setAutoAck(1); for( int i=0; i<126; i++){ radio.setChannel(i); radio.enableDynamicPayloads(); // radio.setPayloadSize(32); radio.openReadingPipe(0,0xE8E8F0F0E2LL); radio.openReadingPipe(1,0xC1C2C2C2C2LL); radio.openReadingPipe(2,0xC1C2C2C2C3LL); radio.openReadingPipe(3,0xC1C2C2C2C4LL); radio.openReadingPipe(4,0xC1C2C2C2C5LL); radio.openReadingPipe(5,0xC1C2C2C2C6LL); radio.startListening(); printf(«Start channel %i \n»,i); for(int k=0; k<300000;k++) { while (radio.available(&pipe_num)) { // Clear measurement values memset(receivePayload,0,sizeof(receivePayload)); // radio.read(&receivePayload, sizeof(receivePayload)); uint8_t len = radio.getDynamicPayloadSize(); radio.read(receivePayload, len); printf(«pipe %d: %s\n», pipe_num, receivePayload); } } radio.stopListening(); } return 0; }
-
Еще один вопрос.
Включаю через raspi-config SPI, в его текстовом GUI получаю сообщение:
The SPI interface is enabled
Выхожу из raspi-config
В консоли вижу:/usr/bin/raspi-config: 597: /usr/bin/raspi-config: dtparam: not found
Означает ли это, что SPI не включился и дальше пытаться работать с nRF24l01+ смысла нет?
Как проверить работоспособность SPI? -
raspi-config, по-моему, при включении SPI просто правит файл /boot/config.txt. Как написано здесь достаточно просто добавить/раскомментировать
dtparam=spi=on
Насколько я понял, при включении SPI после перезагрузки в каталоге /dev/ должны появиться уcтройства spidev0.0 и spidev1.1.
Также при наличии подключенного устройства в выводе dmesg должно быть что-то про SPI. Проверить можно такdmesg | grep -i spi
У меня на моей малине B+ через SPI не заработал считыватель MFRC522, хотя с ардуиной он работает. Возможно для работы SPI нужно еще что-то докрутить.
-
завелось!) еще раз спасибо.
Почему не работало.
- Изначально последовал одному из советов и припаял на радиомодуль электролит на 1 мкФ (в других туториалах советовали больше). Также понятия не имел, что у конденсаторов может быть полярность.) Поэтому на одном из модулей он стоял неправильно. Был ли причиной конденсатор 1мкФ не знаю, но полярность — однозначно сыграла роль.
- Установил правильно конденсаторы на 4,7 мкФ. Проще всего оказалось воткнуть вот так
И заработало.
-
Вот и хорошо.
Мне вот только пришли оми модули, решил проверить их работу.
Моя система — Rpi B+:uname -a Linux raspberrypi 4.4.9+ #884 Fri May 6 17:25:37 BST 2016 armv6l GNU/Linux
Сначала ставим библиотеку как описано здесь.
Папки examples_rpi у меня не оказалось, зато есть examples_linx. Переходим в неё и компилируем примеры.
pi@raspberrypi ~/RF24/examples_linux $ make arm-linux-gnueabihf-g++ -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -Ofast -Wall -pthread -I/usr/local/include/RF24/.. -I.. -L/usr/local/lib gettingstarted_call_response.cpp -lrf24 -o gettingstarted_call_response arm-linux-gnueabihf-g++ -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -Ofast -Wall -pthread -I/usr/local/include/RF24/.. -I.. -L/usr/local/lib pingpair_dyn.cpp -lrf24 -o pingpair_dyn pingpair_dyn.cpp: In function ‘int main(int, char**)’: pingpair_dyn.cpp:201:42: warning: ‘len’ may be used uninitialized in this function [-Wmaybe-uninitialized] radio.write( receive_payload, len ); ^ pi@raspberrypi ~/RF24/examples_linux $ sudo ./transfer
Примеры скомпилировались, но не работают:
pi@raspberrypi ~/RF24/examples_linux $ sudo ./gettingstarted RF24/examples/GettingStarted/ ================ SPI Configuration ================ CSN Pin = CE0 (PI Hardware Driven) CE Pin = Custom GPIO22 Clock Speed = 8 Mhz ================ NRF Configuration ================ STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0 RX_ADDR_P0-1 = 0x544d52687c 0xabcdabcd71 RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6 TX_ADDR = 0x544d52687c RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00 EN_AA = 0x3f EN_RXADDR = 0x03 RF_CH = 0x4c RF_SETUP = 0x07 CONFIG = 0x0e DYNPD/FEATURE = 0x00 0x00 Data Rate = 1MBPS Model = nRF24L01+ CRC Length = 16 bits PA Power = PA_MAX ************ Role Setup *********** Choose a role: Enter 0 for pong_back, 1 for ping_out (CTRL+C to exit) >1 Role: Ping Out, starting transmission Now sending... RF24 HARDWARE FAIL: Radio not responding, verify pin connections, wiring, etc. RF24 HARDWARE FAIL: Radio not responding, verify pin connections, wiring, etc. RF24 HARDWARE FAIL: Radio not responding, verify pin connections, wiring, etc. Правим файл gettingstarted.cpp меняем строчку: RF24 radio(22,0);на RF24 radio(25,0); и файл transfer.cpp меняем строчку: RF24 radio(RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); на RF24 radio(RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); поскольку у меня пин CE модуля подключен к 22 пину малины (он же GPIO25). Теперь запускаем пример снова: pi@raspberrypi ~/RF24/examples_linux $ sudo ./transfer RF24/examples/Transfer/ ================ SPI Configuration ================ CSN Pin = CE0 (PI Hardware Driven) CE Pin = Custom GPIO25 Clock Speed = 8 Mhz ================ NRF Configuration ================ STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0 RX_ADDR_P0-1 = 0x544d52687c 0xabcdabcd71 RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6 TX_ADDR = 0x544d52687c RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00 EN_AA = 0x3f EN_RXADDR = 0x03 RF_CH = 0x01 RF_SETUP = 0x07 CONFIG = 0x0a DYNPD/FEATURE = 0x00 0x00 Data Rate = 1MBPS Model = nRF24L01+ CRC Length = 8 bits PA Power = PA_MAX ************ Role Setup *********** Choose a role: Enter 0 for receiver, 1 for transmitter (CTRL+C to exit) >1 Role: Ping Out, starting transmission Initiating Basic Data Transfer
На арудине получаем:
Payload Count: 0 Rate: 0.00 Payload Count: 0 Rate: 2.40 Payload Count: 75 Rate: 13.44 Payload Count: 420 Rate: 13.34 Payload Count: 417 Rate: 13.15 Payload Count: 411
Для ардуины библотека ставилась через «Управление библиотеками», использовался пример Transfer.
Что важно, в обоих примерах (в малине и на ардуине) используются идентичные настройки (номера каналов, адреса скорость) и есть возможность переключения режима работы приёмник/передатчик. -
P.S. На малине пример запускать надо от рута, иначе (как писали выше) получим segmentation fault.
P.P.S. С ардуиной модуль заработал без конденсатора. Возможно пока используюся малые скорости и низкая мощность его отсутствие не сказывается.
Схема подключения к ардуине (правда у меня не исползуется другой контакт, который в одном ряду с питанием, вроде IRQ) —
Схема подключения к малиен — -
А не сталкивались со 100% загрузкой процессора?
Насколько я понимаю, это из-за цикла в loop:while (radio.available()) { ... }
видимо, цикл прогоняется на максимальной скорости, поэтому загрузка 100%.
Поставил в начало циклаsleep (15);
Теперь загрузка 0, данные пока не пропадали, но как-то на душе не спокойно. Может правильней как-то, например, все, что в loop вложить в цикл, ждущий активности на gpio? Если да, то как это организовать?