[WAT-S009]중요한 아두이노 센서키트 9번째 [터치 감지 센서]

[WAT-S009] 터치 감지 센서

본 제품은 [WAT-SK114] 중요한 아두이노 센서키트(초급)  9번째 모듈로 터치 감지 센서입니다.
손으로 터치했을 경우 감지합니다.

 

 

핀 번호

번호 핀명 I/O 기능
 1 AO Analog Output 아날로그 출력
 2 G GND GROUND
3 + VCC VCC
4 DO Digital Output 디지털 출력

WAT-Arduino128 예제

핀 연결
번호 I/O WAT-Arduino128
 1 AO x
 2 G GND
3 + 5V
4 DO PF0(A0)

아두이노 소스코드

최신 소스코드는 [파일]=>[예제]=> [WhiteAT]=> [Sensor37] => [09_Touch]  에 있으며
라이브러리는 아두이노 개발환경 (https://docs.whiteat.com/?page_id=5449) 을 참조하세요

/*
 [WAT-SK114]중요한 아두이노 센서키트(초급) 예제 중 9 번째
 WAT-Arduino128 과 터치 감지 센서 예제입니다.

 WAT-Arduino128 : https://kit128.com/goods/view?no=64
 [WAT-SK114] 중요한 아두이노 센서키트 (초급): https://kit128.com/goods/view?no=114
 [WAT-S009] 터치 감지 센서 모듈 : https://kit128.com/goods/view?no=355

 출처: http://whiteat.com/Arduino
*/ 

int S = A0; // INPUT PIN

// 프로그램 시작 - 초기화 작업
void setup()
{
 Serial.begin(115200); // 시리얼 통신 초기화
 Serial.println("Arduino Examples - [WAT-S009] Touch Sensor");
 Serial.println(" https://docs.whiteat.com/?p=1159");
 pinMode(S, INPUT);
}

void loop()
{
 if (true == IsTouchec(S))
 {
 Serial.println("Touched");
 }
 else
 {
 Serial.print(".");
 }
 delay(100);
}

bool IsTouchec(int p)
{
 int time = 0;
 do
 {
 if (HIGH == digitalRead(S)) return true;
 delay(1);
 } while (time++<15);
 return false;
}
결과 화면

 

Arduino UNO R3  예제

핀 연결
번호 I/O UNO R3
 1 AO x
 2 G GND
3 + 5V
4 DO 2

아두이노 소스코드

최신 소스코드는 [파일]=>[예제]=> [WhiteAT UNO]=> [Sensor37] => [09_Touch]  에 있으며
라이브러리는 아두이노 개발환경 (https://docs.whiteat.com/?page_id=5449) 을 참조하세요

/*
 [WAT-SK114]중요한 아두이노 센서키트(초급) 예제 중 9 번째
 UNO 와 터치 감지 센서[WAT-S009] 예제입니다.

 UNO R3 : https://kit128.com/goods/view?no=337
 [WAT-SK114] 중요한 아두이노 센서키트 (초급): https://kit128.com/goods/view?no=114
 [WAT-S009] 터치 감지 센서 모듈 : https://kit128.com/goods/view?no=355

 출처: http://whiteat.com/Arduino
*/ 

int S = 2; // INPUT PIN

// 프로그램 시작 - 초기화 작업
void setup()
{
 Serial.begin(115200); // 시리얼 통신 초기화
  Serial.println("Arduino Examples - [WAT-S009] Touch Sensor");
 Serial.println(" https://docs.whiteat.com/?p=1159");
 pinMode(S, INPUT);
}

void loop()
{
 if (true == IsTouchec(S))
 {
 Serial.println("Touched");
 }
 else
 {
 Serial.print(".");
 }
 delay(100);
}

bool IsTouchec(int p)
{
 int time = 0;
 do
 {
 if (HIGH == digitalRead(S)) return true;
 delay(1);
 } while (time++<15);
 return false;
}
결과 화면

제품 구매

[WAT-SK114] 중요한 아두이노 센서키트(초급) 은 https://kit128.com/goods/view?no=114 에서
[WAT-S009] 터치 감지 센서 모듈은  https://kit128.com/goods/view?no=355 에서 구매하실 수 있습니다.

9 댓글

  1. 황동하 응답

    if (HIGH == digitalRead(S)) return true;
    A0에 연결 해 놓고 위와 같이 읽어야 하나요?
    잘 안되는데요

    • 화이트앳 글쓴이응답

      안녕하세요.
      이 “터치감지 센서”는 아날로그 출력과 디지털 출력 2가지 모두 제공하는 모듈입니다.

      디지털로 HIGH, LOW 값을 받으시려면
      이 모듈의 4번핀에 A0 핀을 연결하여 디지털값으로 받으시면 됩니다.
      (A0 핀을 디지털 핀으로 사용하는 것입니다.)
      입력 설정을 꼭 해주셔야 합니다. pinMode(S, INPUT);

      아날로그 값으로 받는다면
      이 모듈의 1번핀에 A0핀을 연결하여 아날로그 값으로 받으시면 됩니다.

  2. 허니모카 응답

    이 센서는 손으로 터치하는 값은 입력을 못 받나요?
    자석으로 해도 값을 받지 못하는데…
    어떤것에 반응하는 것인가요?

    • 화이트앳 글쓴이응답

      손으로 터치했을 때 감지하는 센서입니다.
      반응 감도는 가변저항으로 조절할 수 있습니다.

      참고로 센서모듈에서 터치를 감지하면 가변저항 옆의 LED 가 켜집니다.

  3. 코드초보자 응답

    안녕하세요 ~ 항상 잘 보고있습니다.

    이 글을 보다가 문득 궁금한게 있어서요!

    while (time++<15);
    return false;
    }

    여기 부분 어떠한 역활을 하는지 알 수 있을까요??

    위에는 터치되면 1이 들어와서 값이 true로 반환되는 걸 알겠는데

    이부분은 도저히 이해가안되네요 ㅠㅠ 조언 좀 부탁드릴게요 ㅠㅠㅠ

    • 화이트앳 글쓴이응답

      안녕하세요.~

      실제 코드에 적용하실 때에는 아래코드 1줄만 사용하셔도 됩니다.~
      if (HIGH == digitalRead(S)) return true;

      while문을 사용하여 15us 동안 체크한 이유는 시리얼 모니터링을 쉽게 하기 위해서입니다.
      (별 다른 이유는 없습니다.^^)
      몇 번 실험을 하다보니 저 정도의 딜레이에서 결과값 보기가 편해서 그런거였습니다.^^

      결과를 쉽게 이해하시도록 딜레이를 넣은 건데 오히려 혼란스럽게 해드렸나 봅니다. ㅠㅠ

      • 코드초보자 응답

        아하 안그래도 ㅠㅠ 전혀 필요없을거같은데 있길래

        너무 궁금해서 조문을 구해봤어요 !!

        친절한 답변 감사합니다 좋은하루 보내세요 ~~

황동하에 답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다