Lesson Progress
0% Complete
로봇 애완동물을 돌봐주세요 – 개요
지난 강의에서는 IR 센서를 보정하는 방법을 이해했습니다.
손으로 만져주면 반응하는 로봇 펫을 만들어보는 건 어떨까요? 로봇은 IR 센서를 사용하여 애지중지하는 것을 감지하고 그에 따라 행동할 수 있습니다.
목표는 로봇이 손을 감지했을 때 특정 동작을 실행하도록 하는 것입니다.
- 왼쪽 센서에 손이 감지되면 왼쪽으로 돌립니다.
- Right 센서에 손이 감지되면 우회전합니다.
- 왼쪽과 오른쪽 센서 모두에서 손이 감지되면 Quarky와 스마일을 소개합니다.
- 아무것도 감지되지 않으면 아무 것도 하지 마십시오.
코딩하자!
코드는 매우 간단합니다. 바로 시작하겠습니다. 아래 단계를 따르세요.
- 먼저 Quarky를 PictoBlox에 연결하는 것으로 시작하겠습니다.
- 먼저 USB 케이블을 사용하여 Quarky를 노트북에 연결합니다.
- PictoBlox를 열고 새 파일을 만듭니다. 코딩 환경을 Python Coding으로 선택
- Board를 Quarky로 선택합니다. 다음으로 Quarky를 연결할 Bluetooth port를 선택하고 Connect 을 누릅니다.
- 우리는 이 활동에서 Quarky를 사용할 것이므로 quarky 관련 함수도 작성하고 이러한 함수를 작성하려면 quarky에 대한 객체를 정의해야 합니다.
quarky = Quarky()
- 우리는 파이썬에서 시간 모듈을 사용해야 합니다. Quarky에서 두 가지 감정을 표시하는 사이에 특정 시간 간격을 두고 싶기 때문입니다. Python 시간 모듈을 사용하면 Python에서 시간 작업을 수행할 수 있습니다 . 따라서 이 모듈을 시작하기 전에 모듈을 가져와야 합니다.
import time
- 다음으로 quarky 로봇의 방향을 설정하려고 합니다. Quarky는 가로 또는 세로 방향으로 설정할 수 있습니다. 여기서는 세로 방향을 설정합니다. 이를 위해 setorientation(“VERTICAL”) 함수를 사용합니다.
quarky.setorientation("VERTICAL")
- 이제 왼쪽 및 오른쪽 IR 센서의 임계값을 설정하려고 합니다. 이전 활동에서 임계값을 찾는 방법을 이미 배웠습니다.
quarky.setirthreshold("IRL", 3500) quarky.setirthreshold("IRR", 3500)
- 이제 조건을 while True로 제공하여 while 루프를 작성할 것입니다. 이는 주어진 부울 조건이 False로 평가될 때까지 루프가 계속 실행되어야 함을 의미합니다. while True라고 쓰면 루프가 영원히 실행됩니다.
while True:
- 우리의 목표는 if-else 루프, 논리 연산자 및 getirstate(“IR”) 함수를 사용하여 왼쪽 IR 센서와 오른쪽 IR 센서가 활성화되어 있는지 확인하는 것입니다. 왼쪽과 오른쪽 센서 모두에서 손이 감지되면 Quarky와 스마일을 소개합니다. 이를 위해 showemotion() 및 playsound(“QuarkyIntro”) 함수를 사용합니다. if 루프는 다음과 같습니다.
if (not (quarky.getirstate("IRL")) and not (quarky.getirstate("IRR"))): quarky.showemotion("happy") quarky.playsound("QuarkyIntro") time.sleep(2)
- 여기서는 time.sleep() 함수를 사용하여 2초의 지연을 제공합니다.
- 이제 else 부분을 정의합니다. 위의 조건이 거짓이면 else 루프가 실행됩니다.
- pass 함수는 사용자가 어떤 코드를 작성해야 할지 모를 때 사용하므로 사용자는 단순히 해당 줄에 pass를 배치합니다. 경우에 따라 사용자가 코드 실행을 원하지 않을 때 패스가 사용됩니다.
- 이제 Right 센서에 손이 감지되면 매트릭스에 오른쪽 화살표 패턴을 표시하여 쿼키가 오른쪽으로 회전하도록 합니다. 올바른 IR 센서가 활성화되었는지 확인하기 위해 else 루프 내부에 또 다른 if-else 루프를 사용할 수 있습니다.
else: pass if not (quarky.getirstate("IRR")):
- 조건이 참이면 쿼키의 행렬에 표시할 오른쪽 화살표 패턴을 만듭니다. 패턴을 표시하기 위해 drawpattern(pattern = “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”) 함수를 사용합니다.
quarky.drawpattern("jjjjijjjjjjiijiiiiiiijjjjiijjjjjijj")
- 다음으로 우리는 쿼키가 60% 속도로 오른쪽으로 회전하기를 원합니다. runrobot(“RIGHT”,60) 함수를 사용합니다.
quarky.runrobot("RIGHT",60)
- 0.5 초의 시간 지연을 추가한 다음 stoprobot() 함수를 호출하여 쿼키 정지를 만듭니다.
time.sleep(0.5) quarky.stoprobot()
- 우리의 외부 else는 다음과 같습니다.
else: pass if not (quarky.getirstate("IRR")): quarky.drawpattern("jjjjijjjjjjiijiiiiiiijjjjiijjjjjijj") quarky.runrobot("RIGHT",60) time.sleep(0.5) quarky.stoprobot()
- 마찬가지로 else 부분에서 왼쪽 IR 센서의 상태를 확인해야 합니다. 왼쪽 센서에 손이 감지되면 매트릭스에 왼쪽 화살표 패턴을 표시하여 쿼키가 왼쪽으로 회전하도록 합니다. else 루프 내에서 또 다른 if-else 루프를 사용할 수 있습니다.
else: pass if not (quarky.getirstate("IRL")): quarky.drawpattern("jjijjjjjiijjjjiiiiiiijiijjjjjjijjjj") quarky.runrobot("LEFT",60) time.sleep(0.5) quarky.stoprobot()
- 마지막으로 else 루프 내에서 cleardisplay() 함수를 호출하여 quarky의 디스플레이를 지웁니다.
else: pass quarky.cleardisplay()
- 전체 코드는 다음과 같습니다.
quarky = Quarky() import time quarky.setorientation("VERTICAL") quarky.setirthreshold("IRL",2000) quarky.setirthreshold("IRR",2000) while True: # When both sensors are active if (not (quarky.getirstate("IRL")) and not (quarky.getirstate("IRR"))): quarky.showemotion("happy") quarky.playsound("QuarkyIntro") time.sleep(2) else: pass # When Right IR sensor is active if not (quarky.getirstate("IRR")): quarky.drawpattern("jjjjijjjjjjiijiiiiiiijjjjiijjjjjijj") quarky.runrobot("RIGHT",60) time.sleep(0.5) quarky.stoprobot() else: pass # When Left IR sensor is active if not (quarky.getirstate("IRL")): quarky.drawpattern("jjijjjjjiijjjjiiiiiiijiijjjjjjijjjj") quarky.runrobot("LEFT",60) time.sleep(0.5) quarky.stoprobot() else: pass quarky.cleardisplay()
- 우리의 목표는 if-else 루프, 논리 연산자 및 getirstate(“IR”) 함수를 사용하여 왼쪽 IR 센서와 오른쪽 IR 센서가 활성화되어 있는지 확인하는 것입니다. 왼쪽과 오른쪽 센서 모두에서 손이 감지되면 Quarky와 스마일을 소개합니다. 이를 위해 showemotion() 및 playsound(“QuarkyIntro”) 함수를 사용합니다. if 루프는 다음과 같습니다.
과제 업로드
과정을 마친 후 수료증을 받으려면 과제를 제출해야 합니다.
과제를 업로드하려면 아래 단계를 따르세요.
- 먼저 Pictoblox 파일을 선택해야 하므로 Browse를 클릭합니다.
- .sb3 파일을 선택합니다.
- 그리고 Upload 버튼을 클릭합니다.
행운을 빕니다! ????