코드 검색

ESP32 튜토리얼 26/55 - 조이스틱을 아두이노와 함께 사용하여 동작하기 | SunFounder의 ESP32 IoT 키트

ESP32 튜토리얼 26/55 - 조이스틱을 아두이노와 함께 사용하여 동작하기 | SunFounder의 ESP32 IoT 키트

이 튜토리얼에서는 SunFounder의 ESP32 마이크로컨트롤러에 XY 조이스틱을 인터페이스하는 방법을 배우고, 이를 통해 위치를 감지하고 입력에 따라 동작을 수행할 수 있게 됩니다. 또한 조이스틱이 특정 위치로 이동했을 때 활성화되는 버저도 통합할 것입니다. 이 조합을 통해 사용자 입력에 실시간으로 반응하는 인터랙티브 프로젝트를 만들 수 있습니다.

ESP32-26-xy-joystick-main

XY 조이스틱은 X 및 Y 위치에 해당하는 두 개의 아날로그 출력과 동작을 트리거하기 위해 누를 수 있는 스위치를 제공합니다. 조이스틱의 값을 읽음으로써 버저 활성화나 화면에 값 표시와 같은 프로젝트의 다양한 요소를 제어할 수 있습니다. 과정을 완전히 이해하려면 추가 통찰을 위해 비디오를 확인하세요(비디오 00:00 부분).

하드웨어 설명

이 프로젝트의 주요 구성 요소는 ESP32 마이크로컨트롤러, XY 조이스틱, 그리고 버저입니다. ESP32는 Wi-Fi와 Bluetooth를 지원하는 다재다능한 보드로, IoT 프로젝트에 이상적입니다. XY 조이스틱은 X 및 Y 축용 두 개의 가변 저항과 추가 입력용 푸시 버튼 스위치로 구성됩니다.

joystick_schematic
ESP32-26-xy-joystick-schematic

조이스틱은 위치에 해당하는 아날로그 신호를 출력하며, 이는 ESP32의 아날로그 핀에서 읽힙니다. 푸시 버튼은 눌렸을 때 디지털 신호를 제공합니다. 버저는 ESP32의 디지털 출력 핀에 연결되어 조이스틱의 위치에 따라 활성화 또는 비활성화될 수 있습니다.

데이터시트 세부 정보

제조업체 SunFounder
부품 번호 XY 조이스틱 모듈
동작 전압 3.3 V – 5 V
저항 값 10 kΩ (각 축)
최대 전류 20 mA
스위치 유형 순간 푸시 버튼
크기 약 50 mm x 50 mm

 

  • ESP32와의 호환성을 위해 조이스틱에 3.3 V 전원을 공급하세요.
  • 플로팅 입력을 방지하려면 스위치에 풀업 저항을 사용하세요.
  • 아날로그 출력을 ESP32의 ADC 핀(X는 34, Y는 35)에 연결하세요.
  • 잘못된 트리거를 방지하려면 스위치에 디바운스 메커니즘을 사용하세요.
  • 전압 레벨을 모니터링하여 안전한 동작 한계 내에 유지되도록 하세요.

배선 지침

ESP32-26-xy-joystick-wiring

조이스틱을 ESP32에 배선하려면 먼저 조이스틱의 접지 핀을 ESP32의 접지 핀에 연결하세요. 다음으로 조이스틱의 VCC 핀을 ESP32의 3.3 V 핀에 연결합니다. 조이스틱에는 두 개의 아날로그 출력 핀이 있습니다: X축 출력(VRX로 표시)을 ESP32의 핀 34에 연결하고 Y축 출력(VRY로 표시)을 핀 35에 연결하세요.

스위치 출력의 경우 스위치 핀을 ESP32의 핀 33에 연결하세요. 이 핀은 버튼 누름을 디지털 입력으로 읽습니다. 간헐적인 문제를 피하기 위해 연결이 안전한지 확인하세요. 배선이 비디오(비디오 02:30 부분)와 다르다면 아날로그 및 디지털 연결에 대한 동일한 원칙을 따르면서 적절히 조정하세요.

코드 예제 및 설명

코드에서 먼저 조이스틱 핀에 대한 상수를 정의합니다. 식별자 xAxis, yAxis, btn은 각각 34, 35, 33으로 설정됩니다. 이렇게 하면 프로그램 전체에서 이러한 핀을 쉽게 참조할 수 있습니다.

#define xAxis 34
#define yAxis 35
#define btn 33

setup() 함수에서 직렬 통신을 초기화하고 버튼 핀 모드를 입력으로 설정합니다. 이렇게 하면 ESP32가 조이스틱에서 데이터를 읽고 직렬 모니터로 보낼 준비가 됩니다.

void setup() {
  Serial.begin(115200);
  pinMode(btn, INPUT);  
}

loop() 내부에서 analogRead()를 사용하여 조이스틱의 X 및 Y 축에 대한 아날로그 값을 읽고 xValueyValue에 저장합니다. 버튼 상태는 digitalRead()를 사용하여 읽고 btnValue에 저장합니다. 마지막으로 이러한 값을 직렬 모니터에 출력합니다.

void loop() {
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 
  int btnValue = digitalRead(btn);
  
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  delay(300);  // 읽기 사이 지연
}

이 루프는 값을 지속적으로 업데이트하여 조이스틱 이동 및 버튼 누름에 대한 실시간 피드백을 제공합니다. 전체 코드는 기사 아래에 로드된 전체 코드를 참조하세요.

데모 / 기대 효과

설정이 완료되고 코드가 업로드되면 직렬 모니터에 X 및 Y 값과 버튼 상태가 표시됩니다. 조이스틱을 움직이면 값이 그에 따라 변경되어 위치를 반영합니다. 버튼을 누르면 상태가 높음과 낮음 사이에서 전환됩니다.

일반적인 함정에는 잘못된 배선이 포함되며, 이는 플로팅 입력이나 조이스틱의 응답 없음으로 이어질 수 있습니다. 올바른 핀이 사용되고 스위치에 풀업 저항이 구현되었는지 확인하십시오. 이러한 동작에 대한 실용적인 시연을 보려면 비디오를 시청하십시오(비디오 13:00 지점).

비디오 타임스탬프

  • 00:00 시작
  • 1:47 XY 조이스틱 소개
  • 7:32 조이스틱 값 측정
  • 8:40 배선 설명
  • 11:06 ESP32용 조이스틱 Arduino 코드 설명
  • 14:43 Arduino IDE에서 ESP32 보드 및 COM 포트 선택
  • 16:24 조이스틱 간단 사용 시연
  • 19:20 부저를 사용한 조이스틱 위치 감지 코드
  • 21:16 위치 감지 시연

이미지

joystick_schematic
joystick_schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-main
ESP32-26-xy-joystick-main
826-ESP32 Tutorial 26/55- Arduino code for XY Joystick
언어: C++
// Define constants for the x and y axis and the button pins
#define xAxis 34
#define yAxis 35
#define btn 33


void setup() {
  // Initialize serial communication at 115200 bits per second:
  Serial.begin(115200);

  // Set the mode of the button pin to input
  pinMode(btn, INPUT);  
}

void loop() {
  // Read the analog value for x,y axis
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 

  // Read the digital value from the button pin
  int btnValue = digitalRead(btn);
  
  // print out the values
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  
  delay(300);  // Delay between reads
}

자원 및 참고자료

파일📁

파일이 없습니다.