안녕하세요? 오늘은 조이스틱의 원리를 알아보고 아두이노와 함께 활용해보도록 하겠습니다.

조이스틱은 아두이노 프로젝트에서 유용하게 입력기기로써 쓰입니다.

특히 아두이노로 게임을 만들거나 로봇을 움직일 때 자주 쓰입니다.

그러면 조이스틱의 원리가 어떻게 되고 이것을 어떻게 데이터로 받아들이는지 간단하게 알아보겠습니다.

그 후 간단한 예제를 아두이노와 함께 활용해보도록 하겠습니다.


차례

1. 조이스틱의 원리

2. 아두이노와 조이스틱

1. 조이스틱의 원리

조이스틱의 원리는 가변저항을 알고 계신다면 아주 간단해집니다.

가변저항 원리 알아보기 ( 링크입니다. )

변저항은 축을 회전 시키면 내부의 저항물체의 길이가 조절되어 저항이 변하는 방식이였습니다.

조이스틱도 이와 같은 원리를 그대로 가져옵니다.

조이스틱은 x축과 y축에 두개의 회전나사가 있습니다.

여기서 이 두개의 회전나사가 가변저항과 같은 역할을 하게 됩니다.

그래서 움직인 만큼 x축, y축의 저항이 변하게되고 전압이 변하게되어 읽어들이는 데이터 값도 변하게 됩니다.

아날로그 입력 데이터는 외부의 전압 변화를 읽어들이는 방식입니다.

조이스틱을 누르면 버튼처럼 사용할 수도 있습니다.

-

2. 아두이노와 조이스틱

회로는 다음과 같이 연결해주시면 됩니다.

Vcc와 GND는 각각 5V, GND 연결하고 VER은 x축, HOR y축을 뜻합니다.

이 두가지는 아날로그 데이터이므로 A0,A1에 각각 연결합니다. 그리고 스위치는 디지털핀에 연결해주시면 됩니다.

그러면 조이스틱을 움직이면 값이 어떻게 변하는지 출력하는 간단한 예제를 해보겠습니다.

코드는 다음과 같습니다.

값을 입력받기 위해서 3개의 정수형 변수를 선언합니다.

그리고 xpos, ypos에 아날로그 데이터를 입력받을 핀을 초기화 해줍니다.

select는 디지털 값이므로 디지털핀에 초기화합니다.

그리고 각각의 변수를 출력해주는 코드를 적으면 됩니다.

조이스틱을 움직이면 다음과 같이 데이터값이 변하는 출력됩니다.

조이스틱은 훌륭한 입력기기로 사용하실 수 있습니다.

서보모터를 제어하는데도 사용할 수 있고, 게임을 만드는데도 이용가능합니다.

기본예제를 잘 숙지하시면 다양한 곳에 활용하기 수월하실 것 입니다.

감사합니다.

안녕하세요? 오늘은 가변저항(potentiometer)의 원리에대하여 간단히 알아보고 아두이노에 활용해보도록 하겠습니다.

가변저항은 이름에서 알수 있듯이 저항값을 변화시킬 수 있습니다.

일상에서 볼 수 있는 대표적인 가변저항은 오디오 볼륨조절기 입니다.

볼륨조절은 가변저항의 저항을 조절하는 원리입니다.

그러면 가변저항의 내부와 원리를 간단히 알아보겠습니다.


1. 가변저항의 원리

2. 아두이노와 가변저항

1. 가변저항의 원리

가변저항은 보통 이렇게 생겼습니다. 다리가 세개인데 둘은 5V, GND에 연결하고 나머지는 입력 받고자하는 핀에 연결해주시면 됩니다.

가변저항의 내부는 다음과 같습니다.

중간의 원이 가변저항을 조절할 수 있는 축입니다.

가변저항의 원리는 저항성을 가진 물질의 길이를 조절하는 원리입니다.

A와 B는 고정저항입니다. 그러면 이제 와이퍼를 A와 가깝게 돌린다면 

저항물체의 길이가 짧아지고 A와 W사이 저항은 감소합니다.

이제 W를 B와 가깝게 돌린다면 저항은 증가하게 됩니다.

그래서 W를 아두이노의 아날로그 입력핀(A0)에 연결하여 그 값을 받게 됩니다.

-

가변저항의 저항변화는 선형에 가깝습니다. 즉, 아날로그의 형상입니다.

그래서 아두이노에 연결할 때 데이터를 입력 받을핀을 디지털에 연결해서는 안됩니다.

그래서 A0~A5의 핀을 사용합니다.

아두이노에서 아날로그 입력기능은 핀에 외부에서 전기가 흐르게 연결하고 전압의 변화를 읽는 방식으로 사용합니다.

그래서 가변저항을 사용하여 전압값을 변화시키면 변화되는 데이터값을 볼 수 있습니다.


2. 아두이노와 가변저항

가변저항을 이용하여 입력되는 데이터값을 출력하는 간단한 예제를 보겠습니다.

