Передача информации между двумя контактами на Arduino Uno - PullRequest
0 голосов
/ 12 мая 2018

Я довольно новичок в Arduino и пытаюсь выяснить, как соединить 2 контакта, затем вывести информацию (или ШИМ) с одного и ввести ее на другой вывод.

Пока я пробовал это, ноон показывает только те же цифры (~ 500 до 440), даже если я отсоединяю контакты:

int pin_out = 9;
int pin_in = 0;

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

void loop() {

  analogWrite(pin_out, 255);
  delay(500);
  Serial.println(analogRead(pin_in));
}

Редактировать:

Мне удалось измерить некоторый сигнал с помощью этого кода:

int pin_out = 9;
int pin_in = 0;

void setup() {
  Serial.begin(9600);
  pinMode(pin_out, OUTPUT);
  pinMode(pin_in, INPUT);
}

void loop() {
  analogWrite(pin_out, HIGH);
  Serial.println(pulseIn(pin_in, HIGH));
  delay(500);
  analogWrite(pin_out, LOW);
  Serial.println(pulseIn(pin_in, HIGH));
  delay(500);
}

Диапазон сигналов от 0 до 9. Что я измеряю?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Связь между двумя контактами может быть сложной, сигнал ШИМ в основном используется для связи с двигателями или устройствами, которым требуются входные значения из диапазона <0, 2000>.

Убедитесь, что ваш вывод Arduino может генерировать ШИМ-сигнал с аналоговым интерфейсом. В большинстве плат Arduino контакты, которые могут использоваться в качестве ШИМ-выхода, отмечены белым кружком вокруг него. Если вы не видите ни одного из них, проверьте это в документации.

По моему мнению, если вы действительно хотите общаться с двумя выводами с помощью сигнала PWM, вам следует использовать библиотеку Servo.h. С помощью метода write () вы можете легко генерировать сигнал PPM. Вы можете прочитать это с помощью функции pulseIn, но я бы порекомендовал использовать прерывание, так как это намного быстрее.

На самом деле уже создан 2-контактный протокол связи с именем UART. Вы можете попробовать softwareSerial или что-то в этом роде, если хотите отправить значение больше, чем <0, 2000>. I2C также использует 2 контакта. Я бы порекомендовал один из них.

0 голосов
/ 12 мая 2018

Если вы используете ШИМ, используйте функцию pulse () для его измерения. Аналоговое считывание не может вам помочь.

Это интересный вопрос. Возможно, попробуйте использовать контакты далеко друг от друга, так как атмосферный шум может нарушить сигнал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...