목차
[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 에서 구매하실 수 있습니다.
if (HIGH == digitalRead(S)) return true;
A0에 연결 해 놓고 위와 같이 읽어야 하나요?
잘 안되는데요
안녕하세요.
이 “터치감지 센서”는 아날로그 출력과 디지털 출력 2가지 모두 제공하는 모듈입니다.
디지털로 HIGH, LOW 값을 받으시려면
이 모듈의 4번핀에 A0 핀을 연결하여 디지털값으로 받으시면 됩니다.
(A0 핀을 디지털 핀으로 사용하는 것입니다.)
입력 설정을 꼭 해주셔야 합니다. pinMode(S, INPUT);
아날로그 값으로 받는다면
이 모듈의 1번핀에 A0핀을 연결하여 아날로그 값으로 받으시면 됩니다.
이 센서는 손으로 터치하는 값은 입력을 못 받나요?
자석으로 해도 값을 받지 못하는데…
어떤것에 반응하는 것인가요?
손으로 터치했을 때 감지하는 센서입니다.
반응 감도는 가변저항으로 조절할 수 있습니다.
참고로 센서모듈에서 터치를 감지하면 가변저항 옆의 LED 가 켜집니다.
저항 위의 것을 터치하면 감지하는건가요?
끝 쪽의 검은색 부품에 핀 하나가 있는데 그거 터치하시면 됩니다.^^
안녕하세요 ~ 항상 잘 보고있습니다.
이 글을 보다가 문득 궁금한게 있어서요!
while (time++<15);
return false;
}
여기 부분 어떠한 역활을 하는지 알 수 있을까요??
위에는 터치되면 1이 들어와서 값이 true로 반환되는 걸 알겠는데
이부분은 도저히 이해가안되네요 ㅠㅠ 조언 좀 부탁드릴게요 ㅠㅠㅠ
안녕하세요.~
실제 코드에 적용하실 때에는 아래코드 1줄만 사용하셔도 됩니다.~
if (HIGH == digitalRead(S)) return true;
while문을 사용하여 15us 동안 체크한 이유는 시리얼 모니터링을 쉽게 하기 위해서입니다.
(별 다른 이유는 없습니다.^^)
몇 번 실험을 하다보니 저 정도의 딜레이에서 결과값 보기가 편해서 그런거였습니다.^^
결과를 쉽게 이해하시도록 딜레이를 넣은 건데 오히려 혼란스럽게 해드렸나 봅니다. ㅠㅠ
아하 안그래도 ㅠㅠ 전혀 필요없을거같은데 있길래
너무 궁금해서 조문을 구해봤어요 !!
친절한 답변 감사합니다 좋은하루 보내세요 ~~