[아두이노]
조이스틱[JoyStick] 모듈을 사용하여 LED 제어
안녕하세요 이번에는 조이스틱모듈(Joystick module)을 이용하여 LED을 제어하는 방법에 대해서 알아보겠습니다.
간단소개
1. 조이스틱 모듈을 조작하지 않을 경우에는 항상 2번 LED가 점등상태
2. 조이스틱 모듈의 움직임에 따라서 1번~6번 LED 점등상태
3. 조이스틱 모듈의z축(스위치)을 누를때는모든 LED 점등
핵심부품
실제와 그림이 다소 다르기 때문에 표기를 참고해서 연결해주세요!
VCC: 5V 연결
GND: Ground
VRX: X축
VRY: Y축
SW: z축(스위치버튼)으로 0 혹은 1 값만 전달.
조이스틱모듈의 해당 좌표 값입니다.
(미세하게 변하기 때문에 편의상 1023의 반의 값으로 표시하였습니다.)
부품목록
브레드보드
회로도
소스코드
int LED[6]; //LED 포트 배열로 선언
int joystick_x = A0; //조이스틱 x축
int joystick_y = A1; //조이스틱 y축
int joystick_z = 10; //조이스틱 z축
void setup() {
for(int i=0; i<6; i++){
LED[i] = i+2;
pinMode(LED[i], OUTPUT);// 디지털 i번 포트를 LED OUTPUT 으로 설정
}
pinMode(joystick_z, INPUT);
digitalWrite(joystick_z, HIGH); //SW값 HIGH로 초기값 설정.
Serial.begin(9600);
}
void loop() {
int x = analogRead(joystick_x); // 조이스틱 X축의 아날로그 신호를 x에 저장
delay(100);
int y = analogRead(joystick_y); // 조이스틱 Y축의 아날로그 신호를 y에 저장
if(x<=340 && y<=510){
led_all(LOW);
digitalWrite(LED[0], HIGH); //1번째 LED ON
}else if(x>340 && x<=680 && y<=510){
led_all(LOW);
digitalWrite(LED[1], HIGH); //2번째 LED ON
}else if(x>680 && y<=510){
led_all(LOW);
digitalWrite(LED[2], HIGH); //3번째 LED ON
}else if(x<=340 && y>510){
led_all(LOW);
digitalWrite(LED[3], HIGH); //4번째 LED ON
}else if(x>340 && x<=680 && y>510){
led_all(LOW);
digitalWrite(LED[4], HIGH); //5번째 LED ON
}else if(x>680 && y>510){
led_all(LOW);
digitalWrite(LED[5], HIGH); //6번째 LED ON
}
// 조이스틱 누를시 LED 전체 ON
if(digitalRead(joystick_z) == 0){
led_all(HIGH);
}
//조이스틱 모듈 값 표시
Serial.print("X:");
Serial.println(x);
Serial.print("Y:");
Serial.println(y);
Serial.print("Z:");
Serial.println(digitalRead(joystick_z));
}
//HIGH, LOW 값을 받아서 LED를 전체 제어
void led_all(boolean data){
// data = HIGH => LED All ON
// data = LOW => LED All OFF
for(int i=0; i<6; i++){
digitalWrite(LED[i], data);
}
}
*참고
소스코드의 if문을 보시면 옆의 그림을 참고하여 조건을 부여 하였습니다.
1023의 값을 갯수에 따라서 나누고 근사값을 넣었습니다.
구현영상
이상입니다 감사합니다.
'프로그래밍 > 아두이노[Arduino]&라즈베리파이[Raspberry Pi]' 카테고리의 다른 글
[아두이노] 토양수분감지센서로 OLED에 표시[Soil Moisture Sensor] (0) | 2019.05.03 |
---|---|
[아두이노] OLED 사용해보기 [OLED에 텍스트 표시, 예제 실습] (3) | 2019.05.01 |
[아두이노] 전압센서 모듈을 이용하여 LCD에 센서값 표시하기 (0) | 2019.04.29 |
[아두이노] 빗물감지센서 모듈을 사용하여 LCD에 센서값을 표시하기 + LED 제어 (0) | 2019.04.26 |
[아두이노] 수위센서[Water sensor]모듈을 사용하여 LCD에 센서값을 표시하기 + LED 제어 (0) | 2019.04.26 |