- Необходим материал
- Електрическа схема
- Модул на джойстика
- Код и обяснение
- Управление на светодиоди с помощта на джойстик с Arduino
Първото нещо, което ни хрумва, когато слушаме думата Джойстик, е контролерът на играта. Да, това е абсолютно същото и може да се използва за игри. Освен в игрите, той има много други приложения в електрониката „направи си сам“. Този джойстик не е нищо друго освен комбинация от два потенциометра за равнината X и Y съответно. Той отчита напрежението през потенциометъра и дава аналогова стойност на Arduino, а аналоговата стойност се променя при преместване на вала на джойстика (което е просто показалеца на потенциометъра).
В тази схема ние свързваме джойстика с Arduino просто като контролираме четири светодиода според движението на джойстика. Поставили сме 4 светодиода по такъв начин, че да представлява посоката на движение на вала на джойстика. Този джойстик също има бутон, който може да се използва за различни други цели или може да се остави на празен ход. Към превключвателя на джойстика е прикрепен и един светодиод, тъй като бутонът на джойстика е натиснат, че един светодиод ще се включи.
Необходим материал
- Arduino UNO
- Модул на джойстика
- Светодиоди-5
- Резистор: 100ohm-3
- Свързващи проводници
- Макет
Електрическа схема
Модул на джойстика
Джойстиците се предлагат в различни форми и размери. Типичен модул Джойстик е показан на фигурата по-долу. Този модул Джойстик обикновено осигурява аналогови изходи и изходните напрежения, предоставени от този модул, продължават да се променят според посоката, в която го движим. И можем да получим посоката на движение, като интерпретираме тези промени на напрежението с помощта на някакъв микроконтролер. Преди това свързвахме Джойстик с AVR и Raspberry Pi.
Този модул на джойстика има две оси, както можете да видите. Те са оста X и Y оста. Всяка ос на JOYSTICK е монтирана към потенциометър или гърне. Средните точки на тези саксии се изхвърлят като Rx и Ry. Така Rx и Ry са променливи точки към тези саксии. Когато джойстикът е в режим на готовност, Rx и Ry действат като делител на напрежението.
Когато джойстикът се премести по хоризонталната ос, напрежението на Rx щифта се променя. По същия начин, когато се движи по вертикалната ос, напрежението на щифта Ry се променя. Така че имаме четири посоки на джойстика на два ADC изхода. Когато пръчката се премести, напрежението на всеки щифт става високо или ниско в зависимост от посоката.
Тук свързваме този модул Джойстик с Arduino UNO, който се предлага с вграден механизъм ADC (аналогов към цифров преобразувател), както е показано във видеото в края. Научете повече за използването на ADC на Arduino тук.
Код и обяснение
Пълният код на Arduino е споменат в края.
В кода по-долу сме дефинирали оста X и Y на модула Джойстик съответно за аналогови пинове A0 и A1.
#define joyX A0 #define joyY A1
Сега, в кода по-долу, ние инициализираме ПИН 2 на Arduino за превключвателя (бутон) на модула Джойстик и стойността на бутони и бутони1 ще бъде 0 в началото.
бутон int = 2; int buttonState = 0; int buttonState1 = 0;
В кода по-долу настройваме скоростта на предаване на 9600 и дефинирахме Pin 7 като изходен щифт, а pin на бутон като входен Pin. Първоначално щифтът на бутона ще остане висок, докато превключвателят не натисне.
void setup () {pinMode (7, OUTPUT); pinMode (бутон, INPUT); digitalWrite (бутон, HIGH); Serial.begin (9600); }
Тук в този код четем стойностите от аналоговите щифтове A0 и A1 и печатаме последователно.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Условията за включване и изключване на светодиода според движението на вала на джойстика са определени в кода по-долу. Тук просто вземаме аналогови стойности на напрежението на пин A0 и A1 на Arduino. Тези аналогови стойности ще се променят при преместване на джойстика и светодиодът ще свети според движението на джойстика.
Това условие е за движение на вала на джойстика в посока на оста Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Това условие е за движение на вала на джойстика в посока -X ос
ако (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Това условие е за движение на вала на джойстика в посока + X ос
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Това условие е за движение на оста на джойстика в посока + Y ос
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Когато преместваме вала на джойстика по диагонал, тогава се появява една позиция, когато аналоговите стойности на X и Y ще бъдат съответно 1023 и 1023, и двата Pin 9 и Pin 8 LED ще светят. Защото отговаря на състоянието на светодиода. И така, за премахване на това несъответствие сме дали условие, че ако стойността на (X, Y) е (1023, 1023), тогава и двата светодиода остават в състояние OFF
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Условието по-долу се използва за управление на светодиода, свързан към бутонния превключвател. Когато натиснем превключвателя на джойстика, светодиодът ще се включи и ще се заключи, докато бутонът се освободи. Не е задължително да използвате превключвателя с бутон на модула Джойстик.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
Управление на светодиоди с помощта на джойстик с Arduino
След качването на кода в Arduino и свързването на компонентите според схемата, вече можем да управляваме светодиодите с Джойстик. Можем да включим четирите светодиода във всяка посока според движението на вала на джойстика. Джойстикът има два потенциометъра вътре, единият е за движение по оста X, а друг е за движение на оста Y. Всеки потенциометър получава 5v от Arduino. Така че, докато движим джойстика, стойността на напрежението ще се промени и аналоговата стойност на аналоговите щифтове A0 и A1 също ще се промени.
И така, от Arduino четем аналоговата стойност за оста X и Y и включваме светодиодите според движението на оста на джойстика. Бутон за превключване на модула Джойстик се използва за управление на единичния светодиод във веригата, както е показано на видеото по-долу.