Управление дверью с помощью Arduino и концевиками

Я хочу сделать дверь с двумя концевыми выключателями и тремя кнопками: одна для остановки, а две другие для открытия и закрытия. Столкнулся с проблемой в коде кнопок запуска и концевиков. Я не могу написать код, потому что я новичок. Пожалуйста, может кто-нибудь помочь мне с каким-нибудь кодом или чем-то в этом роде?

Буду признателен, если вы мне поможете, потому что это для моего школьного проекта :)

, 👍1

Обсуждение

Попробуйте сначала сами что-нибудь попроще: одна кнопка, попробуйте прочитать; чем переключатель и попытаться прочитать его; оттуда вы предъявляете требования к тому, что вам нужно. А если вы столкнетесь с более конкретной проблемой, вы можете задать ее здесь еще раз; Я полагаю, вам также нужен мотор, чтобы открывать/закрывать дверь?, @Michel Keijzers

Пожалуйста, предоставьте код, который вы сделали, который не работает., @iudeen

Как фраза «Помогите мне с кодом…» поможет вам чему-то научиться? Существует множество руководств и примеров эскизов, которые помогут опробовать и понять, как можно использовать Arduino. В реальном мире бесплатных обедов не бывает :), @Mikael Patel


1 ответ


2

Вам нужно будет написать код

  1. Управляйте двигателем. Вероятно, двигатель постоянного тока с двусторонним управлением. Это можно сделать с помощью четырех МОП-транзисторов и нескольких диодов или, что гораздо лучше, с помощью одной микросхемы H-моста. В вашем коде необходимо будет определить, какая из двух линий, идущих к двигателю постоянного тока, подключается к положительной шине, а какая к отрицательной/заземляющей, или обе отключены, с помощью трех описанных вами кнопок.
  2. Вам потребуется написать код, контролирующий концевые выключатели. Я бы посоветовал вам использовать для этого прерывания. Один контакт подключается к земле, другой — к контакту прерывания Arduino. Вы можете использовать функцию AttachInterrupt() для написания функций, которые выполняются сразу. Обязательно прочитайте, какие контакты вашего Arduino будут поддерживать прерывания.
  3. Вам нужно будет остановить движение двигателя либо напрямую, либо переключая переключатель с помощью прерывания (или любого другого метода обнаружения, который вы используете для концевого выключателя).

*одним из особых соображений является то, что любые переменные, которые вы используете внутри функций прерывания, должны быть помечены как изменчивые, поэтому int myVar; становится Летучим int myVar; *также не используйте Serial.print или millis() внутри функций прерывания, если этого можно избежать.


Отсюда Google «Переключатель Arduino» и работайте над реализацией концевых выключателей отдельно. Если хотите, погуглите «Прерывания Arduino» и улучшите свою реализацию для использования прерываний. Далее погуглите «Двунаправленное управление двигателем постоянного тока Arduino». Работайте над этим самостоятельно. Как только оба будут работать отдельно, объедините их в один проект.

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

,