Официальный сайт компании Arduino по адресу arduino.cc
Сделать имитацию сигнала
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 09/06/2019 - 01:21
Доброго всем времени суток форумчане, подскажите пожалуйста, как можно съимитировать такой вот сигнал, посредствам Arduino UNO? Может быть есть какой-либо готовый скетч,который можно подправить.
Фото сигнала прикрепляю.
ps Ардуино начал заниматься очень недавно, не обессудьте за вопрос.
1. Похоже на сигнал последовательного порта.
2. Максимальная ширина картинки на форуме 780 пикселей. Если вставляете картинки, следите за тем, чтобы они были не шире (установите нужную ширину окна программы, не нужно снимать картинку с поного экрана).
Принял, пардон за картинку, беру на заметку.
Как такой можно выдать ардуиной?
...Как такой можно выдать ардуиной?
Вы можете обойтись и без ардуинки. Как выше #1 andriano абсолютно правильно подметил что Ваш сигнал сольно похож на TTL RS232. Идет [Start]1100'0100[Stop][Start]0110'1110[Stop]. Т.к. порядок следования обратный, то получается 23h 76h. Т.е. берете терминал, и шлете последовательность 23 76 (в hex-формате). Настройки порта - 1стоп бит, 8бит передачи, без проверки на паритет, скорость - согласно Вашему сигналу (по картинке не понять).
хм. К сожалению без ардуинки не обойтись, я хочу попробовать съимитировать этот сигнал, чтобы потом его принимать ардуинкой из другого аппарата.
Например, так:
PS Код не проверялся, накидан в блокноте...
Например, так:
PS Код не проверялся, накидан в блокноте...
Например, так:
PS Код не проверялся, накидан в блокноте...
Извините по повтор...
qbit - вам уже вроде говорили, что вы с временными интервалами работаете неправильно. И даже показывали, как надо. Продолжаете жрать кактус?
UPDATE - прошу прощения, вы там столько накрутили, что сразу не разглядел. По внимательному прочтению грубых ошибок нет, просто все в три раза длинеее, чем надо. И куча лишних переменных. Зачем при каждом заъходе в процедуру прибавлять прошедшее время к cnt_period. а по окончании - вычитать из него?
Если не ошибаюсь, вот этот код полностью эквиватентем вашей процедуре
Так если Sealeae его распознал, как сериал, то не проще ль .write() сделать?
...И даже показывали, как надо. Продолжаете жрать кактус?...
О чем речь? Что, где и когда "показывали"?
...И куча лишних переменных. Зачем при каждом заъходе в процедуру прибавлять прошедшее время к cnt_period. а по окончании - вычитать из него?...
"Лишние" переменные не случайны. Меджу 5 и 6 строками у Вас просткакивают лишние тики, которые никак не учитываются и которые дадут изменение в битовой скорости. Я думаю, Вы согласитесь, что зачение micros() в указанных строках разное.
...И даже показывали, как надо. Продолжаете жрать кактус?...
О чем речь? Что, где и когда "показывали"?
...И куча лишних переменных. Зачем при каждом заъходе в процедуру прибавлять прошедшее время к cnt_period. а по окончании - вычитать из него?...
"Лишние" переменные не случайны. Меджу 5 и 6 строками у Вас просткакивают лишние тики, которые никак не учитываются и которые дадут изменение в битовой скорости. Я думаю, Вы согласитесь, что зачение micros() в указанных строках разное.
несложно лечится заменой одной строки:
05
if
( (micros() - prev_micros) >= PEROID ) {
06 prev_micros -= PEROID; // вместо
prev_micros = micros(); и
всей эквилибристики// и т.д.
...
несложно лечится заменой одной строки:
06 prev_micros -= PEROID; // вместо
prev_micros = micros(); и
всей эквилибристики...
У Вас переменная prev_micros не такает, только вычитаете период. Для этого в #7 и и была введена промежуточная переменная tmp_micros.
...чтобы потом его принимать ардуинкой из другого аппарата.
Это существенно все меняет. Берите готовые библиотеки для работы с 1wire.
"Лишние" переменные не случайны. Меджу 5 и 6 строками у Вас просткакивают лишние тики, которые никак не учитываются и которые дадут изменение в битовой скорости. Я думаю, Вы согласитесь, что зачение micros() в указанных строках разное.
ну хорошо, давайте добавим одну строчку к моему коду, чтобы решить эту "проблему". Будет девять непустых строк вместо ваших 19-ти.
А вот все эти пляски с вычитанием и прибавлением интервалов НА КАЖДОМ ПРОХОДЕ loop - зачем они в вашем коде?
Например, так:
PS Код не проверялся, накидан в блокноте...
Огромное спасибо, сижу разбираюсь).
Вижу вы опытный человек, могли бы подсказать пожалуйста еще по одному вопросу?
Как сделать так, чтобы если на пин ардуино приходит этот сигнал (0x23,0x76) делает одно действие, если другой сигнал - другое? Заранее ОГРОМНОЕ спасибо!
...Как сделать так, чтобы если на пин ардуино приходит этот сигнал (0x23,0x76) делает одно действие, если другой сигнал - другое? Заранее ОГРОМНОЕ спасибо!
Я понимаю, крткость - сестра таланта...
Т.е. все на одной ардуинке - одна функция передает, другая функция принимает?
Каркас функции с действиями и задачи (накидан в блокноте...):
А можно проще
Опять управление холодильника что ли? ;)
Опять управление холодильника что ли? ;)
так жара на дворе, сейчас холодильщики и кондиционерщики на расхват )))
точно жара.
qbit - "настоящему мужику всегда есть что сказать" ?
А куда при этом подключаться? Я просто не увидел инициализацию пинов)
точно жара.
qbit - "настоящему мужику всегда есть что сказать" ?
тоже пробую. вот так?)
maxxx070 - код, написанный qbit - это очень грубая заготовка, от готового проекта его отделяет примерно столько же, как муку и дрожжи от готового пирожка :)