본문 바로가기
코딩/아두이노

아두이노 조이스틱을 이용해 LED 제어 해보자

by 어릴적 꿈은 미친과학자 2019. 10. 30.

안녕하세요 전자공이 입니다.

이전 글에서는 아두이노를 통해 조이스틱을 제어하는

방법에 대해 알아보았습니다.

본문에서는 조이스틱 제어를 이용해 LED를 제어하는 방법

대해 알아보겠습니다. 

 

 

-준비물-

아두이노

브레드보드

점퍼선

조이스틱 모듈

LED 소자 4개

고정 저항 330옴 4개

 

 

위의 사진처럼 조이스틱 모듈에 점퍼선을 맞춰줍니다.

 

 

브레드 보드는 다음처럼 구성해줍니다.

 

사진처럼 회로를 구성해줍니다.

 

 

회로 구성이 다 되면 코드를 입력하고 업로드해줍니다.

 

-코드 설명-

--------------------------------------------------------------------------------------------

void setup() { 
  pinMode(8, INPUT_PULLUP);  //8번 핀을 풀업으로 입력받습니다. 스위치를 연결하는 S 부분을 8에 연결해줍니다.
  pinMode(10, OUTPUT);  // 10번 포트를 OUTPUT 출력으로 사용합니다.
  pinMode(11, OUTPUT);  // 11번 포트를 OUTPUT 출력으로 사용합니다.
  pinMode(12, OUTPUT);  // 12번 포트를 OUTPUT 출력으로 사용합니다.
  pinMode(13, OUTPUT);  // 13번 포트를 OUTPUT 출력으로 사용합니다.
  digitalWrite(8, HIGH);  // 8번 포트를 HIGH 출력으로 사용합니다.


void loop() { 
  int sw = digitalRead(8);  // "sw"에 디지털 8핀 읽은 값을 입력합니다.
  int X = analogRead(A0);  // "X"에 아날로그 읽은 값을 입력합니다.
  int Y = analogRead(A1);  // "Y"에 아날로그 읽은 값을 입력합니다.

  if (X > 700) {  //만약 X값이 700보다 크면 아래의 연산을 합니다.
    digitalWrite(10, HIGH);  //10번 포트를 HIGH 출력으로 사용합니다.
    digitalWrite(11, LOW); //11번 포트를 LOW 출력으로 사용합니다.  
    digitalWrite(12, LOW); //12번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(13, LOW); //13번 포트를 LOW 출력으로 사용합니다.
   }


  else if (X < 300) {  //만약 X값이 300보다 작으면 아래의 연산을 합니다.
    digitalWrite(13, HIGH);  //10번 포트를 HIGH 출력으로 사용합니다.
    digitalWrite(11, LOW); //11번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(12, LOW); //12번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(10, LOW); //10번 포트를 LOW 출력으로 사용합니다.
  }


  else if (Y > 700) {  //만약 Y값이 700보다 크면 아래의 연산을 합니다.
    digitalWrite(11, HIGH);  //11번 포트를 HIGH 출력으로 사용합니다.
    digitalWrite(10, LOW);  //10번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(13, LOW);  //13번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(12, LOW);  //12번 포트를 LOW 출력으로 사용합니다.
  }


   else if (Y < 300) {  //만약 Y값이 300보다 작으면 아래의 연산을 합니다.
    digitalWrite(12, HIGH);  //12번 포트를 HIGH 출력으로 사용합니다.
    digitalWrite(10, LOW);  //10번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(13, LOW);  //13번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(11, LOW);  //11번 포트를 LOW 출력으로 사용합니다.
  }

   else if (sw == 0) {  //만약 sw값이 0과 같으면 아래의 연산을 합니다.
    digitalWrite(10, HIGH);  //10번 포트를 HIGH 출력으로 사용합니다.
    digitalWrite(11, HIGH);  //11번 포트를 HIGH 출력으로 사용합니다.
    digitalWrite(12, HIGH);  //12번 포트를 HIGH 출력으로 사용합니다.
    digitalWrite(13, HIGH);  //13번 포트를 HIGH 출력으로 사용합니다.
  } 

else {  //위에 있는 조건과 다르면 아래의 연산을 합니다.
    digitalWrite(10, LOW);  //10번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(11, LOW);  //11번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(12, LOW);  //12번 포트를 LOW 출력으로 사용합니다.
    digitalWrite(13, LOW);  //13번 포트를 LOW 출력으로 사용합니다.
  }

}

---------------------------------------------------------------------------------------

 

 

업로드 후 조이스틱을 만지지 않았을 때 LED의 상태

 

조이스틱 X+

 

조이스틱 X-

 

조이스틱 Y+

 

조이스틱 Y-

 

스위치를 눌렀을 때

 

 

본문에서 한 내용은 조이스틱 모듈을 이용해 LED를 제어하는 과정이었습니다.

위 과정을 따라함으로 LED를 제어해보고 조이스틱과 다른 모듈 또는 소자들과 연계하는 방법을 터득했습니다.

 그 말은 정확히 이해했다면 충분히 여러분들도 연계를 하는 방법을 스스로 터득할지도 모릅니다.

어려웠다고 느꼈다면 다시 따라해보고 천천히 자신의 것이 되도록 노력해봅시다.

 

 

꼭 따라 해 보시고 안 되는 것이나 설명상 부족하다고 느끼는 게 있으시다면

부디 댓글 부탁드립니다. 확인 후 답변드리도록 하겠습니다.

 

 



-그럼 이번 조이스틱을 이용한 LED 제어는 끝-

 

 

댓글


page contents