그림에서 보이는 것과 같이 회로를 연결해주시면 됩니다.

int value = analogRead(A0); 

정수형 변수를 하나 선언해서 입력되는 값을 받습니다.

그후 시리얼통신창에 출력하는 코드입니다.

축을 돌려보시면 값이 변하시는걸 볼 수 있습니다.

이번에는 가변저항을 이용해서 led의 밝기를 조절해보는 예제를 해보겠습니다.

회로는 다음과 같이 구성해주시면 됩니다.

여기서 중요한 점이 있습니다. 아두이노 보드에서는 아날로그 출력 기능이 없습니다.

아날로그는 선형적 변화로 나타낼 수 있지만 디지털은 0,1의 on과 off로만 입력, 출력할 수 있습니다.

그래서 디지털 출력으로 아날로그 출력을 구현해내기 위해서 PMW(펄스 폭 변조)의 제어 방법을 사용합니다.

ON, OFF를 아주 빠르게 반복하여 5V에 가까울 때는 on의 횟수가 많게 제어하는 방식입니다.

아두이노에서는 펄스 폭 변조가 되는 디지털핀은 3,5,6,7,10,11 입니다.

아날로그 출력은 0~255의 값만 허용됩니다.

아날로그 입력 값은 0~1024였으므로 4를 나누어줍니다.

(map 함수를 사용하여 대체할 수 있습니다.)

다음과 같이 밝기가 조절이 됩니다.

감사합니다.


안녕하세요? 공대남입니다. 오늘은 릴레이 모듈에 대해서 알아보도록하겠습니다.

릴레이는 제어를 하기위한 부품으로 많이 사용하고 있습니다.

오늘 알아볼 릴레이는 5V 1채널 릴레이입니다.

1채널 릴레이 모듈은 릴레이 1개를 제어할 수 있는 모듈입니다.

릴레이의 원리에 대해여 알아보고, 아두이노에 적용하여 알아보도록 하겠습니다.

차례

1. 릴레이의 원리

2. 5V 1채널 릴레이

3. 아두이노와 릴레이


1. 릴레이의 원리

릴레이는 전자석의 원리를 이용합니다.

전자기유도원리를 이용한 것 입니다.

위 그림 밑에 부분에있는 코일에 전류가 흐르면 자성이 생기고 스위치가 밑으로 닫히게 됩니다.

그리고 전류가 끊기면 패러데이 법칙에 의해 방해 전류가 생성되고 그에 대한 자기력에 의해 스위치는 위로 닫힙니다.

이러한 방식으로 릴레이에 전류를 흐르게 하거나 차단하여 제어를 할 수 있습니다.


2. 5V 1채널 릴레이 모듈

보통 아두이노에 사용하는 1채널 릴레이는 다음과 같습니다.

VCC, GND는 아시다시피 전원을 연결하는 핀입니다.

그리고 IN 에는 데이터를 입출력하고자 하는 핀에 연결합니다.

좌측에 'NO'는 'normal open'의 뜻입니다. 즉, 평상시에 스위치가 열려있습니다.

그렇기 때문에 릴레이에 전류가 흐를 때 닫히게 됩니다.

'NC'는 반대로 생각하시면 됩니다. 평상시에 닫혀있고 릴레이에 전류가 흐르면 스위치가 열립니다.

'common port'는 공통단자로써 항상 연결 시켜주어야합니다.

-

즉, 정리하자면 릴레이에 전류가 흐를때 어떤 부품을 동작시키거나 전류를 인가하고 싶다면 NO에 연결해주시면 됩니다.

그 반대로 평상시에 계속 전류를 인가시켜주고 릴레이에 전류가 흐를때 차단시켜주고 싶다면 NC에 연결하면 됩니다.


3. 아두이노와 릴레이

릴레이에 일정한 시간간격으로 전류를 인가하여 led 점등을 살펴보는 간단한 예제를 보겟습니다.

다음과 같이 회로를 구성합니다. 

common port에 전원을 인가하여야 하기 때문에 아두이노 보드에서 바로 릴레이로 전원을 연결하면 안됩니다.

-

int relay = 4;


void setup() {

  pinMode(relay, OUTPUT);


}


void loop() {

  digitalWrite(relay, HIGH);

  delay(1000);

  digitalWrite(relay, LOW);

  delay(1000);

}

코드는 다음과 같이 작성하시면 됩니다.

저는 4번포트를 릴레이에 연결시켰습니다.

핀모드를 이용하여 릴레이핀을 OUTPUT으로 설정합니다.

그리고 1초 간격으로 릴레이에 전압을 HIGH, LOW를 줍니다.

그러면 1초 간격으로 LED가 점등 되는걸 볼 수 있습니다.

-

LED이 만이 아니라 서보모터 등, 다양한 부품에도 적용시킬 수 있습니다.

시리얼 입력을 이용하여 릴레이를 이용해 제어도 가능합니다.

다양한 방법이 있으니 기초를 잘 숙지해두면 좋을 거 같습니다.

감사합니다.

+ Recent posts