- Необходимый материал
- Принципиальная электрическая схема
- Модуль джойстика
- Код и объяснение
- Управление светодиодами с помощью джойстика с Arduino
Первое, что приходит в голову при слове « Джойстик», - это игровой контроллер. Да, он точно такой же, и его можно использовать в играх. Помимо игр, он имеет много других применений в электронике DIY. Этот джойстик представляет собой не что иное, как комбинацию двух потенциометров для плоскости X и Y соответственно. Он считывает напряжение через потенциометр и выдает аналоговое значение на Arduino, и аналоговое значение изменяется, когда мы перемещаем вал джойстика (который является просто указателем потенциометра).
В этой схеме мы подключаем джойстик к Arduino, просто управляя четырьмя светодиодами в соответствии с движением джойстика. Мы разместили 4 светодиода таким образом, чтобы они отображали направление движения вала джойстика. Этот джойстик также имеет кнопку, которую можно использовать для других целей или оставить в режиме ожидания. Один светодиод также прикреплен к переключателю джойстика, при нажатии кнопки джойстика этот единственный светодиод загорается.
Необходимый материал
- Arduino UNO
- Модуль джойстика
- Светодиоды-5
- Резистор: 100 Ом-3
- Соединительные провода
- Макетная плата
Принципиальная электрическая схема
Модуль джойстика
Джойстики бывают разных форм и размеров. Типичный модуль джойстика показан на рисунке ниже. Этот модуль джойстика обычно обеспечивает аналоговые выходы, и выходное напряжение, обеспечиваемое этим модулем, постоянно меняется в соответствии с направлением, в котором мы его перемещаем. И мы можем узнать направление движения, интерпретируя эти изменения напряжения с помощью микроконтроллера. Ранее мы связали джойстик с AVR и Raspberry Pi.
Как видите, этот модуль джойстика имеет две оси. Это ось X и ось Y. Каждая ось ДЖОЙСТИКА крепится к потенциометру или горшку. Середины этих горшков вытесняются как Rx и Ry. Таким образом, Rx и Ry являются переменными точками для этих горшков. Когда джойстик находится в режиме ожидания, Rx и Ry действуют как делитель напряжения.
Когда джойстик перемещается по горизонтальной оси, напряжение на выводе Rx изменяется. Аналогично, когда он перемещается по вертикальной оси, напряжение на выводе Ry изменяется. Итак, у нас есть четыре направления джойстика на двух выходах АЦП. Когда ручка перемещается, напряжение на каждом контакте повышается или понижается в зависимости от направления.
Здесь мы подключаем этот модуль джойстика к Arduino UNO, который поставляется со встроенным механизмом АЦП (аналого-цифровой преобразователь), как показано в видео в конце. Узнайте больше об использовании АЦП Arduino здесь.
Код и объяснение
Полный код Arduino упомянут в конце.
В приведенном ниже коде мы определили оси X и Y модуля джойстика для аналоговых выводов A0 и A1 соответственно.
#define joyX A0 #define joyY A1
Теперь, в приведенном ниже коде, мы инициализируем PIN 2 Arduino для переключателя (кнопка) модуля джойстика, и значение buttonstate и buttonstate1 вначале будет равно 0.
int button = 2; int buttonState = 0; int buttonState1 = 0;
В приведенном ниже коде мы устанавливаем скорость передачи данных 9600 и определяем контакт 7 как выходной контакт, а контакт кнопки как входной контакт. Первоначально штифт кнопки будет оставаться высоким, пока переключатель не будет нажат.
void setup () {pinMode (7, ВЫХОД); pinMode (кнопка, ВВОД); digitalWrite (кнопка, ВЫСОКИЙ); 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.
если (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Это условие для движения вала джойстика в направлении оси -X.
если (xValue <= 10 && yValue> = 500) {digitalWrite (11, ВЫСОКИЙ); } else {digitalWrite (11, LOW);}
Это условие для движения вала джойстика в направлении оси + X
если (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Это условие для движения вала джойстика в направлении оси + Y
если (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Когда мы перемещаем вал джойстика по диагонали, наступает одно положение, когда аналоговые значения X и Y будут 1023 и 1023 соответственно, светодиоды на контактах 9 и 8 будут светиться. Потому что он удовлетворяет условию светодиода. Итак, для устранения этого несоответствия мы задали условие, что если значение (X, Y) равно (1023, 1023), то оба светодиода остаются в выключенном состоянии.
если (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Следующее условие используется для работы светодиода, подключенного к кнопочному переключателю. Когда мы нажимаем джойстик, светодиод загорается и фиксируется, пока кнопка не отпустит. Необязательно использовать кнопочный переключатель на модуле джойстика.
если (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, ВЫСОКИЙ); } else {digitalWrite (7, LOW);}
Управление светодиодами с помощью джойстика с Arduino
После загрузки кода в Arduino и подключения компонентов в соответствии со схемой, теперь мы можем управлять светодиодами с помощью джойстика. Мы можем включить четыре светодиода в каждом направлении в соответствии с движением вала джойстика. Внутри джойстика есть два потенциометра, один для движения по оси X, а другой - для движения по оси Y. Каждый потенциометр получает 5В от Arduino. Таким образом, когда мы перемещаем джойстик, значение напряжения будет изменяться, и аналоговое значение на аналоговых выводах A0 и A1 также изменится.
Итак, с Arduino мы считываем аналоговое значение для осей X и Y и включаем светодиоды в соответствии с движением оси джойстика. Кнопочный переключатель на модуле джойстика используется для управления одним светодиодом в цепи, как показано на видео ниже.