코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-13 16:28:23
Touch wheel센서를 사용해보자.
터치센서는 지정한 영역을 터치하면 그 영역에 해당하는 특정값을 출력해주거나 시그널을 보내는 센서이다.
터치센서의 원리는 사람의 몸을 통한 기전력을 기준으로, 사람의 손에 의해 터치센서 입력부를 만졌을 때 표면의 기전력의 세기를 체크하여 검출하는 센서이다.
touch wheel센서는 둥근 모양으로 예전 i-pod쓰신 사용자라면 어떻게 생겼고 무슨 기능을 하는지 쉽게 와 닿을 것이다.
touch wheel센서는 둥근 도넛 모양으로 부위마다 특정값을 지니고 있다. 그 영역을 만지게 되면 특정값이 전송되어 출력시킬 수 있거나 특정 이벤트를 발생시킬 수 있다.
터치센서는 현재 많은 분야에서 쓰인다. 감압식과 정전식이 있는데 많이 쓰이는 방식은 정전식이고 가장 대표적인 분야라 하면 스마트폰과 태블릿pc일것이다.
터치패널은 투명하다는 차이점이 있으나 이 역시 사람이 접촉하였을때 감지하고 특정 값을 출력하는 원리는 같다.
아두이노에 터치센서를 응용한다면 종이피아노같은 프로젝트 또한 응용이 가능할 것이고 각종 사람과의 상호작용을 통한 효과를 발생시키는 일련의 프로젝트를 작업하는데 도움을 줄 것이다.
NO | 부품명 | 수량 | 상세정보 |
1 | 아두이노 보드 (오렌지보드) | 1 | |
2 | 브레드보드 | 1 | |
3 | touch wheel센서 | 1 | |
4 | 케이블 | 5 |
부품명 |
아두이노 보드 (오렌지보드) |
브레드보드 | touch wheel센서 | 케이블 |
부품사진 |
#include <Wire.h>
#include "mpr121.h"
int key = 0;
void setup() {
//시리얼통신을 초기화하고 통신 속도를 19200으로 설정
Serial.begin(19200);
Wire.begin();
CapaTouch.begin();
delay(500);
Serial.println("START");
}
void loop() {
//키패드에서 값을 읽어온다
key = CapaTouch.keyPad();
//패드에서 읽어온 값에 따라 각 조건에 맞게 값을 출력한다
if (key==1) {
Serial.print("wheel:");
Serial.println("0");
}
if (key==4) {
Serial.print("wheel:");
Serial.println("1");
}
if (key==7) {
Serial.print("wheel:");
Serial.println("2");
}
if (key==11) {
Serial.print("wheel:");
Serial.println("3");
}
if (key==2) {
Serial.print("wheel:");
Serial.println("4");
}
if (key==5) {
Serial.print("wheel:");
Serial.println("5");
}
if (key==8) {
Serial.print("wheel:");
Serial.println("6");
}
if (key==0) {
Serial.print("wheel:");
Serial.println("7");
}
if (key==3) {
Serial.print("wheel:");
Serial.println("8");
}
delay(200);
}
소스를 사용하기 위해서는 특정 라이브러리가 필요하다.
라이브러리 내려받기
위 링크로 가면 라이브러리를 받아서 사용할 수 있다.
받은파일을 아두이노가 설치된 폴더의 libraries에 압축해제한다면 사용이 가능하다.
외부라이브러리 사용방법
터치휠센서는 아두이노와 I2C통신으로 데이터를 송신한다. I2C통신을 하기 때문에 소스 머리부분에 #include <wire.h> 헤더파일또한 추가시켜주어야 한다.
I2C통신을 사용하기 때문에 아날로그 4번핀과 5번핀을 사용한다.
void setup() { //시리얼통신을 초기화하고 통신 속도를 19200으로 설정 Serial.begin(19200); Wire.begin(); CapaTouch.begin(); delay(500); Serial.println("START"); }
setup에서는 시리얼통신의 속도를 19200으로 설정하고 I2C통신을 초기화한다. 또한 터치센서 또한 초기화시킨다.
loop에서는 간단하게 터치센서가 감지한 영역에 맞게 값을 출력해주고 그 값에 따라 if문을 통해 분기하여 조건에 맞게 println을 통해 값을 출력한다.
간단한 소스이기 때문에 터치센서에 쓰인 번호에 맞게 숫자만 시리얼모니터에 출력했지만
응용이 가능하다면 특정 이벤트 함수를 넣어 좀 더 화려한 효과를 줄 수도 있다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!