Приемник и передатчик на Arduino Nano и NRF24L01. Проблема в следующем, если включить первым приемник то светодиод D2 будет светится пока не включить передатчик. Включаю передатчик светодиод тухнет. Кнопки работают так- SV2 нажал отпустил горит D1, нажал отпустил D1 потух. SV1 нажал D2 горит отпустил D2 потух. Как подправить скетч(и), чтобы независимо что первое включить(приемник или передатчик) светодиод D2 изначально не светился. Помогите лузеру. Код (C++): #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #define CE_PIN 9 #define CSN_PIN 10 const uint64_t pipe = 0xE8E8F0F0E1LL; RF24 radio(CE_PIN, CSN_PIN); int datos[5]; void setup(void) { radio.begin(); radio.openWritingPipe( pipe); Serial.begin(9600); pinMode(4, INPUT);//левая кнопка digitalWrite(4, HIGH);//левая кнопка нажал отпустил горит pinMode(3, INPUT);//правая кнопка digitalWrite(3, HIGH); } void loop() { datos[0] = analogRead(1); datos[1] = analogRead(0); datos[2] = analogRead(4);//крутилка ствола datos[2] = map(datos[2],0,1023,0,180); datos[3] = digitalRead(4);//кнопка D4 левая datos[4] = digitalRead(3);//кнопка D3 правая bool ok = radio.write(datos, sizeof(datos)); Serial.println(datos[0]); } Код (C++): #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> const uint64_t pipe = 0xE8E8F0F0E1LL; #define CE_PIN 9 #define CSN_PIN 10 RF24 radio(CE_PIN, CSN_PIN); int datos[2]; byte IsConnect; void setup() { pinMode(14, OUTPUT); pinMode(15, OUTPUT); radio.begin(); Serial.begin(9600); radio.openReadingPipe(1, pipe); radio.startListening(); } void loop() { static int8_t buttonState = LOW; uint8_t numero_canal; if ( radio.available()) { radio.read(datos, sizeof(datos)); IsConnect = HIGH; } else{ IsConnect = LOW; } if (buttonState == HIGH && datos[0] == LOW) digitalWrite(14, ! digitalRead(14)); buttonState = datos[0]; digitalWrite(15, !datos[1]); }
Попробуйте так: Код (C++): #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> const uint64_t pipe = 0xE8E8F0F0E1LL; #define CE_PIN 9 #define CSN_PIN 10 RF24 radio(CE_PIN, CSN_PIN); int datos[2]; byte IsConnect; void setup() { pinMode(14, OUTPUT); pinMode(15, OUTPUT); digitalWrite(14, LOW); digitalWrite(15, LOW); radio.begin(); Serial.begin(9600); radio.openReadingPipe(1, pipe); radio.startListening(); } void loop() { static int8_t buttonState = LOW; uint8_t numero_canal; if ( radio.available()) { radio.read(datos, sizeof(datos)); IsConnect = HIGH; if (buttonState == HIGH && datos[0] == LOW) digitalWrite(14, ! digitalRead(14)); buttonState = datos[0]; digitalWrite(15, !datos[1]); } else { IsConnect = LOW; } }
Да спасибо попробую! Это только часть кода масив больше на 5 элементов. Там идет управление сервоприводом и пропорциональное управление 2-мя двигателями через L298N. А нельзя ли как в 23 строке приемника прописать изначально, что кнопка не нажата? Вот только дальше в коде не пойму как прописать(33 и 34 строки это для первой кнопки ).