중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

키패드 센서 x 좌표값 터치센서

2014-08-14 13:52:50

개요

터치센서 중 숫자 키패드센서와 좌표센서를 사용하여 보자.
각자의 역할은 스마트폰이나 휴대폰에서 명확하게 쓰임새를 찾아볼 수 있다. 여기에 쓰인 터치센서는 원초적인 기능만을 보여줄 수 있는 센서들이고
이 센서들을 응용하여 사용하는 예로는 대표적으로 ATM기기를 볼 수 있다. 좌표값에 따라 버튼을 누를 수 있고 키패드센서를 활용하면 터치 영역에 따라 버튼을 클릭하는 효과를 줄 수도 있다.




스마트폰이나 태블릿pc의 터치스크린 또한 이와 같은 원리로 작동한다. 터치센서의 원리는 생활 곳곳에서 쓰이고 있으며 어떻게 하면 터치 감도를 올릴 수 있을지 어떻게 하면 오차를 최소로 줄일 수 있는지 앞으로도 많은 연구과제와 많은 응용 프로젝트들이 넘쳐나는 가능성 있는 센서, 분야라고 볼 수 있다.


 

동영상


 

 

 

부품 목록

 

NO 부품명 수량 상세정보
1 아두이노 보드 1  
2 브레드보드 1  
3 키패드 센서 1  
4 좌표값 센서 1  
5 케이블 5  

 

부품명 아두이노 보드 브레드보드 키패드 센서 좌표값 센서 케이블
부품사진

 

하드웨어 making

전자 회로도 


 

 

브레드 보드

좌표값 센서




키패드 센서

 

 

소프트웨어 coding

좌표값 센서

// #
// # Editor    : Jiang from DFRobot
// # Data      : 19.11.2012
// # E-Mail    : jianghao0716@gmail.com
 
// # Product name  : Capacitive touch pad 
// # Version  : 0.4
// # Power supply: 3.3v
// # Connection:
// #       SDA (MPR121) -> PIN A4 (Arduino)
// #       SCL (MPR121) -> PIN A5 (Arduino)
// #       IRQ (MPR121) -> PIN A2 (Arduino) 
 
#include <Wire.h>
#include <mpr121.h>
 
int X ;           // x좌표값 변수
int Y ;           // y좌표값 변수
 
// =========  setup  =========
void setup()
{ 
  //  initialize function
  Serial.begin(19200);
  Wire.begin();
  CapaTouch.begin();
 
  delay(500);
  Serial.println("START"); 
}
 
 
// =========  loop  =========
void loop()
{   
  X=CapaTouch.getX();              //센서로부터 x좌표의 값을 받는다.
  Y=CapaTouch.getY();              //센서로부터 y좌표의 값을 받는다.
  if(X>=1&&X<=9&&Y>=1&&Y<=13)
   {                                 // 지정한 범위에 속할 경우만 값을 출력하고 아니면 출력하지 않는다
      Serial.print("X=");
      Serial.print(X);
      Serial.print("  Y=");
      Serial.println(Y); 
   }
  delay(200);
}

 

키패드 센서

 

/*
 TouchWheel.pde
 MPR121 WhellPad Example Code
  
 by:Waiman Zhao
 Mail:Binpower@foxmail.com
 created on: 11/2/14
 license: CC-SA 3.0
  
 Hardware: 3.3V Arduino Pro Mini
           SDA -> A4
           SCL -> A5
           IRQ -> D2
*/
 
 
#include <Wire.h>
#include <mpr121.h>
 
int key = 0;
 
 
// =========  setup  =========
void setup()
{ 
    // 통신모드 setting 및 initialize
  Serial.begin(19200);
  Wire.begin();
  CapaTouch.begin();
 
  delay(500);
  Serial.println("START"); 
}
 
 
// =========  loop  =========
void loop()
{
  key=CapaTouch.keyPad(); //키패드로부터 값을 받는다
 
  if (key==11)  //11의 값을 받을 경우에는 *기호 출력
  { Serial.print("key:");
  Serial.println("*");
  }
  else if(key==12) //12의 값을 받을 경우에는 #기호 출력
  {
    Serial.print("key:");
  Serial.println("#");
  }
  else if(key>=0){
    Serial.print("key:"); 
    Serial.println(key); 
  }
    delay(200);
}


위 센서의 경우 장점은 사용하기 편하다는 장점이 있다. 두개 다 외부라이브러리를 사용하여 센서를 작동시키는데

라이브러리 내려받기

위 링크로 가면 라이브러리를 받아서 사용할 수 있다. 받은파일을 아두이노가 설치된 폴더의 libraries에 압축해제한다면 사용이 가능하다.

외부라이브러리 사용방법

실질적인 작동은 1문장으로 끝난다. 
좌표값 센서의 경우에는 CapaTouch.getX(); CapaTouch.getY();를 통해 X값 Y값을 센서로부터 쉽게 받아올 수 있으며
키패드 같은 경우에는 CapaTouch.keyPad();를 통해 센서로부터 키패드값을 쉽게 받아올 수 있다.

외부라이브러리를 사용하기 때문에 복잡하게 이것저것 할 필요가 없이 구현해 놓은 함수들을 사용하기만 하면 된다. 

소스자체만 보면 단일센서나 LED하나 깜빡이기 정도의 수준으로 쉽게 따라할 수 있는 수준이다.

I2C통신과 Serial통신만 할 줄 안다면 다른 센서나 LED, 모터를 달아서 응용또한 쉽게 가능하다.

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

키패드센서, 좌표값센서, 아두이노