코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2015-05-29 14:34:58
요즘 가전기기를 보면 정겹던 똑딱이 버튼은 사라지고 있다는 것을 느끼실 겁니다.
대신 터치 버튼이 사용되면서 더욱 편리하고 더욱 고급스러운 가전 제품이 나오고 있습니다.
아두이노를 처음 접하신 분들이 '버튼으로 LED 제어하기'를 실습하면서 왠만한 선택형 스위치는
일반 버튼으로 사용하시는 분들이 많습니다. "아두이노는 일반 버튼만 사용할수 있다!!"는 고정관념을
벗겨드리기 위해 오늘은 라이브러리 만으로 정전 용량 터치 센서를 구현 할 수 있는 방법을 알려드리겠습니다.
이번 튜토리얼의 가장 핵심은, 저항과 아두이노만으로 할 수 있다는 점이 되겠습니다.^^
앞서 정전 용량 터치 방식의 원리에 대해서 아주 간단히 살펴보겠습니다.
이름 그대로 정전 용량의 변화를 인식하여 특정 변화 이상일 경우 다른 기능을 수행 할 수 있도록 하는 원리입니다.
하나의 핀(Send Pin)에서 출력신호를 보내고 다른 한쪽(Receive Pin)에서는 그 신호를 받음으로써 발생한 전하량을 체크합니다.
여기서 신호를 받는 쪽에서 인체(접지역할)가 접촉 할 경우 인체는 전하를 끌어 충전하는 하나의 커패시터 역할을 하게 됩니다.
새롭게 발생한 인체?! 커패시턴스는 Receive Pin쪽의 커패시턴스와 병렬형태가 되고 커패시턴스 병렬 연결 법칙에 따라
정전용량은 더욱 커지게 됩니다. 따라서 커패시터가 갖게되는 저항성분(임피던스)이 증가하여 결과적으로 Receive Pin에
입력되는 전류량이 감소하게 되어 아두이노가 그 변화를 감지하게 되는 원리입니다.
아두이노와 저항으로 정전 용량 터치 센서를 구현해 봅니다.
NO | PART | QTY | ETC |
1 | Orange Board | 1 | |
2 | Resistor | 2 | 10K Ohm |
3 | Resistor | 2 | 229 Ohm |
4 | LED | 2 | |
5 | Bread Board | 1 | Small Size |
6 | Jumper Cable | - |
앞서 말씀드린 대로 특별한 센서나 모듈은 사용하지 않았습니다. ^^
<튜토리얼 에서는 터치 패드를 따로 사용하지 않고 점퍼 케이블에 접점을 만들어 테스트해 봅니다>
#include <CapacitiveSensor.h>
CapacitiveSensor cs_8_9 = CapacitiveSensor(8,9); // 8번이 송신핀, 9번이 수신핀 <1번 터치패드>
CapacitiveSensor cs_10_11 = CapacitiveSensor(10,11); // 10번이 송신핀, 11번이 수신핀 <2번 터치패드>
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop()
{
long SEN1 = cs_8_9.capacitiveSensorRaw(30); // 1번 터치패드 값 수신 <접촉시 55~60의 정수값 출력>
long SEN2 = cs_10_11.capacitiveSensorRaw(30); // 2번 터치패드 값 수신 <접촉시 55~60의 정수값 출력>
Serial.print( SEN1 );
Serial.print(" ");
Serial.println( SEN2 );
digitalWrite(2,LOW);
digitalWrite(3,LOW);
if(SEN1 > 50) // 1번 터치패드 접촉시 1번 LED 점등
{
digitalWrite(2,HIGH);
}
if(SEN2 > 50) // 2번 터치패드 접촉시 2번 LED 점등
{
digitalWrite(3,HIGH);
}
}
소스코드는 매우 간단합니다. 일반 버튼 대신 CapacitiveSensor 라이브러리를 사용하시면 됩니다.
CapacitiveSensor 라이브러리는 다음 링크에서 다운로드 하시면 됩니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!