Инверсия сигнала

Oksymoron
Offline
Зарегистрирован: 28.01.2017

Добрый вечер имеется вот такой код 

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9, 10);  // "создать" модуль на пинах 9 и 10 Для Уно

byte recieved_data[2];   // массив принятых данных
byte relay1 = 2;         // реле на 2 цифровом
byte relay2 = 3;         // сервопривод на 3 цифровом


byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

void setup() {
  Serial.begin(9600);       // открываем порт для связи с ПК

  pinMode(relay1, OUTPUT);   // настроить пин реле как выход
  pinMode(relay2, OUTPUT); 


  radio.begin(); //активировать модуль
  radio.setAutoAck(1);        // режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);    // (время между попыткой достучаться, число попыток)
  radio.enableAckPayload();   // разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);   // размер пакета, в байтах

  radio.openReadingPipe(1, address[0]);     // хотим слушать трубу 0
  radio.setChannel(0x60);  // выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX);   // уровень мощности передатчика. На выбор 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();   // начинаем слушать эфир, мы приёмный модуль
}

void loop() {
  Serial.print("START");
  Serial.print(recieved_data[0]);
  Serial.println(recieved_data[1]);
  byte pipeNo;
  
  while ( radio.available(&pipeNo)) { // есть входящие данные
    // чиатем входящий сигнал
    radio.read(&recieved_data, sizeof(recieved_data));
  
    // подать на реле сигнал с 0 места массива
   digitalWrite(relay1, !recieved_data[0]);
   digitalWrite(relay2, !recieved_data[1]);
    delay(250);
   digitalWrite(relay1, 0);
   digitalWrite(relay2, 0); 
  }
}

он рабочий, но как инвертировать выход МК??? при включении МК на relay1 и relay2 висит логический 0 как мне его поменять на логическую 1???

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Восклицательный знак - в вашем коде - инверсия значения, применяется по нужной логике

Oksymoron
Offline
Зарегистрирован: 28.01.2017

спасибо