пятница, 18 мая 2018 г.

Потенциал потенциометра

В этом заметке речь пойдет о том, как и зачем подключать потенциометр к плате Arduino, и что с ним потом делать.

Разбираться будем на примере пары простых устройств и пары скриптов в Scratch for Arduino.


Примерно так выглядит потенциометр (картинка из Википедии)
Заметка сугубо практическая. Если вы не понимаете, как и почему работает потенциометр - ничего страшного, для программирования это никакого значения не имеет. Просто собирайте схему, как нарисовано. :)

Потенциометр, как подсказывает нам Википедия, это регулируемый делитель электрического напряжения.

Было бы неплохо рассказать также, что такое "делитель напряжения", но это тема отдельной статьи (которая скоро будет написана).

А так он работает (картинка из интернетов)

Каждый, кто вращал ручку регулировки громкости - имел дело с потенциометром. То есть мы его крутим, и что-то меняется от большего к меньшему или наоборот. В общем-то, этих познаний достаточно, чтобы сделать примеры из этой заметки. :)

Как он нам пригодится в наших играх с Arduino?

С помощью потенциометра мы сможем взять 5V с платы Arduino, а затем, вращая ручку, подавать на один из аналоговых разъемов, т.е. "входов", от нуля до 5V. Это напряжение будет пониматься платой как значение от 0 до 1023. В скрипте мы можем преобразовать это значение во что-то для нас полезное.

Впрочем, раз уж вся теоретическая теория остается за бортом, давайте сразу перейдем к практической практике.

Возьмите потенциометр (например, в магазине). Номинал в данном случае особого значения не имеет. Можно взять 1 кОм, можно 10 кОм - они точно будут работать.

Присоединим разъемы платы 5V и GND к крайним выводам потенциометра, а Analog0 (A0) - к среднему.


Собрав такую схему, подключим USB-кабелем плату к компьютеру, и запустим программу Scratch for Arduino.

Теперь посмотрите на панель сенсоров. При вращении ручки потенциометра значение сенсора Analog0 должно изменяться от 0 до 1023 (минимальные и максимальные значения могут быть чуть больше нуля и чуть меньше 1023).

Если значения меняются "не в ту сторону", то есть вместо минимума у вас максимум - то просто поменяйте местами провода 5V и GND.

Еще есть такие хитрые потенциометры, у которых средний вывод не посередине, но если вы приобрели такой как на картинке из Википедии - то у него средний вывод как раз посередине.

Когда все заработало как надо, займемся программированием.

Нажимаем кнопку "выбрать новый объект Arduino из файла", в папке "Things" находим футбольный мяч, и кнопкой изменения масштаба задаем ему нужный размер - какой-нибудь не очень большой. Существующий объект (спрайт) Arduino можно удалить, чтобы он не мешался.



Теперь значение с пина Analog0 сделаем скоростью перемещения мяча. Так как 1023 будет слишком быстро, поделим это значение, например, на 20. Делаем скрипт.



Запускаем. Вращаем ручку потенциометра. Та-дам! Скорость мяча изменяется поворотом ручки!

Вдоволь наигравшись в мячом, можно попробовать сделать что-то более сложное.

Давайте с помощью потенциометра управлять не скоростью объекта, а его положением.

Так как у нас две пространственных координаты, нам для этого понадобятся два потенциометра.

Собираем схему.



Так же как в предыдущем примере, создаем новый объект Arduino из файла. Я решил, что ведьма на метле будет неплохим выбором. Кнопкой масштаба задаем ей нужный размер.



Теперь запрограммируем это.

Для начала нам нужно будет преобразовать значение Analog0 в координату X (от -240 до 240), а значение Analog1 в координату Y (от -180 до 180). Значения на аналоговых пинах могут быть от 0 до 1023, значит, понадобится немного посчитать.

x = (A0 / (1023 / (240 + 240)) – 240
y = (A1 / (1023 / (180 + 180)) – 180

Упрощаем:

x = A0 / 2,13 – 240
y = A1 / 2,84 – 180

Можно сразу подставить эти формулы в скрипт (как мы делали со скоростью мяча), но для наглядности я все-таки добавлю переменные X и Y.



Запускаем, крутим ручки потенциометров, ведьма летает по экрану. :)

Поздравляю, мы только что сделали джойстик! Выглядит довольно-таки странно, но он работает.



Давайте еще сделаем так, чтобы ведьма не просто так летала по экрану, но еще и рисовала при этом. Модифицируем скрипт.



Поднимаем и опускаем перо, крутим ручки и пытаемся нарисовать что-то осмысленное. А это не так-то просто! :)



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

Пробуйте!

Комментариев нет:

Отправить комментарий