Сквозная переда данных с одного канала на другой
- Войдите на сайт для отправки комментариев
Пнд, 22/06/2015 - 09:22
Помогите пожалуйста, не могу реализовать функцию сквозной передачи с одного канала на другой, а именно: я на канал 9 завел сигнал с приемника радио аппаратуры "футаба" - то есть сигнал для серво привода, мне его нужно передать на канал 10 без изменений.
void loop() { val = digitalRead(9); // считываем значение с канала digitalWrite(10, val); // устанавливаем значение на канал }
При этом серво привод управляется, но не точно и постоянно подергивается, я думаю это из-за того что сигнал не является цифровым.
а так:
void loop() { val = analogRead(9); analogWrite(10, val); }
Ничего не происходит.
Подскажите пожалуйста как правильно реализовать это.
Не понимаю зачем здесь ардуина если сигнал надо передать без изменений? Для такого случая кусок провода самое то.
При этом серво привод управляется, но не точно и постоянно подергивается, я думаю это из-за того что сигнал не является цифровым.
Там положение серво определяется скважностью ШИМ частотой примерно 500Гц. Функции digitalRead, digitalWrite для этого медленные. Нужно использовать прямой доступ к портам атмеги.
При этом серво привод управляется, но не точно и постоянно подергивается, я думаю это из-за того что сигнал не является цифровым.
Нужно использовать прямой доступ к портам атмеги.
Модно по подробнее, пожалуйста.
Не понимаю зачем здесь ардуина если сигнал надо передать без изменений? Для такого случая кусок провода самое то.
Ардуина в зависимости от ситуации: то передает без изменений, то управляет серво приводом сама.
Ну тогда может лучше так?
Включаем ключ, когда идет внешнее управление, а на время управления от ардуины выключаем его.
если передавать тоже самое то тогда непонятно нафига))) провод посоветовали уже
+ теперь понятно
Ну тогда может лучше так?
Включаем ключ, когда идет внешнее управление, а на время управления от ардуины выключаем его.
Я тоже склоняюсь к этому варианту, но что использовать электронный ключ или реле?
Желательно электронный ключ, но какой именно выбрать? посоветуйте пожалуйста.
пользуйся
Желательно электронный ключ, но какой именно выбрать? посоветуйте пожалуйста.
Почти любой. Я для подобных целей купил у китайцев 2n7000. Он и в линейном режиме работает хорошо.
пользуйся
Огромное спасибо. А почему такое большое время отклика?
Спасибо, не увидел сразу...
пользуйся
Нашел как измерить длину сигнала проще:
Но и тот и другой метод имеет сильные временные задержки если опрашивать 4 и более портов.
Можно было бы разнести каждое ожидание в разные потоки, но ардуино не имеет многопоточности. Что посоветуете это можно как либо решить? считывать несколько PPM сигналов без временных задержек?
проще? да это почти тоже самое)))
только еще проверяет длительность на минимальные и максимальные значения и сразу пересчитывает в PPM. функция map немного уменьшена, так как писал код для тиньки, а там оперативки очень мало
без временных задержек это по прерыванию
без временных задержек это по прерыванию
jeka_tm, подскажите пожалуйста по какому событию делать прерывания? по digitalRead(PPM_pin) == 1?
без временных задержек это по прерыванию
Как то так?
неа. а вообще таким способом ты мксимум 2 канала сделаешь
но думаешь в нужную сторону. нужно использовать режим change. срабатывает на любое изменение. и измерять время между вызовами прерывания, если соответствует нужному диапазону значит можно использовать и пересчитывать
2..... или больше......
Что-то было, помню, про PinChangeInterrupt......
А как превалось - обрабатываем то что засквозило со входа и сквозим на выход.
ну вот. можно и больше. только разобраться с правильным использованием PinChangeInterrupt