Оглавление:
- Шаг 1. Что вам понадобится
- Шаг 2. Что такое 5-проводная резистивная сенсорная панель?
- Шаг 3: Подключение
- Шаг 4: Разработка программного обеспечения
- Шаг 5: Мигание конечного автомата
- Шаг 6: кнопка мигает
- Шаг 7: Последовательная связь
- Шаг 8: чтение координат
- Шаг 9: Очистка
- Шаг 10: Заключительные мысли
Видео: 5-проводный резистивный датчик касания: 10 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Привет привет!
Прошло много времени с тех пор, как я работал над этим сайтом, и, похоже, многое изменилось! Я, наконец, готов снова сесть за руль другого проекта, и я думаю, что пора самому кое-что изменить!
Некоторое время я имел в виду проект, основанный на Plate and Ball 271828, но мне нужно многое узнать о датчиках и теории управления, прежде чем он будет завершен. Я подумал, что раз уж я кое-что узнаю, я могу взять вас с собой, ребята!
С этой целью моя цель для этих руководств будет своего рода гибридом между моими более отточенными учебниками и рекордом для самого проекта. Каждое отдельное руководство будет одним шагом в этом путешествии и будет включать в себя детали, которые я замалчивал в прошлом, такие как разработка кода (вместо просто завершенного кода) и ошибки, которые я делаю на этом пути.
Я очень взволнован этим новым проектом и очень рад видеть, насколько хорошо он работает!
Сегодня мы собираемся получить простую 5-проводную сенсорную панель, работающую с DP-32.
Давайте начнем!
Шаг 1. Что вам понадобится
Поскольку в этом руководстве рассказывается о том, как заставить работать один датчик, вам не потребуется ничего, кроме микроконтроллера и сенсорной панели.
-
Микроконтроллер.
Я использую свой DP32 со встроенным макетом, потому что он делает создание прототипов невероятно простым
-
Ассорти из проводов и кабелей.
Я мог бы использовать встроенный ленточный кабель сенсорной панели, но если он порвется, вся панель будет бесполезна. Вместо этого я использую 6-жильный кабель, чтобы уменьшить нагрузку на встроенный кабель
-
Титульная 5-проводная резистивная сенсорная панель!
У меня была 4-проводная резистивная сенсорная панель, но ленточный кабель для нее оборвался
Вот и все!
Шаг 2. Что такое 5-проводная резистивная сенсорная панель?
Если вы прочитали мое руководство по 4-проводной сенсорной панели, вы будете знакомы с общей идеей резистивного сенсорного датчика, но 5-проводные и 4-проводные панели работают немного по-другому.
Мне нравится эта панель, потому что вы можете видеть все следы проводов, что позволяет легко увидеть, что и что делает. На первом рисунке я раскрасил каждую дорожку по-разному. Вероятно, вы видите, что четыре провода (розовый, желтый, оранжевый и фиолетовый) каждый идут к одному из четырех углов. Средний провод (красный) идет к гибкой сенсорной панели.
На втором рисунке мы установили два из четырех проводов (верхний правый и нижний правый) на высокое напряжение (показано красным), а два других (верхний левый и нижний левый) - на низкое. напряжение (показано синим). Это создает градиент напряжений по всей панели. В этом случае градиент идет по оси X, поэтому более высокое напряжение соответствует более высокому положению по оси X.
Когда мы прикасаемся пальцем к панели, это нажимает на гибкий датчик, соединяющийся где-то вдоль градиента оси X. Датчики напряжения на нашем микроконтроллере могут определять это напряжение и сообщать вам, где на оси X касается вашего пальца!
На третьем изображении вы можете увидеть, как изменяется конфигурация, чтобы мы могли чувствовать по оси Y. Таким образом, мы можем сказать, где в двумерном пространстве касается наш палец!
Шаг 3: Подключение
Как вы, вероятно, можете видеть на изображениях выше, я подключил свои четыре угла каждый к своему собственному цифровому выходному выводу. Это позволит мне установить их индивидуально на высокий или низкий. Мой сенсорный контакт подключается к аналоговому входному контакту. Хорошая особенность 5-проводного сенсорного экрана, в отличие от 4-проводного, заключается в том, что вам нужен только один аналоговый вывод, тогда как для 4-проводного потребуется 2.
Ваша схема подключения, конечно, может отличаться, но моя схема подключения следующая:
Аналоговый 0 (контакт 6) подключается к датчику (средний контакт)
Digital 3 подключается к верхнему правому краю (самый верхний контакт)
Цифровой 2 подключается к верхнему левому углу (второй самый верхний контакт)
Цифровой 1 подключается к нижнему левому краю (второй нижний контакт)
Цифровой 0 подключается к нижнему правому краю (самый нижний контакт)
Стоит еще раз отметить, что я использую 6-жильный кабель для соединения микроконтроллера и панели. Я оставил верхний контакт этого кабеля неподключенным.
Шаг 4: Разработка программного обеспечения
Раньше я обычно бросал вам готовый файл программного обеспечения, возможно, с кратким описанием того, что все делает. Мне это не нравится. Я хочу, чтобы эта серия была посвящена разрабатываемым проектам, и с этой целью я собираюсь включить фактическую разработку этого программного обеспечения от начала до конца.
Как обычно, я буду использовать IDE Arduino с ядром Digilent. Каждый раздел будет включать файл кода, снимок экрана, а также описание дополнений и того, чего мы пытаемся достичь.
Прямо сейчас я начинаю с простой программы мигания в стиле задержки, точно такой же, как та, что вы найдете в папке «Примеры». Если вы прочитаете этот длинный заголовок, который я написал, вы увидите, что каждый шаг в этом процессе будет изменять программу, чтобы приблизить ее к нашей конечной цели.
Шаг 5: Мигание конечного автомата
Мой первый шаг - изменить функцию мигания с функции, основанной на «delay ()», на конечный автомат.
Для тех, кто не привык к операторам переключения, он работает аналогично оператору if. Этот (в оранжевом поле) проверяет нашу переменную «состояния» (которая начинается с 0). Затем он переходит к нашему текущему состоянию. Вы увидите, что варианты 0 и 2 отвечают за включение и выключение светодиода (соответственно), а варианты 1 и 3 отвечают за ожидание между переключателями.
Шаг 6: кнопка мигает
Затем я хотел, чтобы кнопка использовалась для мигания светом. Вместо того, чтобы чрезмерно усложнять это, я просто переместил все состояния на одно вниз (состояние 0 становится состоянием 1 и т. Д.). При этом будьте осторожны, чтобы увеличивать состояния выхода, а также само состояние (см. Рисунок 3).
Я также удалил второе состояние ожидания. Это означает, что кнопка включает свет на одну секунду, и вы можете снова нажать кнопку сразу после того, как она погаснет.
Стоит отметить, что эта система автоматически отключает кнопку для нас, потому что мы должны дождаться выключения светодиода, прежде чем вернуться в состояние 0, где кнопка может снова запустить цикл.
Шаг 7: Последовательная связь
Это обновление очень маленькое. Все, что я хотел сделать, это установить последовательное соединение и отправлять сообщения. На первом изображении вы можете видеть, что я начинаю Serial в функции setup (). Внутри нашего конечного автомата я добавил строки к состояниям 1 и 3, которые будут отправлять простые сообщения на компьютер через последовательный порт.
Шаг 8: чтение координат
Хорошо, что последний шаг был легким, потому что этот был дурацким.
Для начала я добавил переменные для нашей сенсорной панели, включая некоторые специальные временные переменные как для сенсорной панели, так и для нашей кнопки. Вы скоро поймете, почему.
Я полностью переписал конечный автомат. Взгляд на код немного сбивает с толку, поэтому я включил блок-схему, которая должна проиллюстрировать, что было сделано.
На заметку: теперь есть три шага «ожидания». Один для каждой конфигурации сенсорной панели, чтобы напряжение стабилизировалось перед измерением, и один, чтобы дать кнопке время правильно отскочить. Эти этапы ожидания - вот почему я хотел дать кнопке и сенсорной панели собственные временные переменные.
Примечание. Константа DEBOUNCE_TIME может быть немного заниженной. Не стесняйтесь увеличивать его.
Шаг 9: Очистка
Мы подошли к окончательной версии кода для этого проекта!
Для начала я добавил функцию loop_diff () для вычисления прошедшего времени. Внутренние часы DP32 имеют длину без знака, и, хотя это крайне маловероятно, существует вероятность того, что часы могут зацикливаться когда-нибудь во время выполнения этого кода *. В этом случае простое вычитание текущего времени из времени, сохраненного в btn_time или panel_time, даст нам нечто странное, поэтому я написал loop_diff (), чтобы определять, когда возникают циклы, и вести себя соответствующим образом.
Я также сделал небольшую уборку. Я удалил теперь неиспользуемую переменную state_time. Я переключился с тега LED_BUILTIN (который является стандартом Arduino) на тег PIN_LED1 (который является стандартным для chipKit и DP32). Я также удалил все сообщения через Serial о запуске и завершении процесса, что делает наши данные через Serial намного чище.
* Я провел математические вычисления много лет назад и думаю, что для функции millis () потребуется примерно неделя постоянного времени выполнения, прежде чем переменная зациклится.
Шаг 10: Заключительные мысли
Вот и все!
Если вы следовали инструкциям, теперь у вас должна быть работающая сенсорная панель, подключенная к вашему микроконтроллеру! Это был небольшой проект, но это часть более крупного проекта. Я работаю над чем-то вроде Plate and Ball 271828, и мне нужно пройти долгий путь, прежде чем это произойдет. Я попытаюсь взять вас с собой на протяжении всего процесса, и каждая часть должна быть отдельным небольшим проектом.
Для меня это процесс обучения, поэтому не стесняйтесь оставлять свои мысли и предложения в комментариях ниже.
Спасибо, увидимся в следующий раз!
Рекомендуемые:
Простой, дешевый и надежный датчик касания, состоящий всего из 3 частей: 3 шага
Простой, дешевый и надежный сенсорный датчик, состоящий всего из трех частей: управление всеми видами электронных устройств одним касанием пальца может быть весьма полезным. В этом руководстве я покажу вам, как создать простой, но мощный сенсорный датчик, который работает безупречно. Все, что вам нужно, это стандартный транзистор и два
Прототип - устройство сигнализации, использующее датчик касания человека (KY-036): 4 шага
Прототип - устройство сигнализации, использующее датчик касания человека (KY-036): В этом проекте я буду проектировать устройство сигнализации, которое будет срабатывать при прикосновении. Для этого проекта вам понадобится датчик касания человека (KY-036). Позвольте мне взглянуть на этот проект. Как вы можете видеть на изображениях выше, сенсорное
Три схемы датчика касания + схема таймера касания: 4 шага
Три цепи датчика касания + схема таймера касания: датчик касания - это схема, которая включается при обнаружении прикосновения к контактам касания. Он работает на временной основе, т.е. нагрузка будет включена только на время прикосновения к контактам. Здесь я покажу вам три различных способа сделать сенсорную отправку
Цифровой датчик касания с использованием LM358: 3 шага
Цифровой сенсорный датчик с использованием LM358: датчики - это лучшее, что можно обойти с электроникой DIY, и это вторая инструкция из серии Instructables, которая создает различные датчики, совместимые с различными микроконтроллерами. В предыдущем руководстве я показал вам, как
Сенсор касания и датчик звука, управляющие светом переменного / постоянного тока: 5 шагов
Сенсор касания и датчик звука Управление освещением переменного / постоянного тока: это мой первый проект, и он работает на основе двух основных датчиков: один - сенсорный, а второй - звуковой, когда вы нажимаете сенсорную панель на сенсорном датчике, свет переменного тока переключается. ВКЛ, если отпустить, свет погаснет, и то же самое