반응형


아두이노와 터치센서를 이용하여 LED를 제어하는 소스입니다. 스마트홈 시스템이 있는 집에서는 쉽게 찾아볼 수 있는 터치해서 전등 ON/OFF 기능입니다. 


Arduino + Touch Sensor ! LED 켜고 끄는 방법!


연결

아래의 그림과 같이 연결을 해줍니다. GND를 한 곳으로 몰아서 연결을 해도 되지만 점프선을 몇개 사용하지 않기에 아래처럼 연결을 하도록 하겠습니다. 터치센서의 Vcc 는 5V 또는 3.3V를 사용해도 무방합니다. LED를 연결할 때에는 200옴정도의 저항을 하나 연결해 주시는 것이 좋습니다.



 Touch Sensor

Arduino UNO 

Signal

D8 

 VCC

5V 

 GND

 GND



LED 

Arduino UNO 

 Anode, LONG[긴 다리]

D13 

 Cathode, SHORT[짧은 다리]

 GND




소스코드1

 - 터치센서를 터치했을 때 LED가 켜지고 터치를 하지 않으면 LED가 꺼지는 소스입니다.

   시리얼 모니터를 통해서 TOUCH, NOT TOUCH로 터치상태를 구분해서 나타내줍니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int touchSensor = 8;  // TouchSensor핀 설정
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");
  }
 

}
cs

소스코드2

- 스탠드처럼 한번 터치하면 켜지고 다시한번 터치하면 꺼지는 소스입니다. touchsensor는 터치를 하지 않으면 LOW값을 날리기 때문에 previous값 즉 이전상태의 값은 터치를 하지 않는 상태에서는 항상 LOW입니다. 터치를 계속 하고 있다면 loop를 계속 돌면서 previous가 HIGH가 될 수 있지만 손을 떼는 순간 LOW로 값이 변합니다.


previous가 없다면 터치를 했을 때 reading == HIGH 터치를 하지 않았을때 reading == LOW 이기에 reading의 값을 고정시킬 수 없습니다. 


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;  // TouchSensor핀 설정
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




이렇게해서 아두이노와 터치센서를 이용해서 LED를 켜고 끌 수 있는 방법을 알아보았습니다. 생각보다 참 쉽죠? 어려운 것이 아니지만 활용도가 생각보다 높기에 자주 사용하실 수 있는 방법입니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기