Здравствуйте, столкнулся с проблемой, что радиомодули nrf24l01 не взаимодействуют друг с другом. В моем проекте есть приемник и передатчик и управление должно осуществляться передатчиком, но приемник не реагирует, т.е они не связаны по nrf24l01. Получается двигатели на приемнике крутятся лишь в одну сторону, управлять никак не получается, даже если убрать тот же самый радиомодуль, то ничего не изменится, все равно двигатели будут крутиться в одну сторону и не остановятся. Проверял все контакты мультиметром и все окей, радиомодуля исправны, акселероместр исправен, прикладываю источник с которого я брал эти схемы/код, отличие только в том, что я использую вместо двух нано одно нано и одно уно.
Приемник:
#include<SPI.h>
#include<nRF24L01.h>
#include<RF24.h>
int ENA = 3;
int ENB = 9;
int MotorA1 = 4;
int MotorA2 = 5;
int MotorB1 = 6;
int MotorB2 = 7;
RF24 radio(8, 10);
const byte address[6] = "00001";
struct data {
int xAxis;
int yAxis;
};
data receive_data;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0,address);
radio.setPALevel(RF24_PA_MIN);
radio.setDataRate(RF24_250KBPS);
radio.startListening();
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(MotorA1, OUTPUT);
pinMode(MotorA2, OUTPUT);
pinMode(MotorB1, OUTPUT);
pinMode(MotorB2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly
while(radio.available()) {
radio.read(&receive_data, sizeof(data));
if(receive_data.yAxis > 400) {
digitalWrite(MotorA1, LOW);
digitalWrite(MotorA2, HIGH);
digitalWrite(MotorB1, HIGH);
digitalWrite(MotorB2, LOW);
analogWrite(ENA, 150);
analogWrite(ENB, 150);
}else if(receive_data.yAxis < 320) {
digitalWrite(MotorA1, HIGH);
digitalWrite(MotorA2, LOW);
digitalWrite(MotorB1, LOW);
digitalWrite(MotorB2, HIGH);
analogWrite(ENA, 150);
analogWrite(ENB, 150);
} else if(receive_data.xAxis < 320){
digitalWrite(MotorA1, HIGH);
digitalWrite(MotorA2, LOW);
digitalWrite(MotorB1, HIGH);
digitalWrite(MotorB2, LOW);
analogWrite(ENA, 150);
analogWrite(ENB, 150);
}else if(receive_data.xAxis > 400){
digitalWrite(MotorA1, LOW);
digitalWrite(MotorA2, HIGH);
digitalWrite(MotorB1, LOW);
digitalWrite(MotorB2, HIGH);
analogWrite(ENA, 150);
analogWrite(ENB, 150);
}else {
digitalWrite(MotorA1, LOW);
digitalWrite(MotorA2, LOW);
digitalWrite(MotorB1, LOW);
digitalWrite(MotorB2, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
}
}
Передатчик:
#include<SPI.h>
#include<nRF24L01.h>
#include<RF24.h>
const int x_out = A0;
const int y_out = A1;
RF24 radio(8,10);
const byte address[6] = "00001";
struct data{
int xAxis;
int yAxis;
};
data send_data;
void setup() {
// put your setup code here, to run once:
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.setDataRate(RF24_250KBPS);
radio.stopListening();
}
void loop() {
// put your main code here, to run repeatedly:
send_data.xAxis = analogRead(x_out);
send_data.yAxis = analogRead(y_out);
radio.write(&send_data, sizeof(data));
}
Вложения
-
138.6 KB Просмотры: 12
-
90.8 KB Просмотры: 12