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

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

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

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

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


차례

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 함수를 사용하여 대체할 수 있습니다.)

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

감사합니다.

안녕하세요? 오늘은 서보모터와 또 그것을 아두이노에 활용해보는 것에 대해서 얘기해보도록 하겠습니다.

모터란 전기에너지를 동적에너지로 바꾸어주는 장치입니다.

즉 전원에 연결하면 어떠한 움직임을 만들어줄 수 있게됩니다.

그래서 아두이노 프로젝트나, 또 로봇이나 기계에 필수적으로 포함되어 있는 부품입니다.

서보모터가 어떠한 기능을 하는지 간단히 살펴보고 이것을 아두이노에 활용해보도록 하겠습니다.

차례

1. 서보모터란?

2. 아두이노와 서보모터


1. 서보모터란 ?

모터의 종류는 크게 세가지가 있습니다.

DC모터, 스테퍼 모터, 서보모터

DC모터는 고속회전용 모터입니다. 전기가 흐르게되면 고속으로 회전합니다.

주위에서는 전동공구가 같은 것에서 볼 수 있습니다.

스테퍼 모터는 모터희 회전 방향, 속도, 회전각을 제어할 수 있습니다.

고속으로 회전하지는 않지만 제어가 많이필요한 것에 활용될 수 있습니다.

3D프린터는 x,y,z축에 정확히 이동해야하기때문에 이 모터를 사용합니다.

마지막으로 서보모터는 PWM 신호를 이용하여 모터 팔의 회전각을 제어할 수 있습니다.

서보모터는 사용법도 쉽고 정확한 위치제어가 가능해서 처음 접하는 사람에게 좋습니다.

2. 아두이노와 서보모터

위 사진들을 참고해서 다음과 같이 연결해주시면 됩니다.

빨간선은 5V에 연결하고 갈색선은 GND, 오렌지색선은 원하는 데이터핀에 연결하시면 됩니다.

그러면 이제 간단한 예제를 작성해보도록 하겠습니다.

#include <Servo.h> // 라이브러리 추가

Servo SV; // 서보모터 선언


void setup() {

  SV.attach(13); // 서보모터 초기화

}


void loop() {

  for(int i=0; i<181; i++) {

  SV.write(i);

  delay(10);

  }

  for(int i=0; i<181; i++) {

  SV.write(180-i);

  delay(10);

  }

다음과 같이 작성했습니다.

아두이노 자체 라이브러리에 서보모터와 관련된 함수를 포함한 라이브러리가 있습니다.

그래서 다음과 같이 서보모터 라이브러리를 추가시켜줍니다.

그런 다음 SV라는 서보모터 변수를 선언해줍니다.

그리고 데이터를 출력하고자 하는 핀 번호를 초기화합니다.

SV.write() 함수는 서보모터의 위치를 제어할 수 있는 함수입니다.

원하는 각도를 넣으면 그 각도로 서보모터를 위치시킬 수 있습니다.

loop() 부분을 보면 반복문을 통하여 서보모터 각 위치를 0도 부터 180도

그리고 다시 180도 부터 0도로 회전하게 설정하였습니다.

서보모터는 라이브러리를 이용하면 쉽게 활용할 수 있습니다.

아두이노의 다양한 프로젝트에서 모터는 거의 필수적으로 사용됩니다.

서보모터와 관련된 내장함수를 잘 숙지하고 계신다면 아두이노 프로젝트를 하실 때 아주 유용할 것 입니다.

감사합니다.

+ Recent posts