본문 바로가기
IoT/라즈베리파이

[라즈베리파이] SOS 프로그램 만들기

by Foxy현 2022. 10. 11.
728x90
반응형

안녕하세요! 이전 글에서는 라즈베리파이 프로그램 제작을 위한 간단한 파이썬 기초 문법에 대해서 알아보았고,

2022.10.06 - [IoT/라즈베리파이] - 라즈베리파이 - 특징 및 기초 Python

 

라즈베리파이 - 특징 및 기초 Python

"임베디드 시스템" : 마이크로 프로세서를 내장하여 특정 기능을 수행하도록 제작된 시스템 그중 하나로 쓰이는 라즈베리파이에 대해 알아보도록 하겠습니다. 라즈베리파이는 작은 크기의 싱글

foxyprogramming.tistory.com

가장 최근 라즈베리파이 글에서는 LED를 ON / OFF 하는 기능을 공부했었죠~

2022.10.06 - [IoT/라즈베리파이] - 라즈베리파이 - LED On / Off

 

라즈베리파이 - LED On / Off

안녕하세요! 이전 글들은 라즈베리파이의 간단한 설명과 파이썬에 대한 내용, GPIO 모듈에 대해 알아보았습니다. 2022.10.06 - [IoT/라즈베리파이] - 라즈베리파이 - GPIO 모듈 라즈베리파이 - GPIO 모듈

foxyprogramming.tistory.com

 

이런 공부 내용을 바탕으로 SOS 프로그램을 만들어보겠습니다!

 

가볼까용?


먼저 필요한 라이브러리를 import 해줍니다

import RPi.GPIO as IoPort
import time

 

전에 배웠던 함수를 사용해볼게요!

def 함수(변수1,변수2...)
	실행문

의 구조를 가지고 있다고 말씀드렸었는데요

 

응용해봅시다!

 

우리는 LED를 켜고 끄는 동작을 하는 함수를 만들어볼 겁니다

def LedOn(Port,Delay):
  IoPort.output(Port,True)
  time.sleep(Delay)

* LedOn이라는 함수명을 사용합니다

* Port와 Delay는 지역 변수이며 LedOn 함수 내에서만 사용 가능합니다

* Port 변수에 적힌 포트로 출력됩니다

* Delay 시간만큼 대기합니다

 

def LedOff(Port,Delay):
  IoPort.output(Port,False)
  time.sleep(Delay)

* Port 변수의 출력 신호를 종료합니다

 

여기까지 따라오는 데 무리가 없을 것 같은데요!

이제 이 LedOn / LedOff 함수를 사용하여 이중 함수를 만들어보겠습니다!!

SOS 함수 전체를 만드는 것이 아닌 S 함수, O 함수를 만듭니다

def Send_S():
  LedOn(Led,0.4)
  LedOff(Led,0.4)
  
def Send_O():
  LedOn(Led,0.4)
  LedOff(Led,1.2)
  LedOn(Led,1.2)
  LedOff(Led,0.4)
Led = 26
IoPort.setmode(IoPort.BCM)
IoPort.setup(Led,IoPort.OUT)
LedOff(Led,2)

Send_S()
Send_O()
Send_S()

다음 함수 활용 부분입니다

BCM모드의 포트 번호를 입력하고, 2초간 종료시켜 SOS 신호를 확인할 준비를 합니다

2초가 지나면 SOS 함수가 실행되어 Led가 On / Off 되는 것을 확인할 수 있습니다.

 

이런 회로 구성이 되겠네요! 포트 번호는 임의로 지정한 것이니 실제 포트 번호와는 차이가 있습니다.

 


오늘 배운 것을 요약해보겠습니다

  • 함수를 이용해서 반복되는 코드를 줄일 수 있었다.
  • 함수 안에서 함수를 사용할 수 있다

함수를 사용하여 반복되는 프로그램을 만들 수 있다를 설명하고 싶었던 것이지, 실제 SOS 신호와는 차이가 있음을 유의하시길 바랍니다!

 

 

 

 

 

 

 

728x90
반응형

'IoT > 라즈베리파이' 카테고리의 다른 글

[라즈베리파이] - LED On / Off  (0) 2022.10.06
라즈베리파이 - GPIO 모듈  (0) 2022.10.06
라즈베리파이 - 특징 및 기초 Python  (0) 2022.10.06