[매드정] 아두이노 강좌 - 21. JOYSTICK & RELAY 모듈 동작

안녕하세요~ 매드 입니다. ㅎㅎ 지난주는 제가 괌 마라톤을 다녀오는 바람에 한주 쉬게되었네요! >.<ㅋ

마라톤은 완전 망했다는... ㅎㄷㄷ
다음부터 해외 마라톤은 10km만 뛰는 걸로 해야겠습니다. ㅎㅎ
마라톤 뛴 이후로 여행 일정을 많이 망쳤습니다. 퓨,.퓨

ㅎㅎ 머 그래도 괌 여행 다녀온김에 자랑 사진 하나 투척! ㅋㅋㅋㅋㅋㅋ;;


... 별거 없네요.. 그나마 저 호텔 수영장 사진이 잘나온듯.. ㅡ.,ㅡ...

그럼 다시 현실로 돌아와서 이번 시간에는 몇개 안남은 센서들 중 조이스틱과 릴레이 모듈을 동작 시켜보도록 하겠습니다.


21-1. 조이스틱 & 릴레이

< 출처 : 구글 사진 >


조이스틱과 릴레이는 사실 별거 없습니다.

조이스틱은 아두이노에서 ADC를 이용하여 움직임을 알 수 있다는 것과
릴레이는 아두이노의 전압, 전류보다 큰 무언가를 제어하기 위해 사용한다는 것

이 두가지만을 알고 계시면 여러가지에 응용하실 수 있을 것 같네요.

그럼 먼저 조이스틱부터 보면 x축과 y축핀이 보이는데 이 두 부분에서 아날로그 전압(0~5V사이)이 출력됩니다. 조이스틱이 가운데 있다면 2.5V가 출력되고 한쪽끝으로가면 0 또는 5V가 출력되게 되는 것이죠. 조이스틱의 위치에 따라 비례되서 전압이 출력되기 때문에 아두이노의 ADC를 이용해서 조이스틱의 위치를 예측 할 수 있습니다. 어디서 많이 들어본 것 같죠? ㅎㅎ

지난 시간에 했던 KEYPAD 에서 KEY를 입력받는 방식이 바로 이 조이스틱을 이용한 방식이라고 생각하면 될 것 같네요!!


< 출처 : 구글 사진 >

다음은 릴레이를 봐보죠~ ㅎㅎ 릴레이는 제어용으로 많이 사용되는데요. 원리는 간단합니다. 릴레이 내부에 마그네틱 자석과 쇠붙이가 있어서 아두이노에서 전류를 흘리면 전자석이 되서 두 점접이 붙게되고 전류를 떨구면 전자석이 안되면서 접점이 떨어지게 되죠.

참.. 옛날 사람들은 기발한 아이디어 참 많아요~ ㅋㅋ 이런 원리로 인해서 제어하는 부분과 릴레이를 통한 전기적인 부분은 분리가 될 수 있답니다~ ㅎㅎ 또한 아두이노 5V 500mA 이내로만 제어할 수 있는 부분도 12V,24V 5A 모터라던가. 220V 전등이라던가. 아두이노로 제어하기 어려운 고전압 고전류들을 쉽게 제어 할 수 있게 되는 것이죠!

간단하죠? ㅎ
어떻게 연결하는지 한번 봐보죠~


21-2. 조이스틱 & 릴레이 회로

< 출처 : 구글 사진 >

먼저 조이스틱 연결을 보면 X축 출력과 Y축 출력은 아두이노의 아날로그 입력인 A0, A1으로 연결해주고요~ 5V, GND를 연결하게 되네요.

조이스틱에 추가로 스위치가 있는데 이 스위치는 이전시간에 했던 다른 스위치들과 동일하니 Digital 부분에 아무데나 꼿아주시면 될 것 같네요. ㅎㅎ
실습은 영상으로 빠르게 해보겠습니다.


< 출처 : 구글 사진 >

자 다음은 릴레이 인데요~ 아두이노에서는 신호선과 전원으로 릴레이 제어하게되고 릴레이 부분은 외부 전원과 외부전원으로 동작시킬 무언가를 연결하게 되네요~ 릴레이가 기계적인 일종의 스위치라고 생각하시면 회로를 이해하시는데 편하실 꺼에요~ >.<

이제 연결도 했겠다. 바로 아두이노 펌웨어를 작성해 보도록 하죠.


21-3. 펌웨어

- 릴레이
void setup() {
  pinMode(8, OUTPUT);
}

void loop() {
  digitalWrite(8, HIGH);
  delay(1000);          
  digitalWrite(8, LOW);  
  delay(1000);            
}

- 조이스틱
void setup() {
  Serial.begin(9600);
  pinMode(8,INPUT_PULLUP);
}

void loop() {
  int sensorValue1 = analogRead(A0);
  int sensorValue2 = analogRead(A1);

  if(! (digitalRead(8)) ) {
    Serial.println("Button Click");
  }
 
  Serial.print("X = ");
  Serial.print(sensorValue1);
  Serial.print("  ");
  Serial.print("Y = ");
  Serial.println(sensorValue2);
  delay(100);
}



하.. 오늘도 이렇게 또 다른 센서들을 마스터하게 되네요~ ㅋㅋ
다음 시간에는 몇개 안남은 센서들 중 하나인 마그네틱 홀 센서를 한번 다뤄보도록 하겠습니다~~ ㅎㅎ

아마 생각에는 강좌만 잘 따라오셨다면 이제 새로운 센서를 만나도 금방 습득하실 것 같네요. 왜냐하면! 인터넷에 다 있으니까여~~ >.<ㅋ

흐흐.. 그래도 방심하시면 안됩니다. 혹여나 인터넷에 없는 것들을 다룰 때도 많으니까요 ㅎㅎ 어쨋든 퍼스트 팔로워에서 새로운 것을 창조하는 그날까지! ... (사실 저도 인터넷 팔로워ㅋ)

계속 달려보겠습니다. 흐흐흐...

그럼 다음시간에 뵐께요~~

댓글 쓰기

0 댓글