Доброго времени суток! Я столкнулся с проблемой, над которой бьюсь все новогодние праздники, но так и не смог ее решить(. Имеется Arduino Pro micro(5V), к ней подключаю стабилизатор напряжения и сам модуль NRF24l01. Сразу скажу что модули отлично работают на ардуино UNO, но при подключении к микро не определяются вовсе, в мониторе вижу либо одни нули, либо 4444 либо рандомные буквы и цифры наперебой(. перепаял питание и теперь питаю NRF24l01 от лабораторного блока питания 5В(питаю именно стабилизатор). пробовал также припаивать конденсаторы(керамический и электролитический) бестолку, пробовал менять питание от UNO, но это тоже не помогло. схема подключения у меня вот такая(только контакт IRO не подключён). есть подозрения в том, что работает некорректно из за отображения в IDE как леонардо, кто ни будь сталкивался с этим, как влияет ли это на работу? Так же не раз проверял контакты, всё припаяно правильно(прозванивал мультиметром соединения модуля и платы питания, а также ардуины и платы питания(кстати ее менял на заведомо рабочую)), менял пины в прошивке RF24 radio(9, 10) либо RF24 radio(10, 9) всё равно бесполезно. Использую палату Arduino Pro micro только потому, как она определяется пк как джойстик и можно тренироваться управлением квадрокоптером либо самолётом(кстати с этим плата отлично справляется). Жду вашей помощи, если уж я и вправду всё перепробовал и других вариантов нет, придётся всё перепаивать и собирать RC пульт на Arduino nano. но это микроконтроллер не влезает в корпус, поэтому придётся создавать новый пульт... короче мне гораздо проще разобраться что не так с pro micro чем заново заниматься посторйкой пульта. Ниже прикреплён скетч и фото как это выглядит
C++:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
RF24 radio(10, 9); //Arduino UNO
const uint8_t num_channels = 128;
uint8_t values[num_channels];
void setup(void)
{
Serial.begin(9600);
Serial.println("Scanner Air On");
printf_begin();
radio.begin();
radio.setAutoAck(false);
radio.startListening();
delay(5000);
radio.printDetails();
int i = 0;
while ( i < num_channels )
{
printf("%x", i >> 4);
++i;
}
printf("\n\r");
i = 0;
while ( i < num_channels )
{
printf("%x", i & 0xf);
++i;
}
printf("\n\r");
}
const int num_reps = 100;
void loop(void)
{
memset(values, 0, sizeof(values));
int rep_counter = num_reps;
while (rep_counter--)
{
int i = num_channels;
while (i--)
{
radio.setChannel(i);
radio.startListening();
delayMicroseconds(512);
radio.stopListening();
if ( radio.testCarrier() )
++values[i];
}
}
int i = 0;
while ( i < num_channels )
{
printf("%x", min(0xf, values[i] & 0xf));
++i;
}
printf("\n\r");
}
Вложения
-
2.3 KB Просмотры: 1
Изменено: