티스토리 뷰

이번에 다루어 볼 내용은 라즈베리 파이의 GPIO를 이용하여 LED와 

SWITCH를 제어하는 것입니다

 

준비물 부터 소개하겠습니다.

 

LED와 SWITCH를 제어하려면 당연히 LED, SWITCH가 필요하고 ,

BREADBOARD와 T자 모양으로 생긴 T코블러가 필요합니다.


T코블러를 자세히 보면 아래와 같습니다.

 

 

다음으로 , 라즈베리파이의 GPIO 구조를 살펴보겠습니다.

위의 핀마다 T자형 코블러에 다 적혀있어서 알아보기가 쉬웠습니다.


다음은, 포트 제어를 하기위한 터미널에 입력할 명령문 입니다.

$ sudo apt-get update
$ sudo apt-get upgrade
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ git pull origin
$ ./build

이제 포트제어를 하기위한 설정은 다 한것이죠?


다음은 , GPIO 내부에 설정된 값을 살펴보기 위한 방법입니다.

아래와 같은 명령어를 입력하면 아래와 같이 내부 설정값이 표기되어 출력됩니다. 제어하기 위해 이 부분은 필수겠죠?


$ gpio readall

 

 

GPIO를 다루기 위한 몇가지 명령어를 소개하겠습니다.


$ gpio –g mode 00 output 
00번 output으로 설정


$ gpio –g write 00 1
00번의 출력을 1로 설정

$ gpio –g mode 00 input
00번 GPIO포트를 input으로 설정


이제 몇가지 동작을 구현해 볼건데 준비 되셨나요??



먼저, 처음으로 해볼 동작은 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
29
30
31
#!/bin/bash
gpio -g mode 20 input
gpio -g mode 20 up
gpio -g mode 5 output
gpio -g write 5 0
gpio -g mode 6 output
gpio -g write 6 0
gpio -g mode 13 output
gpio -g write 13 0
gpio -g mode 19 output
gpio -g write 19 0
 
led= 1
echo "Domino "
while true; do
    sw=`gpio -g read 20`
    echo $sw
    if [ $sw -eq 0 ]; then
        while true; do
        for i in 5 6 13 19
            do
                ((led^=1))            
                echo "start"                
                gpio -g write $i 1
                sleep 0.5
                gpio -g write $i 0
            done
        done    
    fi
done
 
cs

 

동작되는 과정 입니다.

다음으론 LED로 369를 보여주는것입니다.




3 6 9 가 들어간 순서에서 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
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
 
gpio -g mode 5 output
gpio -g mode 6 output
gpio -g mode 13 output
gpio -g mode 19 output
 
gpio -g mode 21 input
gpio -g mode up
 
temp_array=(5 6 13 19)
 
 
 
while true; do
        sw=`gpio -g read 21`
        if [ $sw -eq 0 ]; then
                for i in {1..100}
                do
                        cnt=$((($i-1)%4))
                        var=$(($i%10))
                        var2=$(($i/10))
 
                        if [ $var -eq 3 ] || [ $var -eq 6 ] || [ $var -eq 9 ]; then
                        gpio -g write ${temp_array[$cnt]} 0
                        sleep 1
 
                        elif [ $var2 -eq 3 ] || [ $var2 -eq 6 ] || [ $var2 -eq 9 ]; $
                        gpio -g write ${temp_array[$cnt]} 0
                        sleep 1
 
                        else
                        gpio -g write ${temp_array[$cnt]} 1
                        sleep 0.5
                        gpio -g write ${temp_array[$cnt]} 0
                        sleep 0.5
                        fi
                done
        fi
done
cs


동작 되는 과정입니다.


 



이상 부족한 저의 글 끝까지 봐주셔서 감사합니다.






 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 29 30 31