Оглавление:
- Шаг 1: необходимое оборудование
- Шаг 2: Объяснение метода нескольких переключателей
- Шаг 3: Таблица сравнения
- Шаг 4. Сыграйте мелодию
Видео: Селектор настройки DIP с использованием 1 контакта: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Некоторое время назад я работал над проектом «музыкальная шкатулка», в котором нужно было выбирать между 10 различными фрагментами мелодий. Естественным выбором для выбора конкретной мелодии был 4-контактный микропереключатель, поскольку 4 переключателя обеспечивают 24= 16 различных настроек. Однако для реализации этого подхода требуется 4 контакта устройства, по одному для каждого переключателя. Поскольку я планировал использовать ATtiny85 для разработки, потеря 4 контактов была слишком большой. К счастью, я наткнулся на статью, в которой описывается гениальный метод использования 1 аналогового вывода для управления несколькими входами переключателя.
В методе с несколькими переключателями; 1 вход используется схема делителя напряжения, чтобы обеспечить уникальное целочисленное значение для каждой из 16 возможных комбинаций настроек переключателя. Этот набор из 16 целочисленных идентификаторов затем используется в прикладной программе для связывания действия с настройкой.
Эта инструкция использует метод множественного переключения для реализации выбора мелодии для приложения музыкальной шкатулки. Выбранная мелодия затем воспроизводится через пьезозуммер с использованием функции тона Arduino.
Шаг 1: необходимое оборудование
Использование UNO в качестве платформы для реализации сводит к минимуму количество необходимых аппаратных компонентов. Для реализации метода ввода с несколькими переключателями требуется только 4-контактный двухпозиционный переключатель, 5 резисторов, используемых для делителя напряжения, и соединительный провод для соединений. В конфигурацию добавлен пьезозуммер для реализации селектора мелодий музыкальной шкатулки. При желании, в зависимости от типа используемого микропереключателя, полезно использовать 8-контактное гнездо 2x4 для подключения микропереключателя к макетной плате, поскольку стандартные контакты микропереключателя, похоже, предназначены для пайки на монтажной плате, а не для подключения непосредственно к макетной плате. Гнездо стабилизирует соединения микропереключателя и препятствует легкому поднятию переключателя при установке тумблеров.
Имя | Возможный источник | Как использовали |
---|---|---|
4-контактный двухпозиционный переключатель | Выбор мелодии | |
Гнездо 2x4 контакта (опционально) | Амазонка | Штыри на большинстве микропереключателей не очень хорошо удерживают переключатель на макетной плате. Розетка помогает сделать соединение более надежным. Альтернативой является поиск микропереключателя, который действительно предназначен для использования на макетной плате с обычными выводами микросхемы. |
резисторы:
|
Делитель напряжения агрегата | |
пассивный пьезозуммер | Амазонка | Воспроизведение мелодии, управляемой приложением, с помощью функции тона Arduino |
Шаг 2: Объяснение метода нескольких переключателей
В этом разделе обсуждаются основные концепции метода с несколькими переключателями и разрабатываются уравнения, необходимые для автономного расчета уникальных идентификаторов для каждой из 16 возможных конфигураций настроек двухпозиционного переключателя. Эти идентификаторы затем можно использовать в прикладной программе для связывания конфигурации коммутатора с действием. Например, вам может потребоваться настройка - включить 1, выключить 2, выключить 3, выключить 4 (1, 0, 0, 0) - для воспроизведения Amazing Grace и (0, 1, 0, 0) для воспроизведения. Лев спит сегодня вечером. Для краткости и краткости идентификаторы конфигурации в остальной части документа называются компараторами.
Фундаментальной концепцией метода с несколькими переключателями является схема делителя напряжения, которая состоит из 2 последовательно соединенных резисторов, подключенных к входному напряжению. Вывод выходного напряжения подключен между резисторами R1 и R2, как показано выше. Выходное напряжение делителя рассчитывается как входное напряжение, умноженное на отношение резистора R2 к сумме R1 и R2 (уравнение 1). Это соотношение всегда меньше 1, поэтому выходное напряжение всегда меньше входного.
Как показано на схеме выше, мульти-переключатель сконфигурирован как делитель напряжения с R2 фиксированный и R1 равно составному / эквивалентному сопротивлению для 4 резисторов DIP-переключателя. Значение R1 зависит от того, какие микропереключатели включены и, следовательно, вносят вклад в составное сопротивление. Поскольку резисторы двухпозиционного переключателя включены параллельно, уравнение для расчета эквивалентного сопротивления выражается в терминах обратных величин компонентных резисторов. Для нашей конфигурации и случая, когда все переключатели включены, уравнение принимает вид
1 / R1 = 1/80000 + 1/40000 + 1/20000 + 1/10000
давая R1 = 5333,33 вольт. Чтобы учесть тот факт, что в большинстве настроек хотя бы один из переключателей выключен, состояние переключателя используется как множитель:
1 / R1 = s1* 1/80000 + с2* 1/40000 + с3* 1/20000 + с4*1/10000 (2)
где множитель состояния, sя, равно 1, если переключатель включен, и равен 0, если переключатель выключен. р1 теперь можно использовать для расчета коэффициента сопротивления, необходимого в уравнении 1. Используя случай, когда все переключатели включены в качестве примера, снова
СООТНОШЕНИЕ = R2/(Р1+ R2) = 10000/(5333.33+10000) =.6522
Последним шагом в вычислении предсказанного значения компаратора является умножение RATIO на 1023, чтобы имитировать эффект функции analogRead. Идентификатор для случая, когда все переключатели включены, тогда
компаратор15 = 1023*.6522 = 667
Теперь есть все уравнения для расчета идентификаторов для 16 возможных настроек переключателя. Обобщить:
- р1 рассчитывается по формуле 2
- р1 и R2 используются для расчета соответствующего СООТНОШЕНИЯ СОПРОТИВЛЕНИЯ
- ОТНОШЕНИЕ умножается на 1023, чтобы получить значение компаратора.
- опционально, прогнозируемое выходное напряжение также может быть рассчитано как RATIO * Vin
Набор компараторов зависит только от номиналов резисторов, используемых для делителя напряжения, и является уникальной сигнатурой конфигурации. Поскольку выходные напряжения делителя будут колебаться от цикла к запуску (и от чтения к чтению), уникальность в этом контексте означает, что, хотя два набора идентификаторов могут не быть в точности одинаковыми, они достаточно близки, чтобы различия компонентов компаратора находились в пределах небольшого предварительного указанный интервал. Параметр размера интервала должен быть выбран достаточно большим, чтобы учесть ожидаемые колебания, но достаточно маленьким, чтобы различные настройки переключателя не перекрывались. Обычно 7 подходит для полуширины интервала.
Набор компараторов для конкретной конфигурации можно получить несколькими способами: запустить демонстрационную программу и записать значения для каждой настройки; используйте таблицу в следующем разделе для расчета; скопировать существующий набор. Как отмечалось выше, все наборы, скорее всего, будут немного отличаться, но должны работать. Я предлагаю использовать набор идентификаторов автора метода для настройки с несколькими переключателями и электронную таблицу из следующего раздела, если какой-либо из резисторов был значительно изменен или добавлено больше резисторов.
Следующая демонстрационная программа демонстрирует использование компараторов для определения текущей настройки двухпозиционного переключателя. В каждом программном цикле выполняется analogRead для получения идентификатора текущей конфигурации. Затем этот идентификатор сравнивается в списке компараторов до тех пор, пока не будет найдено совпадение или список не будет исчерпан. Если совпадение найдено, для проверки выдается выходное сообщение; если не найден, выдается предупреждение. В цикл вставляется 3-секундная задержка, чтобы окно последовательного вывода не было переполнено сообщениями и чтобы дать некоторое время для сброса конфигурации двухпозиционного переключателя.
//-------------------------------------------------------------------------------------
// Демонстрационная программа для чтения выходного сигнала делителя напряжения и использования его для определения // текущей конфигурации двухпозиционного переключателя путем поиска выходного значения в массиве // значений сравнения для каждой возможной настройки. Значения в поисковом массиве могут быть // либо получены из предыдущего запуска конфигурации, либо путем вычислений // на основе лежащих в основе уравнений. // ------------------------------------------------ -------------------------------------- int comparator [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // Определение переменных обработки int dipPin = A0; // аналоговый вывод делителя напряжения input int dipIn = 0; // удерживает выходное напряжение делителя, переведенное с помощью analogRead int count = 0; // счетчик циклов int epsilon = 7; // полуширина интервала сравнения bool dipFound = false; // истина, если текущий вывод делителя напряжения найден в таблице поиска void setup () {pinMode (dipPin, INPUT); // настраиваем вывод делителя напряжения как INPUT Serial.begin (9600); // включение последовательной связи} void loop () {delay (3000); // предотвращаем слишком быструю прокрутку вывода // Инициализируем параметры поиска count = 0; dipFound = false; // Считываем и документируем текущее выходное напряжение dipIn = analogRead (dipPin); Serial.print («вывод делителя»); Serial.print (dipIn); // Поиск текущего значения в списке компараторов while ((count <16) && (! DipFound)) {if (abs (dipIn - compare [count]) <= epsilon) {// нашел его dipFound = true; Serial.print («найдено при входе»); Serial.print (количество); Serial.println ("значение" + строка (компаратор [количество])); перерыв; } count ++; } if (! dipFound) {// значение не в таблице; не должно происходить Serial.println («Ой! Не найдено; лучше вызвать Охотников за привидениями»); }}
Шаг 3: Таблица сравнения
Расчеты для 16 значений компаратора приведены в таблице, показанной выше. Сопровождающий файл Excel доступен для загрузки внизу этого раздела.
В столбцах таблицы A – D записываются значения резисторов двухпозиционного переключателя и 16 возможных настроек переключателя. Обратите внимание, что аппаратный DIP-переключатель, показанный на схеме конструкции фритзинга, на самом деле пронумерован слева направо, а не справа налево, как показано в таблице. Я нашел это несколько сбивающим с толку, но альтернативный вариант не помещает конфигурацию «1» (0, 0, 0, 1) в начало списка. В столбце E используется формула 2 из предыдущего раздела для расчета эквивалентного сопротивления R делителя напряжения.1 для настройки. Столбец F использует этот результат для вычисления соответствующего СООТНОШЕНИЯ сопротивления, и, наконец, столбец G умножает СООТНОШЕНИЕ на максимальное значение analogRead (1023), чтобы получить прогнозируемое значение компаратора. Последние 2 столбца содержат фактические значения из прогона демонстрационной программы, а также различия между прогнозируемыми и фактическими значениями.
В предыдущем разделе упоминались три метода для получения набора значений компаратора, включая расширение этой электронной таблицы, если значения резисторов значительно изменяются или добавляются дополнительные переключатели. Похоже, что небольшие различия в значениях резисторов не оказывают существенного влияния на конечные результаты (что хорошо, поскольку характеристики резистора дают допуск, скажем, 5%, а резистор редко бывает равен его фактическому заявленному значению).
Шаг 4. Сыграйте мелодию
Чтобы проиллюстрировать, как метод множественного переключения может использоваться в приложении, демонстрационная программа сравнения из раздела «Объяснение метода» модифицирована для реализации обработки выбора мелодии для программы музыкальной шкатулки. Обновленная конфигурация приложения показана выше. Единственное дополнение к оборудованию - это пассивный пьезозуммер для воспроизведения выбранной мелодии. Основное изменение в программном обеспечении - добавление подпрограммы воспроизведения мелодии, однажды идентифицированной, с использованием зуммера и звуковой подпрограммы Arduino.
Доступные фрагменты мелодий содержатся в файле заголовка Tunes.h вместе с определением необходимых структур поддержки. Каждая мелодия определяется как массив структур, связанных с нотами, содержащий частоту и продолжительность ноты. Частоты нот содержатся в отдельном заголовочном файле Pitches.h. Программа и заголовочные файлы доступны для скачивания в конце этого раздела. Все три файла должны быть помещены в один каталог.
Выбор и идентификация происходит следующим образом:
- «Пользователь» устанавливает DIP-переключатели в конфигурацию, связанную с желаемой настройкой.
- в каждом цикле программного цикла идентификатор для текущей настройки двухпозиционного переключателя получается через analogRead
- Идентификатор конфигурации шага 2 сравнивается с каждым из компараторов в доступном списке настроек.
-
Если совпадение найдено, вызывается процедура playTune с информацией, необходимой для доступа к списку нот мелодии.
Используя функцию тона Arduino, каждая нота воспроизводится через зуммер
- Если совпадений не найдено, никаких действий не предпринимается.
- повторить 1-5
Настройки DIP-переключателя для доступных мелодий показаны в таблице ниже, где 1 означает, что переключатель включен, 0 - выключен. Напомним, что при ориентации DIP-переключателя переключатель 1 находится в крайнем левом положении (то, которое связано с резистором 80 кОм).
ИМЯ | Переключатель 1 | Переключатель 2 | Переключатель 3 | Переключатель 4 |
Дэнни Бой | 1 | 0 | 0 | 0 |
Медвежонок | 0 | 1 | 0 | 0 |
Лев спит сегодня вечером | 1 | 1 | 0 | 0 |
Никто не знает проблемы | 0 | 0 | 1 | 0 |
Великая благодать | 0 | 0 | 0 | 1 |
Пустое пространство | 1 | 0 | 0 | 1 |
Пересмешник Птичий холм | 1 | 0 | 1 | 1 |
Качество звука пьезозуммера, конечно, невысокое, но, по крайней мере, узнаваемо. Фактически, если измерить тоны, они очень близки к точной частоте нот. Одним из интересных приемов, используемых в программе, является сохранение данных настройки в разделе флэш-памяти / памяти программ вместо раздела памяти данных по умолчанию с помощью директивы PROGMEM. Раздел данных содержит переменные обработки программы и намного меньше, около 512 байт для некоторых микроконтроллеров ATtiny.
Рекомендуемые:
Настройки Bluetooth AT-команд (HC05 HC06): 4 шага
Настройки Bluetooth AT-команд (HC05 HC06): Привет, ребята! Надеюсь, вам уже понравился мой предыдущий учебник "Как управлять сервомотором Arduino". Это еще одно информативное руководство, которое научит вас взаимодействовать с модулем Bluetooth и настраивать его параметры с помощью A
BME280, Детектор контакта с человеком: 5 шагов
BME280, Детектор контакта с человеком: Здравствуйте и добро пожаловать в проект Детектор контакта с человеком, использующий датчик BME280 от Sparkfun. В этом проекте будет использоваться датчик температуры BME280 для обнаружения контакта с человеком по изменению температуры
3 контакта ATtiny85 Управление - Nrf24L01 - التحكم بثلاثة دبابيس فى: 7 шагов
3 контакта ATtiny85 Управление - Nrf24L01 - التحكم بثلاثة دبابيس فى: بسم الله الرحمن الرحيم
Индикатор уровня воды без контакта и коррозии, а также управление двигателем: 5 шагов
Меньше контактов и индикатор уровня воды без коррозии и управление двигателем: ПРИВЕТ, В этой инструкции мы увидим, как получить состояние резервуара для воды на основе уровней воды (высокий, средний, низкий) в верхнем резервуаре с помощью трех светодиодов разного цвета в Бесконтактный способ с помощью ультразвукового датчика и платы Arduino uno.P
Селектор звука Mint Box: 3,5 мм Аудиопереключатель: 6 шагов
Селектор звука Mint Box: аудиопереключатель 3,5 мм: Проблема: часто на рабочем столе мне нужно использовать наушники для игр или прослушивания музыки, когда другие люди находятся в комнате, а затем мне нужно переключиться на динамики, если я хочу похвастаться забавным видео или позвоните дальнему родственнику через Интернет. Ч