반응형

아두이노에 터치센서를 연결해서 인체가 닿으면 HIGH 신호를 보내주고 그렇지 않으면 LOW 신호를 보내도록 할 수가 있습니다. 가끔 쇼핑몰 같은데 가면 손으로 터치를 하면 문이 열리는 그런 시스템을 볼 수가 있는데 이런 센서가 사용된 것입니다. 터치의 감지는 예전의 PDA나 네비게이션 같은데 많이 쓰이던 감압식과 요즘 스마트폰에서 쓰이는 정전식 방식이 있습니다. 감압식은 손가락이나 터치펜 등으로 누르는 압력을 감지하여 작동하는 방식이고 정전식은 손의 전류를 감지해서 작동하는 방식 입니다. 요즘은 거의 정전식이 많이 쓰이죠. 지금 소개하는 센서도 몸에 미세하게 흐르는 전류를 감지해서 작동하는 터치센서 입니다.


터치센서의 모습 입니다. 위와 같이 터치감지부에서 감지하면 Signal 단자로 HIGH 신호를 보내도록 되어 있습니다. 전원은 5V를 사용 합니다. 하지만 테스트 결과 3.3V 에서도 무난히 작동 합니다.


■ 연결


아래의 사진과 같이 아두이노에 터치센서를 연결하고 이를 감지해서 LED 를 켜고 끄려고 LED를 연결했습니다.



 Touch Sensor

 Arduino Uno

 Signal

 D8

 VCC

 5V or 3.3V

 GND

 GND


 LED

 Arduino Uno

 Anode, 다리 긴 쪽

 D13

 Cathode, 다리 짧은 쪽

 GND

 



■ 소스1


손가락이 터치될 때만 LED 가 켜지고 떼면 바로 꺼지는 소스 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int touchSensor = 8;  // 터치센서 핀 설정
int ledPin = 13;       // LED 핀 설정
 
void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);  
  pinMode(touchSensor, INPUT);
}
 
void loop() {
  //터치값 읽음
  int touchValue = digitalRead(touchSensor);
   
  if (touchValue == HIGH){      // 터치됨
    digitalWrite(ledPin, HIGH);
    Serial.println("TOUCHED");
  } else {                      //터치 안됨
    digitalWrite(ledPin,LOW);
    Serial.println("NOT TOUCHED");
  }
 
  //delay(1000);
}
 
cs



터치에 따라 시리얼모니터의 값이 변합니다. 터치하면 TOUCHED 아니면 NOT TOUCHED 를 출력 합니다. 소스의 delay(1000); 부분은 센서의 값을 읽는 속도가 너무 빨라서 넣어 주었으며 사용하고자 하는 용도에 맞게 적절히 조절하거나 빼버려도 상관 없습니다.






■ 소스2


손가락이 터치되면 LED가 켜지고 다시 한 번 터치하면 꺼지는 소스 입니다. 스위치식 스탠드도 이 소스와 터치 센서를 이용하면 터치식으로 바꿀 수도 있겠네요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int touchSensor = 8;  // 터치센서 핀 설정
int ledPin = 13;       // LED 핀 설정
 
int state = LOW;      // LED 상태
int reading;          // 터치센서 상태
int previous = LOW;   // 터치센서 이전 상태
 
void setup()
{
  pinMode(touchSensor, INPUT); // 터치센서 를 설정
  pinMode(ledPin, OUTPUT);    // ledPin 설정
}
 
void loop()
{
  reading = digitalRead(touchSensor);  // touchSensor 상태 읽음
 
  if (reading == HIGH && previous == LOW) {
    if (state == HIGH)    // ledPin 가 HIGH 면 LOW 로 바꿔준다.
      state = LOW;
    else                  // ledPin 가 LOW 면 HIGH 로 바꿔준다.
      state = HIGH;
  }
 
  digitalWrite(ledPin, state);
 
  previous = reading;
}
cs



이상 스위치 대신 사용할 수 있는 터치센서에 대해서 알아보았습니다.



반응형

+ Recent posts