안녕하세요? 이번 글에서는 RGB LED 모듈을 알아보고 아두이노 함께 활용해보도록 하겠습니다.

RGB 모듈과 아두이노를 활용해보기 전에 RGB에 대하여 알아볼 것 입니다. 

RGB, 빛의 3원색과 같이 다들 한번씩 들어보셨을 것 입니다.

색이 표현되는 원리와 모듈이 어떻게 작동하는지에 대하여도 알아보도록 하겠습니다.

차례

1. RGB ( 빛의 3원색 )

2. RGB LED 모듈

3. 아두이노와 RGB LED

1. RGB

RGB는 각각 빛의 3원색 빨강, 파랑, 초록을 말합니다.

즉, RGB는 빨강과 파랑, 초록을 사용하여 색을 나타내는 방식을 의미합니다.

RGB 색 표현방식은 컴퓨터 모니터, TV, 컬러프린터와 같은 것에서 주로 사용됩니다.

'~만 화소' 라는 표현을 들어보셨을 것 입니다. RGB를 값으로 나타날 때 다음과 같은 표현을 쓰는데,

화소는 아주 작은 사각형으로써 빨강, 파랑, 초록의 조합으로 이루어집니다.

화소의 단위는 Byte(바이트)입니다. 빨강, 파랑, 초록 각각 1바이트가 조합되는 방식입니다.

1byte = 8bit 이기때문에 0~255의 값을 가질 수 있습니다.

정리하자면 RGB의 색은 R(0~255), G(0~255), B(0~255)의 값이 조합되어 표현됩니다.

그래서 RGB(123,53,0)와 같이 값이 표현되는 것 입니다.

결과적으로 사람은 빨강,파랑,초록을 뇌에서 각각 받아들여 조합하여 색을 인식합니다.

2. RGB LED 모듈

위 그림과 같은 LED 모듈을 사용합니다.

앞서 알아봤듯이 RGB는 각각 0~255의 값을 가지고 그것이 조합되어 색이 표현됩니다.

그러므로 RGB가 각각 출력값을 가질 때 디지털출력이 아닌 아날로그 출력값을 받아야 합니다.

아두이노에는 아날로그 출력을 할 수는 없지만 디지털핀 PMW를 이용하여 출력가능합니다.

그래서 RGB는 각각 9,10,11 핀에 연결합니다.

남은 I핀은 GND에 연결하여 주시면 됩니다.

그러면 9,10,11 출력값을 조절하여 빛의 색을 제어할 수 있게됩니다.


3. 아두이노와 RGB LED

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

그러면 random() 함수를 이용하여 빛의 색을 임의로 바꾸는 예제를 만들어보겠습니다.

코드를 보겠습니다.

정수형 변수를 선언하면 R,G,B 연결한 핀에 맞게 값을 초기화 시켜줍니다.

그리고 각각 OUTPUT 모드로 초기화 시켜줍니다.

random() 함수는 다음과 같습니다.

random(n) => 0 ~ n 까지 임의의 자연수

각각 핀에 아날로그 출력 값을 랜덤으로 설정하였습니다.

그러면 다음과 같이 빛의 색이 무작위하게 변화하게 됩니다.

오늘은 RGB의 정의와 빛의 색 구현의 원리, 그리고 RGB 모듈과 아두이노를 활용해보았습니다.

다음 글에서는 좀 더 유익한 정보를 찾아뵙겠습니다. 감사합니다.

안녕하세요. 오늘은 터치 센서의 구동원리에 대하여 간단히 알아보고 아두이노와 활용해보겠습니다.

아두이노에는 다양한 입력기기가 있습니다.

예를들자면 버튼, 조이스틱, 초음파 센서, 물체 감지센서 등이 있습니다.

터치 센서는 스마트폰을 시작으로 다양한 전자기기에서 입력기기로 활용되고 있습니다.

이를 아두이노에 활용한다면 다양한 프로젝트를 만드는데 도움이 될 것 입니다.

차례

1. 정전시 터치 센서의 원리

2. 터치 센서 TTP223

2. 아두이노와 터치 센서

1. 정전식 터치 센서의 원리

터치 센서는 크게 두가지 방식이 있습니다. 정전식과 감압식입니다.

거의 모든 기기에서는 정전식을 사용하고 있습니다.

정전식 터치의 원리는 사람이 가지고있는 정전기를 이용한 방식입니다

스크린에 전류를 흐르게하고 사람이 손을 가져다 되면 정전기에 의해 전자가 끌려가게 되고

전류가 변하게 되어 인식하는 원리입니다.

터치스크린 원리 자세히 알아보기 ! ( 링크입니다. )


2. 터치 센서 TTP223

이번에 사용할 터치 센서 모듈은 TTP223 입니다.

위 그림에서 볼 수 있듯이 터치센서 패드가 있습니다.

VCC와 GND전원을 연결하면 저곳에 전류가 흐로고 위에 설명했듯이 손을 가져다 대면 전류가 변하고 인식을 하게 됩니다.

SIG핀에 데이터를 입력받을 아두이노핀에 연결해주시면 됩니다.


3. 아두이노와 터치 센서

아두이노와 터치 센서를 활용하여 LED밝기를 3단계 조절하는 예제를 해보겠습니다.

다음과 같이 회로를 구성합니다. (회색 판이 터치센서 모듈입니다.)

터치 센서의 SIG핀을 6번핀에 연결했습니다.

그리고 터치 센서가 인식을 했을 때 3번핀으로 전압을 줘서 LED가 밝아지는 방식입니다.

그런데 여기서 터치 1번당 밝기가 1단계씩 올라가서 3단계까지 올라가는 방식으로 코딩해보겠습니다.

sig는 터치센서의 인식 데이터 값을 받을 핀번호 입니다.

마찬가지로 int led = 3; led를 출력할 때 쓸 핀번호를 초기화 시킵니다.

level 은 터치할 때 마다의 단계를 나타내기 위한 정수형 변수입니다.

boolean turnON은 센서가 인식되는 상태인지 아닌지를 구분하기 위한 논리자료형 입니다.

setup()에서 각각 핀모드를 초기화 해줍니다.

먼저 led를 단계별로 인식할 수 있게 만드는 함수 void fuc() 부터 보겠습니다.

void fuc()

state 가 1일 경우는 터치 센서가 인식되고 있는 경우 입니다.

state가 1일 경우 turnON = true 로 초기화 시킵니다.

그리고 turnON이 true고 state = 0 이 된다면 한번 인식되었다가 인식이 끝났다는 것을 뜻하게 됩니다.

그러면 level을 +1 연산 시켜줍니다. 

총 3단계 까지 있으므로 level이 4가되면 0으로 초기화 시켜줍니다.

즉, 계속 터치센서에 인식을 시켜도 시간에 상관없이 단계별로 딱 맞게 구분 지을 수 있습니다.

void loop()

이제 level의 값에 따라서 led의 analogWrite의 출력값을 다르게 설정하면 완성됩니다.

예제 동영상입니다.

감사합니다.

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

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

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

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

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


차례

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도로 회전하게 설정하였습니다.

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

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

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

감사합니다.


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

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

오늘 알아볼 릴레이는 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