본문 바로가기
코딩/라즈베리파이 피코

라즈베리파이 피코 시리얼 통신 여러가지 사용법

by DIYver 2022. 7. 21.

이번에는 라즈베리파이 피코를 이용해서 PC와 시리얼 통신을 하는 여러가지 상황을 다뤄보려한다.
(해당 글은 Thonny 프로그램을 이용하여 라즈베리파이와 통신하므로
시리얼통신에 있어서 다른 프로그램과 차이가 있을 수 있다.)

 

1. 키보드 입력 받기
가장 기본이 되는 키보드 입력을 받아서 작동을 하는 코드이다.

user_name = input("로그인 이름을 입력하세요 : ")
while user_name != "DIYver":
    print("등록된 이름이 없습니다. 다시 입력해주세요.")
    user_name = input("로그인 이름을 입력하세요 : ")
print("DIYver님 안녕하세요 ~")

피코에 올려서 테스트를 해도 되고,
파이썬 자체에서 실행해도 될 정도니, 편한대로 하면 되겠다.
파이썬의 기초 코드이다.

input() 함수를 이용해서 키보드값을 받아올 수 있고,
조건문에서 대소문자를 구별해서 일치 불일치를 판단할 수 있다.

위의 예제를 통해서 다양하게 테스트를 해보면 되겠다.
참고로 파이썬이 처음이라면 기초를 배워서 하는 것이 좋아보인다.
파이썬은 C언어와 다르게 줄 끝에 ; 세미콜론이 붙지 않고
들여쓰기로 구분하기때문에 들여쓰기에 신경을 많이 써야한다.

 

 

2. 키보드에서 숫자 입력 받아서 내장 LED 깜빡거리게 하기
위에서 다뤘던 내용에 피코 내장 LED를 제어하는 코드를 다뤄보도록 하자.

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)
led_onboard.value(0)
led_count = int(input("LED 몇 번 깜빡일까요? "))

for i in range(led_count):
    print(i+1,"번째 깜빡임\n")
    led_onboard.toggle()
    utime.sleep(0.6)
    led_onboard.toggle()
    utime.sleep(0.6)

print("END")

위의 코드는 아래 작동 영상으로 확인하면 되겠다.

https://youtu.be/q6cealCXqGg

 

 

LED 제어 관련 설명은 저번시간에 다뤘었으므로,
LED 제어 내용이 이해가 안 된다면, 아래 글을 읽고 오도록 하자.
https://diyver.tistory.com/189

 

라즈베리파이 피코(Raspberry pi PICO) 개발환경 세팅하기 micropython

라즈베리파이 피코는 아두이노처럼 각종 센서를 읽고 구동기를 작동시키는 마이크로컨트롤러이다. 코딩은 micropython 과 C/C++ 로 할 수 있다고 한다. 공식 홈페이지에 방문해서 알아보자. https://www

diyver.tistory.com

 

코드를 보면 1번과 좀 다른 것을 알 수 있는데
input( ) 함수 쪽이 다른  것을 알 수 있다.

앞에 int(   ) 로 묶어주는 장면이 있는데,
input( ) 은 String 이므로 숫자가 아니라 문자이기에
그 밑에 나오는 for 반복문에서 in range 에 적합한 변수 자료형이 아니게 된다.
따라서 강제로 형변환을 해줘야 하는 것이다.

그 밑으로는 파이썬 기본 코드이므로 이해하기 어렵지 않을 것이다.

 

 

 

3. 키보드 입력 받은 문자나 숫자를 모스부호로 LED로 나타내기
파이썬 기본 코딩 실력이 되면 얼마든지 만들 수 있다.
스스로 먼저 해보도록 하자.

https://youtu.be/_gvxhAniv6M

 

위의 작동 영상을 보면 키보드 입력한 대로 모스부호로 LED 출력이 되는 것을 볼 수 있다.

코드는 정답이 없기 때문에 전체 공개는 하지 않기로 하고,
위의 영상에 나온 일부분만 보더라도 큰 힌트가 될 것이라 생각한다.

따라하다가 잘 안되는 경우 댓글로 문의를 남겨주면 코드를 보고 잘못된 부분을 알려주는 방향으로 하려한다.

 

3번 까지 완벽하게 따라했다면,
어지간한 시리얼 통신을 통한 문자 분리는 다 가능한 것이므로, 
앞으로 프로젝트 개발에 있어서 큰 문제가 없을 것이다.

댓글