Има голямо разнообразие от начини за прехвърляне на информация от човек към микроконтролер или компютър и един от тях използва джойстик. Нека да видим как да свържете аналогов джойстик с две оси и бутон към Arduino.
Необходимо е
- - Arduino;
- - двуосен джойстик;
- - 3 резистора с номинална стойност 220 Ohm;
- - 1 RGB или 3 конвенционални светодиода.
Инструкции
Етап 1
Джойстикът е удобно и лесно за използване устройство за предаване на информация. Има голям брой видове джойстици по отношение на броя на степени на свобода, принципа на четене на индикациите и използваните технологии. Джойстиците най-често се използват за управление на движението на всякакви механизми, контролирани модели, роботи. Аналоговият джойстик, който ще разгледаме днес, е дръжка, прикрепена към сферична става с две взаимно перпендикулярни оси. Когато копчето е наклонено, оста завърта подвижния контакт на потенциометъра, поради което напрежението на изхода му се променя. Също така аналоговият джойстик има бутон за такт, който се задейства при вертикално натискане на дръжката.
Стъпка 2
Свържете джойстика според схемата по-долу. Свържете аналоговите изходи X и Y на джойстика към аналогови входове A1 и A2 на Arduino, изхода на бутона SW към цифров вход 8. Джойстикът се захранва от напрежение +5 V.
Стъпка 3
За да видим ясно как работи джойстика, нека напишем такава скица. Нека декларираме щифтовете, зададем режимите на работа за тях. Забележете, че в процедурата за настройка (), ние поставихме входа switchPin на високо ниво. Това позволява вградения издърпващ резистор на този порт. Ако не го включите, тогава, когато бутонът на джойстика не бъде натиснат, осмият порт на Arduino ще виси във въздуха и ще хваща пикапи. Това ще доведе до нежелани, хаотични фалшиви положителни резултати.
В процедурата loop () непрекъснато анкетираме състоянието на бутона и го показваме с помощта на светодиода на изход 13. Поради издърпването на входа switchPin, светодиодът е постоянно включен и при натискане на бутона изгасва, а не обратното.
След това четем показанията на двата потенциометра на джойстика - изхода на осите X и Y. Arduino има 10-битов ADC, така че стойностите, отчетени от джойстика, са в диапазона от 0 до 1023. В средната позиция на джойстика, както можете да видите на илюстрацията, стойностите в областта 500 са около средата на диапазона.
Стъпка 4
Обикновено джойстик се използва за управление на електрически двигатели. Но защо да не го използвате, за да контролирате яркостта на светодиода например? Нека свържем RGB LED (или три обикновени светодиода) към цифрови портове 9, 10 и 11 на Arduino съгласно горната схема, като не забравяме, разбира се, и за резисторите.
Стъпка 5
Ще променим яркостта на съответните цветове, когато сменим позицията на джойстика по осите, както е показано на фигурата. Поради факта, че джойстикът може да не е точно центриран от производителя и да има средата на скалата не около 512, а от 490 до 525, светодиодът може да светне леко дори когато джойстикът е в неутрално положение. Ако искате да бъде напълно изключен, направете съответните изменения в програмата.
Стъпка 6
Въз основа на горната схема ще напишем скица на Arduino за управление на яркостта на RGB LED с помощта на джойстик.
Първо ще декларираме съответствието на щифтовете и две променливи - ledOn и prevSw - за работа с бутона. В процедурата за настройка () задайте функциите на щифтовете и свържете издърпващия резистор към щифта на бутона с командата digitalWrite (swPin, HIGH).
В цикъла () определяме натискането на бутона на джойстика. Когато натиснете бутона, ние превключваме режимите на работа между режима "фенерче" и режим "цветна музика".
В режим freeMode () яркостта на светодиодите се контролира чрез накланяне на джойстика в различни посоки: колкото по-силно е накланянето по оста, толкова по-ярко свети съответният цвят. Освен това преобразуването на стойности се поема от функцията map (value, fromLower, fromUpper, toLower, toUpper). Функцията map () прехвърля измерените стойности (от Ниска, Висока) по осите на джойстика в желания диапазон на яркост (към Ниска, Висока). Можете да направите същото с обикновените аритметични операции, но това обозначение е много по-кратко.
В режим discoMode () три цвята последователно придобиват яркост и изгасват. За да можем да излезем от цикъла при натискане на бутона, проверяваме всяка итерация, за да видим дали бутонът е бил натиснат.
Стъпка 7
Резултатът е фенерче, изработено от трицветен RGB светодиод, яркостта на всеки цвят от който се настройва с помощта на джойстик. И когато натиснете бутона, се активира режимът "цветна музика". Въпреки че го използвам, напротив, като нощна лампа.
По този начин научихме как да свържем аналогов двуосов джойстик с бутон към Arduino и да четем показания от него. Можете да измислите и приложите по-интересно използване на джойстика от нашия пример.