아두이노와 터치센서를 이용하여 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를 켜고 끌 수 있는 방법을 알아보았습니다. 생각보다 참 쉽죠? 어려운 것이 아니지만 활용도가 생각보다 높기에 자주 사용하실 수 있는 방법입니다.
최근댓글