Чтение двоичного кода (нужна помощь)
- Войдите на сайт для отправки комментариев
Пт, 04/09/2015 - 12:24
Доброго времени суток. Сам пока не могу, вот и побираюсь. Задача считывать и обрабатывать трехразрядный последовательный двоичный код, точнее код будет длинным и разной частоты, но поймать надо фрагменты. Конкрктнее, нужно чтоб ардуинка реагировала на две комбинации "101" и "010", т.е. старый добрый сдвиговый регистр мне нужен на три разряда с дешифратором, тока на основе ардуинки. Подскажите пару строчек кода с коментариями.
давай точнее. откуда идет сигнал и т.д.
Можно просто считать 3 бита, и по их содержанию делать то, что нужно. Важно, что бы линии не висели в Z состоянии. Вот пример, в нём 3 сигнала подать на входы A0, A1, A2
попробую спасибо, только вот ,как я понял, придется преобразовать код из последовательного в параллельный, тем же самым сдвиговым регистром, а уж апосля тремя входами читать сразу три разряда, каждый на своем входе. Поправь меня если я не понял.
ну вот. это не одно и тоже как первоначальная задача
Анатолий43978, зачем вы всё время своё сообщение редактируете? Уже не помню что вы там писали про энкодер. Если код последовательный, значит я вас неправильно понял, и скетч из #2 никаким боком не подойдёт. Тогда уточняйте, что должно синхронизировать чтение данных с ардуины? Если опираться на изменение логического уровня, то получится код 1010101010101 , который всегда будет соответствовать вашему условию 101 или 010.
Это случаи зеркального отражения кода .....1001100110...., при изменении направления вращения: 010; 111; 101; 000, которые я и распознаю с уже оказанной Вами помощью. Энкодер самодельный состоит из зубчатого колеса и двух датчиков смещенных на Пи/2, так что два датчика могут видеть один зубец одновременно, но фронты зубцов они видят неодновременно. Код каждого датчика как Вы и сказали будет 10101010. По поводу последовательного кода я наломал дров, и ввел Вас в заблуждение. С одним датчиком невозможно распознать изменение направления вращения, а с двумя невозможен один последовательный общий код, подаваемый на один вход ардуинки. Так что два сигнала соединяем, подавая на два регистра соответственно 1 на 1-й, 2 на 2-й, а выходной параллельный код берем с чередующихся выходов первого и второго регистров. Получится наш параллельный код ....1001100110.... который будет сдвигатся новыми импульсами, а в момент реверса мы и сможем наблюдать наши зеркалки: 000; 010; 101; 111. От ардуинки мне нужно, чтобы она при каждом реверсе поочередно переводила один из двух выходов в состояние HIGH.Только вот еще вопрос, можно ли как-то попроще. А то получается нагромоздил я с этими регистрами.
Анатолий43978, а зачем вам "один последовательный общий код" ? Он наоборот всё усложнит. Подавайте два сигнала с двух датчиков на ардуино, и обрабатывайте как обычный энкодер.
Спасибо. Вот тут все работает, использовал входы 2 и 4.
Гыыыыы! Ты еще делаев в обработчик прерываний налепи.
Я понимаю, что чайники смешные. Но замечание справедливое . Работает он только на очень низкой частоте, около 100 Гц начинает глючить. Мож подскажете как скорость поднять, чтоб можно было до 100 кГц на вход принимать?
Анатолий43978, он вообще у вас и не должен работать нормально. Причём тому 3 причины. Во первых вывод в сериал из под прерывания не обязан работать, он может просто виснуть. Во-вторых вы читаете пины энкодера не одновременно, а это чревато глюками, (как раз если данные будут быстро меняться). А если вы "держитесь" за одно прерывание, то читать нужно дважды, иначе опять глюки. В общем как-то так, пины сохранил ваши - 2 и 4.
Понял...... сорри
trembo, PINx -порт чтения, PORTx -порт записи :)
Считает резво, как надо. Я тут попробовал задействовать pin13 как выход, получается что он меняет свое состояние при изменении значения, т.е. мигает при вращении. Ну подскажите бестолковому, мне нужно чтоб состояние выхода менялось только при смене направления вращения, неважно в плюсе или в минусе текущее значение.
Анатолий43978, в 13 и 14 строках обработка событий.. в одну строку добавьте включение светодиода, в другую выключение.. Собственно так же и в вашем скетче из #8 было.
Так и сделал, но светодиод мигает при каждом импульсе.А мне нужно, чтоб менял состояние только при изменении направления врвщения , а до того сохранял состояние.
Извиняюсь, я не поставил фигурные скобки после условия, а по вашему примеру продолжал строки через запяточку. Ну не смейтесь только.
здесь все такие что будут смеяться....
Здравствуйте, сразу скажу делитант без стажа, нужна рлилщь или совет есть телеграфный канал, он преобразует со в бинарный, так вот возможно ли это бинарный отправить на ардуино так чтобы принятый бинарный код был отправлен на термопринтер, естественно уже от 0-9
Антон83 На ардуино можно ракету в космос запустить !
А по сути вопроса или дать совет.
Вы ошибки исправьте сначала, а то суть вопроса теряется !!!
Много встречных вопросов:
1. Кто такой "делитант"? Что он делит?
2. "рлилщь" - Если на первый вопрос хоть идеи есть, то вот тут вообще пасую!
3. Что такое "со", в контексте "преобразует со"? Кто и что именно преобразует?
4. Про термопринтер и "от 0-9" я не смог угадать ничего. Хотя бы что означает "от 0-9"? От и до ...чего?
5. Про запятые и согласование родов существительных в тексте не пишу. "Это бинарный" - в принципе можно догадаться о смысле в верхней части твоего черепа. Гипотезу о наличии там мозга отвергаю, как смехотворную.
А мы тут русский пришли разбирать!?
В объеме, достаточном для понимания твоей писанины. Пока ты "не сдал".
Я уже разобрался со своими вопросами, пока ты ошибки искал.
И даже нах не пришлось посылать. Удачный заход. Не пиши сюда больше, прошу!