Автостоп
- Войдите на сайт для отправки комментариев
Пнд, 28/10/2019 - 13:38
Нарисовалась задачка по восстановлению древнего магнитофона.
Есть контакты, которые замыкаются с различной частотой и периодом. И есть светодиод, который тухнет, если импульсы перестают приходить в течении 2 сек. Набросал скетч, взяв как образец рабочий вариант, но работать он отказывается. Светодиод не тухнет.
// Автостоп для ардуино int button = 2; // Датчик автостопа int led = 12; //Выход на светодиод unsigned long currentTime; // Переменная текущего времени unsigned long autostopTime; // Переменная счетчика автостопа void setup() { pinMode(led, OUTPUT); //Включаем пин как цифровой выход digitalWrite(led, HIGH); // Внутренним резистором ардуино задаем высокий уровень сигнала autostopTime = millis(); // Програмный счетчик времени } void loop() { currentTime = millis(); // Определяем текущее время в цикле if (button!=0) { autostopTime = currentTime;} // Если номер канала не нулевой, сбрасываем счетчик автостопа if(currentTime >= (autostopTime + 2000) ){digitalWrite(led, LOW);} // Если предыдущее условие верно, считаем 2 секунды до гащения светодиода }
Подскажите, где я накосячил!
if
(button!=0)
дак button у тебя не 0, а 2
и от так
if
(currentTime >= (autostopTime + 2000)
тока Гайверу писать можно. тебе - нельзя.
Вы в курсе что loop() исполняется тысячи раз в секунду? - и столько же раз в секунду вы в строчке 12 приравниваете currentTime текущему времени.
ваш таймаут никогда не достигнет двух секунд
Дед Симен, точно, строчка 13 совсем бредовая, так ничего работать не будет. Не заметил
"Зона_Кемь" - прочитайте любой справочник, каким оператором читать сигнал с пина
Спасибо, пошел штудировать первоисточники, и не сочтите за наглость, а каким оператором считать сигнал с пина )))
пока вот это не выучишь
http://arduino.ru/Reference
не возвращай себя.
Если магнитофон древний, то и решение должно быть древнее. Ставить целый компьютер для автостопа, где достаточно одновибратора с перезапуском? Мсье знает толк....
Если магнитофон древний, то и решение должно быть древнее. Ставить целый компьютер для автостопа, где достаточно одновибратора с перезапуском? Мсье знает толк....
Магнитофон древний (33 года). Основная плата (автостоп, счетчики, кнопки управления ЛПМ) ремонту не подлежит, вот и пытаюсь вместо нее впихнуть ардуину
Почему не подлежит? Коты на неё нассали, или об коленку сломали? Если не знаете как, то не значит, что это невозможно. Я за аутентичность.
Коты нассали, об коленку сломали - какая разница!? Я обратился сюда с пустяковой проблемой, а услышал только что код ни к черту и вообще, лучше уходи и не возвращайся! Это как если бы Вы пришли к терапевту с кашлем, а он отослал Вас заканчивать медицинский институт.
не прокатит, контакт может быть как в замкнутом так и в разомкнутом положении, значит надо ставить RC цепь и на ней анализировать напряжение
не прокатит, контакт может быть как в замкнутом так и в разомкнутом положении, значит надо ставить RC цепь и на ней анализировать напряжение
То есть ардуино в принципе не может решить эту задачу?
То есть ардуино в принципе не может решить эту задачу?
ты чего болтаешь попусту - как читать данные с пина прочитал? Твой код поправить пару строчек - и все заработает
То есть ардуино в принципе не может решить эту задачу?
ты чего болтаешь попусту - как читать данные с пина прочитал? Твой код поправить пару строчек - и все заработает
Читаю, но пока бестолку ((( Для компьютерщиков может написано понятным языком, но мне он пока не дается.
у неё, эттаа... цветочно конфетный период.
То есть ардуино в принципе не может решить эту задачу?
ты чего болтаешь попусту - как читать данные с пина прочитал? Твой код поправить пару строчек - и все заработает
и что? будет работать на замыкание пина с неизвестной и разной частотой?
и откуда такая уверенность что пин при остановке будет замкнут или наоборот разомкнут?
Видимо устройство этого датчика никогда не видел )))
И чего там решать особо, запитать датчик от 5 вольт, выход на аналоговый пин, и померь напряжение при работе и остановке
Читаю, но пока бестолку ((( Для компьютерщиков может написано понятным языком, но мне он пока не дается.
ну блин, в ссылке что тебе дали - страницы три от силы. Как задать пину нужный уровень - у тебя же правильно в коде. Как считать уровень с кода - аналогичная операция
Или ты этот код целиком где-то списал?
и что? будет работать на замыкание пина с неизвестной и разной частотой?
и откуда такая уверенность что пин при остановке будет замкнут или наоборот разомкнут?
Видимо устройство этого датчика никогда не видел )))
не, не видел - я читаю только то, что пишет ТС. Он написал. что у него код не работает - про его код и отвечаю. А в магнитофонах (как в прочей бытовой технике) я ни черта не понимаю
Я на Союзе 110 автостоп делал, там под подкассетником инфракрасные даччики, а на усах натяжения - обычные микрики стоят, с них автостоп и берется, при перемотке влево - с правого, при рабочем ходе и перемотке вперед - с левого
Код нашел на просторах интернета, но чуточку переработал под себя (управляющие операторы не менял). И как правильно ua6em пишет, неизвестно, будет ли он разомкнут или замкнут при остановке приемного узла
Магнитофон какой?
Ода 303
Нет, не довелось такой пащюпать
Редкий! Второй такой на запчасти не могу найти, вот и приходится изгаляться
Редкий! Второй такой на запчасти не могу найти, вот и приходится изгаляться
автостоп там на светодиод-фотодиод вроде как, точно не помню, сфотографируй подмотку, может вспомню
Вот такой. Да, в датчике там (сверху-справа) свето-фотодиод. Планирую их использовать, или вставить ИК датчик готовый.
Щас Дед может что подскажет (точнее завтра)...
Ох, лишь бы подсказал... Просто не хочется ради такого пустяка углубленно изучать програмирование, хотя чувствую придется...
Ох, лишь бы подсказал... Просто не хочется ради такого пустяка углубленно изучать програмирование, хотя чувствую придется...
Ардуино для этого использовать можно, особенно Нано. При стоимости в два доллара это будет не намного дороже чем паять на дискретных элементах.
А теперь давай абстрагируемся от ардуины и попробуем описать как именно все должно работать.
Вот есть некоторый модуль на вход которого поступают ипульсы с частотой?? Несколько герц? Если импульсов нет в течении 2х секунд на входе должен появится сигнал (+5В). Это понятно. Ну а дальше? Так и должен быть +5 пока опять импульсы не появятся. Я не знаю логику работы лентоп, но сдается мне запустить его снова пока автостоп выдает сигнал может и не получиться. Значит сигнал должен сняться после какого-то периода?
asam, Вы все правильно описали
Частота импульсов до сотен герц, при перемотке больше, при воспроизведении меньше, но они различны и частота меняется. Если импульсов нет, по истечении 2-х секунд должен появится импульс СТОП, который выключает лентопротяжный механизм. Далее при нажатии кнопок Воспр, Перемотка автостоп опять начинает отслеживать импульсы.
asam, Вы все правильно описали
Частота импульсов до сотен герц, при перемотке больше, при воспроизведении меньше, но они различны и частота меняется. Если импульсов нет, по истечении 2-х секунд должен появится импульс СТОП, который выключает лентопротяжный механизм. Далее при нажатии кнопок Воспр, Перемотка автостоп опять начинает отслеживать импульсы.
А как модуль "узнает", что нажата "Воспр, Перемотка" ?
Как вариант, думаю подойти к этой проблеме с другой стороны: счетчик в ардуино считает импульсы с частотой скажем 10 мс, а сигнал с датчика постоянно их обнуляет. Когда датчик перестает обнулять импульсы, при достижении двухсот импульсов так же поступает сигнал СТОП на ЛПМ. Как считаете, эту задачу так решить не проще?
asam, Вы все правильно описали
Частота импульсов до сотен герц, при перемотке больше, при воспроизведении меньше, но они различны и частота меняется. Если импульсов нет, по истечении 2-х секунд должен появится импульс СТОП, который выключает лентопротяжный механизм. Далее при нажатии кнопок Воспр, Перемотка автостоп опять начинает отслеживать импульсы.
А как модуль "узнает", что нажата "Воспр, Перемотка" ?
О, значит нужно добавить еще управляющий сигнал, который разрешает работу автостопа...
Что то все сложнее и сложнее....
Прежде чем думать как решать задачу, надо тщательно ее сформулировать. Еще раз представте что у вас есть просто некий модуль со входами и выходами. И подробно опишите как состояния выходов должны меняться в зависимости от того что у него на входе. Начиная с момента подачи питания
Вот так я планировал сделать, для кнопок скетч накидал а теперь бьюсь над автостопом...
1 ардуино Нано, 5 кнопок, 4 реле, один ИК датчик.
1-я кнопка включает 1-е реле (Воспроизведение)
2-я кнопка включает 2-е реле (Перемотка вперед)
3-я кнопка включает 3-е реле (Перемотка назад)
4-я кнопка включает 4-е реле (Запись
5-я кнопка отключает любое включенное реле (кнопка СТОП)
При срабатывании любого реле С ИК датчика поступают импульсы переменной длительности. При отсутствии импульсов более 2 – 5 сек. - Любое включенное реле отключается
Кнопки, как я понял, без фиксации? Тогда желательно иметь светодиоды для индикации, что кнопка "нажата"
И еще не совсем понятно как реле будут управлять лентопротяжкой. С ее точки зрения Воспроизведение и Запись это одно и тоже.
Вот так я планировал сделать, для кнопок скетч накидал а теперь бьюсь над автостопом...
1 ардуино Нано, 5 кнопок, 4 реле, один ИК датчик.
1-я кнопка включает 1-е реле (Воспроизведение)
2-я кнопка включает 2-е реле (Перемотка вперед)
3-я кнопка включает 3-е реле (Перемотка назад)
4-я кнопка включает 4-е реле (Запись
5-я кнопка отключает любое включенное реле (кнопка СТОП)
При срабатывании любого реле С ИК датчика поступают импульсы переменной длительности. При отсутствии импульсов более 2 – 5 сек. - Любое включенное реле отключается
если всеми режимами управляет ардуина - то это проще, никакого сигнала на разрешение автостопа не нужно. Точнее - не нужно внешнего сигнала, все в программе внутри учитывается. По любой из кнопок 1-4 вместе с ЛПМ включаем автостоп. Как только автостоп сработал - выключаем и ЛПМ и сам автостоп до следующего запуска режимов 1-4.
ИМХО, на Ардуине это все собрать в разы проще, чем на дискретной логике... по крайней мере для такого как я , который только программировать умеет и никакого железа в руказ никогда не держал... :)
Кнопки, как я понял, без фиксации? Тогда желательно иметь светодиоды для индикации, что кнопка "нажата"
И еще не совсем понятно как реле будут управлять лентопротяжкой. С ее точки зрения Воспроизведение и Запись это одно и тоже.
Кнопки тактовые. Реле управляет электромагнитами, там на каждый режим свой электромагнит (очень удобно). Светодиоды индикации уже поставил
C таким датчиком, да наной... сам бог велел счетчик ленты делать. Да и все режимы на оледе отображать.
Вот так я планировал сделать, для кнопок скетч накидал а теперь бьюсь над автостопом...
При срабатывании любого реле С ИК датчика поступают импульсы переменной длительности. При отсутствии импульсов более 2 – 5 сек. - Любое включенное реле отключается
если всеми режимами управляет ардуина - то это проще, никакого сигнала на разрешение автостопа не нужно. Точнее - не нужно внешнего сигнала, все в программе внутри учитывается. По любой из кнопок 1-4 вместе с ЛПМ включаем автостоп. Как только автостоп сработал - выключаем и ЛПМ и сам автостоп до следующего запуска режимов 1-4.
ИМХО, на Ардуине это все собрать в разы проще, чем на дискретной логике... по крайней мере для такого как я , который только программировать умеет и никакого железа в руказ никогда не держал... :)
Да, с ардуиной проще, именно поэтому я и планировал ее использовать, но знаний в програмировании явно нехватает, именно поэтому и обратился на этот форум!
C таким датчиком, да наной... сам бог велел счетчик ленты делать. Да и все режимы на оледе отображать.
Это в будущих планах :-)), если дойду...
Да, с ардуиной проще, именно поэтому я и планировал ее использовать, но знаний в програмировании явно нехватает, именно поэтому и обратился на этот форум!
совет - вернись к своему изначальному коду из первого сообщения и все-таки разберись с ним. Несмотря на прозвучавшие тут призывы делать какой-то RC фильтр и прочее - код вполне подойдет для задачи. То. что пин может быть и разомкнут и замкнут - решается легко.
Автостоп можно через Ватчдог сделать. Тогда программировать почти не придется (но придется повозиться с WD):
После нажатия Перемотка, Воспроизведение или Запись разрешаем WD, а по сигналу от датчика сбрасываем его счетчик. Тогда если крутиться перестанет, ардуино просто ресетится. И все реле отключаются. Ну это надо, естественно в setup прописать.
При нажатии на Стоп WD запрещается
Автостоп можно через Ватчдог сделать. ....
неплохая идейка, но явно не для ТС...
С кодом пытаюсь разобраться, пока безуспешно. Ватчдог не вариант, тут с ардуино разобраться не могу!
С кодом пытаюсь разобраться, пока безуспешно. Ватчдог не вариант, тут с ардуино разобраться не могу!
блин, ну что там разбираться то? Английский знаешь? Процедура записи логического уровня на пин называется как? - digitalWrite()
А как тогда называется функция чтения пина, догадайся с трех раз...
С кодом пытаюсь разобраться, пока безуспешно. Ватчдог не вариант, тут с ардуино разобраться не могу!
Ватчдог стоит внутре ардуины. Можно почитать, например, здесь - https://habr.com/ru/post/189744/
DigitalRead?
DigitalRead?
а теперь поищи в том описании, ссылку на которе тебе дал Дед.
И вообще, там надо прочесть все - там всего-то чуть-чуть
Ода 303
Вот здесь есть схема Ода 102 - может поможет
услышал только что код ни к черту
Ну, а что Вы ожидали услышать, если он действительно ни к чёрту?
Это как если бы Вы пришли к терапевту с кашлем, а он отослал Вас заканчивать медицинский институт.
Не путайте, Вы пришли не как больной, а как другой терапевт к своему коллеге. Если бы Вы как больной пришли, разговор был бы другим. А так - нормальная реакция.