Кодирование мешалки с различными скоростями
Я отвечаю за создание кода для своего класса с помощью Arduino на плате Arduino UNO. Всего имеется 7 переключателей: один действует как пуск/остановка, что позволяет ему работать при выборе других настроек. Есть 3 переключателя для скоростей: медленная, средняя и быстрая. Есть еще 3 переключателя для размеров интервалов (пространство между ними снова вращается): короткий, средний и длинный. Пользователь должен выбрать один вариант из каждого набора из 3 переключателей, чтобы он работал (всего 9 комбинаций). Каким-то образом я должен также ввести в него широтно-импульсный модулятор, чтобы контролировать скорость двигателя. Может ли кто-нибудь указать мне правильное направление с помощью псевдокода или чего-то в этом роде? Также я понятия не имею, что делать с ШИМ. Большое вам спасибо, любая помощь была бы очень признательна.
@Reese, 👍0
Обсуждение2 ответа
Приведенные выше комментарии точны. Мне кажется, что вы новичок в Arduino, поэтому самое первое, что нужно сделать, это перейти на справочную страницу Arduino https://www.arduino.cc/reference/en/. Это показывает вам основные инструменты, с которыми вам нужно будет работать. Это не очевидно с этой страницы, но analogWrite () - это то, что вы используете для ШИМ, как объясняется, если вы нажмете на эту тему. Обратите внимание, что он работает только на определенных контактах. Сначала не беспокойтесь об управлении двигателем, просто контролируйте яркость светодиода, пока все не будет отлажено.
Вы упоминаете 3 разных интервала. Должны ли каждый из них давать одинаковое время включения и выключения и просто повторять это до тех пор, пока вы не выключите мешалку? Или у вас будет отдельное фиксированное время выполнения, и кнопки будут выбирать одно из 3 разных периодов выключения за цикл? Или есть только один цикл, и кнопки просто выбирают, как долго он будет продолжаться, прежде чем автоматически отключится? Ответ определит, как вы настроите время. Предполагая, что UNO не нужно ничего делать, кроме управления мешалкой, вы, вероятно, можете выполнить все синхронизации с помощью функции delay ().
Вы можете начать со знаменитого кода "мигания". Как только вы заработаете, измените его, чтобы использовать один из выводов, поддерживающих ШИМ (не встроенный светодиод на выводе 13). Код имеет отдельные значения задержки() для времени включения и выключения, которые вы можете установить для одного из ваших 3 интервалов. Затем измените команды digitalWrite() на analogWrite(), конечно, с соответствующими параметрами. Теперь у вас есть базовая система, и вы можете работать над логикой переключения.
Поскольку вы главный, возьмите на себя управление и проведите собрание, но сначала подготовьтесь. В этот момент вы попросите, и если вы не получите добровольцев для назначения проектов, в меру своих возможностей убедитесь, что они смешанные таланты. Отметьте, у кого какой проект, и время от времени проводите собрания, на которых каждая группа представляет письменный отчет о прогрессе в достижении цели и, если есть проблемы, другие люди могут высказать свои идеи. Может быть группа, которая будет решать часть проблемы, связанную с переключением, другая группа, которая будет заниматься ШИМ и т. д. В этих группах (командах) они должны быть разделены на аппаратные и программные группы. Вам также понадобится группа стандартов (они решают, как именно это работает), и они работают со всеми командами, чтобы решить эту проблему. Группа стандартов должна начать объединять работу каждой команды и проверять правильность работы различных частей. Во время этого процесса каждая группа должна задокументировать, что они делают и как это работает, чтобы по завершении большая часть документации была готова для окончательной доработки и демонстрации проекта. Это SWAG, так как я понятия не имею о размере группы, ресурсах, талантах и т. д. Это должно помочь вам начать работу, и, конечно же, частью вашего расписания будет график, которому все будут следовать после того, как они согласуют его в начале.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Вы пробовали гуглить? Вы можете найти много хороших руководств о том, как управлять двигателем и как читать кнопки, @chrisl
Мой совет-разбить эту, казалось бы, сложную проблему на набор более мелких задач, которые вы можете решить. Узнайте, как подключить и прочитать коммутатор, а затем несколько коммутаторов. Затем узнайте, как включить ШИМ-выход и управлять им. Наконец-то начните соединять эти две вещи вместе., @jwh20
начните с написания кода, который управляет встроенным светодиодом ... когда это сработает должным образом, добавьте код для управления двигателем, @jsotola