이번에는 라즈베리파이에 스위치를 연결해서 led를 제어하는 방법을 알아볼게요!!
혹시 아직 led제어를 해보지 못했다면 아래 글을 먼저 보고 따라해주시기 바랍니다
https://hoho325.tistory.com/215
스위치(switch)
우선 스위치에 대해서 간략히 알아보면 스위치는 아래와 같이 생겼습니다
총 4개의 단자가 있으며, 1번과 3번이 이어져 있고 2번과 4번이 이어져 있습니다
버튼을 누르기 전과 누른 후 상태는 위 그림과 같습니다
누르기 전에는 두 선이 연결되어 있지 않지만, 누르면 두 선이 연결됩니다
저항(Resistor)
스위치로 led를 제어하기 위해서는 다음 두 저항이 필요합니다
위에는 220옴, 아래는 10K 옴 저항입니다
220옴은 led 연결에, 10k 옴은 스위치 연결에 사용하여 led와 보드를 보호하려고 합니다
회로 연결
아래와 같이 회로를 연결합니다
led는 -극은 GND, +극은 저항과 연결 후 wiringpi 1번 핀(BCM 18번)에 연결합니다.
스위치는 한 쪽은 GND에 연결하고 다른 쪽은 저항과 연결 후 +5V에 연결합니다.
그리고 버튼이 눌렸는지 안눌렸는지 값을 읽어오기 위해 다른 쪽 저항 부분에서 wirngpi 4번(BCM 23번)에 연결합니다.
참고: https://wikidocs.net/30758
실제 연결한 모습은 위와 같습니다.
led 제어 C 코드
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
|
#include <stdio.h>
#include <wiringPi.h>
#define LED 1
#define SWITCH 4
int main(){
if(wiringPiSetup() == -1)
return -1;
// Mode 설정
pinMode(LED, OUTPUT);
pinMode(SWITCH, INPUT);
while(1){
if(digitalRead(SWITCH) == HIGH){
printf("Button was pressed\n");
digitalWrite(LED, HIGH);
}
else{
printf("Button was NOT pressed\n");
digitalWrite(LED, LOW);
}
delay(1000);
}
return 0;
}
|
cs |
wiringPiSetup, pinMode를 LED는 OUTPUT, SWITCH는 INPUT으로 설정합니다
그리고 swith의 값을 읽어서 눌렸으면(HIGH 이면) LED에 HIGH를 인가하여 불을 키고
그렇지 않으면 LOW를 인가하여 불을 끕니다
delay(1000)를 주어 버튼이 눌렸는지 눌리지 않았는지 1초마다 확인합니다
동작 영상