2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

사물인터넷(IOT)/라즈베리파이

5. 라즈베리파이 GPO 디지털핀 제어하기

파아란기쁨1 2023. 3. 22. 16:06
반응형

1. 디지털 신호란?

디지털 신호는 1과 0으로 된 신호이다. 즉 어떤 신호의 구분이 HIGH 또는 LOW 두가지만 존재한다는 것을 의미한다.

 

2. 라즈베리파이 핀맵

3. 회로구성

6번 GND 에 각각 220옴의 저항을 LED의 - 극에 연결 하고 16,20,21번핀을 LED의 + 극에 연결한다.

 

4. GPIO 모듈 불러오기

import RPi.GPIO as GPIO

5. 핀번호 할당방법

GPIO.setmode(GPIO.BOARD)

GPIO.BOARD로 정의하면 핀 맵에 1~40까지 써있는 숫자로 핀번호를 사용하겠다는 의미이다. 예를 들어 36번핀은 BCM16 인데 프로그램에서는 36로 사용하겠다는 의미이다.

GPIO.setmode(GPIO.BCM)

GPIO.BCM으로 정의하면 BCM 뒤의 번호로 핀번호를 사용하겠다는 의미이다. 예를 들어 36번핀은 BCM16인데 프로그램에서는 16으로 사용하겠다는 의미이다.

 

6. 핀번호 초기값 설정

GPIO.setup(pin, GPIO.OUT,initial=GPIO.LOW)

핀 번호를 출력 모드로 사용하고 초기값은 LOW 상태로 시작하도록 설정한다.

 

7. 핀번호에 값을 출력

GPIO.output(pin, GPIO.HIGH)

핀번호에 HIGH를 출력함

GPIO.output(pin, GPIO.LOW)

핀번호에 LOW를 출력함

 

8. 대기시간 추가

import time

time.sleep(1)

time 모듈을 import 후 time.sleep(초) 로 대기한다.

 

9. GPIO핀 해제

GPIO.cleanup(pin)

종료하기 전에 GPIO핀을 해제해 주어야 한다. 

cleanup() 실행하지 않고 종료할 경우 그 다음 실행시 경고 메시지가 표시된다.

 

10. BCM 16,20,21 세개를 차례대로 1초간 불이 들어 오는 코드

import RPi.GPIO as GPIO
import time

def led(pin, t):
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(pin, GPIO.OUT)

    GPIO.output(pin, GPIO.HIGH)
    time.sleep(t) 
    GPIO.output(pin, GPIO.LOW)

    GPIO.cleanup(pin)

led(16, 1)
led(20, 1)
led(21, 1)

 

16,20,21 번 LED가 순서대로 1초씩 켜졌다가 꺼진다.

 

11. 무한 반복하기

import RPi.GPIO as GPIO
import time

def led(pin, t):
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(pin, GPIO.OUT)

    GPIO.output(pin, GPIO.HIGH)
    time.sleep(t) 
    GPIO.output(pin, GPIO.LOW)

    GPIO.cleanup(pin)
    
while True:    
	led(16, 1)
	led(20, 1)
	led(21, 1)
반응형