Камрады, столкнулся с такой проблемой. Изучаю работу NRF24. Написал код передатчика и приемника. Всё работает отлично. Но когда я хочу подключить гироскоп MPU6050 к приемнику, NRF перестает принимать данные. Происходит это в момент вызова Wire.begin(). Если убираю эту строку, то всё работает. В чем может быть засада? они же на разных шинах работают - i2c и spi.
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "Wire.h" // для работы по i2c
#include <Servo.h> // для работы esc
// переменные для работы NRF24
RF24 radio(9, 10); // создаем NRF24. порты D9, D10: CSN CE
byte pipe_address = "transmitter"; // название радиоканала
byte receive_data[6]; // данные для получения по NRF24
void setup() {
Serial.begin(9600); // открываем порт для связи с ПК
InitNRF24_Receive(); // инициализация NRF24 на прием
Wire.begin(); // инициализация i2c
Serial.println("start: ");
}
void loop() {
// Если есть данные на приеме приемника
if (radio.available()){
radio.read(&receive_data, sizeof(receive_data)); // чиатем входящий сигнал
Serial.println("get data: ");
}
}
void InitNRF24_Receive() {
radio.begin(); // активировать модуль
radio.setAutoAck(1); // режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); // (время между попыткой достучаться, число попыток)
radio.enableAckPayload(); // разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); // размер пакета, в байтах
radio.openReadingPipe(1, pipe_address); // открываем канал на прослушивание
radio.setChannel(0x60); // выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MIN); // уровень мощности передатчика. На выбор 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.startListening(); // начинаем слушать эфир, мы приёмный модуль
}
Питание идет отдельно на макетной плате. Плюс еще от USB порта при подключении ардуины к компу. Попробовал вообще MPU6050 отключить - результат такой же(((
питание 5В от внешнего источника идет на ардуину (vin, gnd). NRF запитана от этого же источника через небольшую плату на AMS1117 понижающую питание до 3,3В. Всё - больше ничего нет.
Да пофигу, в последних версиях ide (а может и ранее) при подобном написании библиотеки - сначала поиск идёт в каталоге скетча, если там не найдено - то в «общем хранилище либ».