Выбор PIN для подключения радиочастотного приемника

Я использую библиотеку RCSwitch для приема сигналов с помощью радиочастотного приемника. Мне действительно нужно изменить контакт, к которому подключен приемник на Arduino Uno.

Что я должен изменить в своем скетче? К каким контактам я могу подключить приемник?

Это мой код:

#include <RCSwitch.h>

RCSwitch receiver = RCSwitch();

void setup() {
  Serial.begin(9600);

  receiver.enableReceive(0);
  pinMode(1, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);

  Serial.println("READY");
}

void loop() {
  if (receiver.available()) {
    
    int value = receiver.getReceivedValue();

    Serial.println(value);

    switch(value) {
      case 1:
        digitalWrite(1, HIGH);
        digitalWrite(9, HIGH);
        digitalWrite(10, HIGH);
        break;
      case 2:
        digitalWrite(1, LOW);
        digitalWrite(9, HIGH);
        digitalWrite(10, HIGH);
        break;
      case 3:
        digitalWrite(1, HIGH);
        digitalWrite(9, LOW);
        digitalWrite(10, HIGH);
        break;
      case 4:
        digitalWrite(1, HIGH);
        digitalWrite(9, HIGH);
        digitalWrite(10, LOW);
        break;
    }
  }
}

, 👍1

Обсуждение

IIRC ему нужен вывод с поддержкой прерываний, поэтому 2 и 3 на Uno. Зачем вам нужно переключать контакты?, @Dave Newton


1 ответ


Лучший ответ:

3

Вы можете измениться

receiver.enableReceive(0);

который использует вывод 2, чтобы

receiver.enableReceive(1);

это вывод 3 на Uno. Это номера внешнего прерывания. У Uno есть только два из них, которые привязаны к этим двум контактам. Поэтому, пока вы используете Arduino Uno, вам нужно использовать один из них. Например, Arduino Mega имеет больше внешних прерываний.

Для справки также загляните на страницу github библиотеки RCSwitch и ее вики, особенно на сайт о получении, где это описано.


Кроме того: поскольку вы используете Serial, вы можете захотеть изменить

pinMode(1, OUTPUT);

к другому контакту, так как контакты 0 и 1 используются для аппаратного последовательного интерфейса (Serial, который подключается к USB). Таким образом, использование этого вывода сталкивается с последовательной связью.

,

Разве нет другого способа использовать вывод типа 9?, @manarinian

@manarinian Ему нужен вывод с поддержкой прерываний: https://github.com/sui77/rc-switch/blob/7925dfb753c78bf22f6b8164995cac76fdaa97e1/RCSwitch.cpp#L561, @Dave Newton