Заголовок темы должен отражать содержимое. Переформулируй или тема будет удалена
Всем привет. Связал две ардуино через NRF24L01, для того чтобы управлять серво через джойстик . Проблема: серво работает некоторое время, а потом резко перестает. Начинает работать только после отключения питания или вообще не работает. В чем может быть проблема?
C++:
ПУЛЬТ:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define led 3
RF24 radio(9, 10); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};
boolean buttonState = 0;
void setup() {
pinMode(12, OUTPUT);
radio.begin();
radio.openWritingPipe(addresses[1]); // 00002
radio.openReadingPipe(1, addresses[0]); // 00001
radio.setPALevel(RF24_PA_MIN);
delay(3000);
}
void loop() {
delay(10);
radio.stopListening();
int potValue = analogRead(A1);
int angleValue = map(potValue, 0, 1023, 0, 180);
radio.write(&angleValue, sizeof(angleValue));
delay(10);
radio.startListening();
while (!radio.available());
radio.read(&buttonState, sizeof(buttonState));
if (buttonState == HIGH) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
}
ПРИЕМНИК:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
#define button 2
RF24 radio(9, 10); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};
Servo myServo;
boolean buttonState = 0;
void setup() {
pinMode(button, INPUT);
myServo.attach(7);
radio.begin();
radio.openWritingPipe(addresses[0]); // 00001
radio.openReadingPipe(1, addresses[1]); // 00002
radio.setPALevel(RF24_PA_MIN);
delay(2000);
}
void loop() {
delay(10);
radio.startListening();
if ( radio.available()) {
while (radio.available()) {
int angleV = 0;
radio.read(&angleV, sizeof(angleV));
myServo.write(angleV);
}
delay(10);
radio.stopListening();
buttonState = digitalRead(button);
radio.write(&buttonState, sizeof(buttonState));
}
}
Изменено: