Today I Learned …

[PyMODI] 전체 모듈 설명 및 코드 사용 예제 본문

Computer/학교

[PyMODI] 전체 모듈 설명 및 코드 사용 예제

염베리 2021. 11. 10. 04:35

* PyMODI : https://luxrobo.github.io/pymodi/index_kr.html


MODI1 모듈 종류

 

설정 모듈

1. 네트워크

 

입력 모듈

1. 버튼

2. 다이얼

3. 환경

4. 자이로스코프

5. 적외선

6. 마이크

7. 초음파

 

출력 모듈

1. 디스플레이

2. LED

3. 모터

4. 스피커


설정 모듈

 

 

1. 네트워크 모듈

[1] 설명

유선 또는 무선으로 이용가능하다.

유선은 USB로, 무선은 블루투스나 와이파이로 연결한다.

 

[2] 주요 기능

① 모듈과 PC 연결

② 모듈과 스마트폰 연결 모드

③ 모듈과 모듈 간 연결 모드

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'network'라는 변수에 모듈 객체를 저장합니다.
network = bundle.networks[0]

"""
계속하기 전에 BLE 연결을 통해 MODI Play를 사용하여 네트워크 모듈을 모바일 장치와
페어링했는지 확인하십시오.
"""

# MODI Play 버튼의 누름 여부를 반환합니다. 눌렸다면 True를 반환합니다.
network_button_pressed = network.button_pressed
print('network_button_pressed:', network_button_pressed)

# MODI Play 다이얼 의 값을 0 ~ 100 사이의 값으로 환산하여 반환합니다.
network_dial = network.dial
print('network_dial:', network_dial)

# 조이스틱의 버튼을 눌렀을때 각각 '위' , '아래' , '왼쪽' , '오른쪽'으로 표현해줍니다.
# 눌리지 않을경우 None을 반환합니다.
network_joystick = network.joystick
print('network_joystick:', network_joystick)

# MODI Play의 왼쪽 슬라이더 값을 0 ~ 100 사이의 값으로 환산하여 반환합니다.
network_left_slider = network.left_slider
print('network_left_slider:', network_left_slider)

# MODI Play의 오른쪽 슬라이더 값을 0 ~ 100 사이의 값으로 환산하여 반환합니다.
network_right_slider = network.right_slider
print('network_right_slider:', network_right_slider)

# MODI Play의 타이머가 끝났을 경우 True를 반환합니다.
network_timer = network.timer
print('network_timer:', network_timer)

# MODI Play의 버저를 울립니다.
network.buzzer_on()

# 2초동안 버저를 울립니다.
time.sleep(2)

# MODI Play 버저의 전원을 끕니다.
network.buzzer_off()

# MODI Play 카메라를 활용하여 사진을 찍습니다.
network.take_picture()

입력 모듈

 

 

1. 버튼 모듈

[1] 설명

버튼의 눌림을 감지한다.

한 번 클릭, 두 번 클릭, 눌려져 있는 상태를 알 수 있으며,

토글을 사용해 ON 상태 또는 OFF 상태가 유지되도록 할 수 있다.

 

[2] 주요 기능

① 한 번 클릭 감지

② 두 번 클릭 감지

③ 눌려져 있는 상태 감지

④ 눌릴 때마다 상태 전환 (ON/OFF)

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'button'라는 변수에 모듈 객체를 저장합니다.
button = bundle.buttons[0]

# 버튼의 눌림 여부를 True / False로 반환하여 알려줍니다.
button_clicked = button.clicked
print('button_clicked:', button_clicked)

# 버튼이 연속으로 두 번 눌렸을 경우, True를 반환합니다.
button_double_clicked = button.double_clicked
print('button_double_clicked:', button_double_clicked)

# 버튼이 눌렸을 때 True를 반환합니다.
button_pressed = button.pressed
print('button_pressed:', button_pressed)

# 버튼을 누를 때마다 반환할 True / False 의 상태가 바뀝니다.
button_toggled = button.toggled
print('button_toggled:', button_toggled)

 

 

2. 다이얼 모듈

[1] 설명

다이얼 모듈은 모듈 손잡이의 회전을 이용한다.

회전한 각도를 측정하거나 회전하는 속도를 측정한다.

 

[2] 주요 기능

회전 각도 측정

회전 속도 측정

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'dial'라는 변수에 모듈 객체를 저장합니다.
dial = bundle.dials[0]

# 다이얼의 각도를 0 ~ 100 사이의 값으로 환산하여 반환합니다.
dial_degree = dial.degree
print('dial_degree:', dial_degree)

# 다이얼의 회전 속도를 -100 ~ 100 사이의 값으로 환산하여 반환합니다.
dial_turnspeed = dial.turnspeed
print('dial_turnspeed:', dial_turnspeed)

 

 

3. 환경 모듈

[1] 설명

환경 모듈은 반도체 센서를 사용하여 주변 물리 변화와 색을 감지한다.
주변 물리 변화 값인 온도, 습도, 조도 그리고 색 감지를 위한 3원색 (R, G, B)을 측정한다.

 

[2] 주요 기능

온도 측정

습도 측정

조도 측정

3원색 (R, G, B) 측정

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'env'라는 변수에 모듈 객체를 저장합니다.
env = bundle.envs[0]

# 주변환경의 명도를 0 ~ 100 사이의 값으로 환산하여 반환합니다.
env_brightness = env.brightness
print('env_brightness:', env_brightness)

# 주변환경의 습도를 0 ~ 100 사이의 값으로 환산하여 반환합니다.
env_humidity = env.humidity
print('env_humidity:', env_humidity)

# 주변환경의 온도를 0 ~ 100 사이의 값으로 환산하여 반환합니다.
env_temperature = env.temperature
print('env_temperature:', env_temperature)

# 주변 빛의 red 비율을 0 ~ 100 사이의 값으로 환산하여 반환합니다.
env_red = env.red
print('env_red:', env_red)

# 주변 빛의 green 비율을 0 ~ 100 사이의 값으로 환산하여 반환합니다.
env_green = env.green
print('env_green:', env_green)

# 주변 빛의 blue 비율을 0 ~ 100 사이의 값으로 환산하여 반환합니다.
env_blue = env.blue
print('env_blue:', env_blue)

 

 

4. 자이로스코프 모듈

[1] 설명

자이로 모듈은 지자기 중력 가속도를 이용한다.
모듈 내 센서의 기울기 각도, 진동량, 그리고 각 축에 대한 가속도와 각속도를 측정한다.

 

[2] 주요 기능

회전 각도 측정 (Roll, Pitch, Yaw)

가속도 측정 (X, Y, Z codeinates)

각속도 측정 (X, Y, Z codeinates)

진동 량 측정

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'gyro'라는 변수에 모듈 객체를 저장합니다.
gyro = bundle.gyros[0]

# 횡축을 중심으로 회전하는 정도의 값을 -180 ~ 180 사이로 환산하여 반환합니다.
gyro_pitch = gyro.pitch
print('gyro_pitch:', gyro_pitch)

# 종축을 중심으로 회전하는 정도의 값을 -180 ~ 180 사이로 환산하여 반환합니다.
gyro_roll = gyro.roll
print('gyro_roll:', gyro_roll)

# 수직축을 중심으로 회전하는 정도의 값을 -180 ~ 180 사이로 환산하여 반환합니다.
gyro_yaw = gyro.yaw
print('gyro_yaw:', gyro_yaw)

# x축의 각속도 값을 -100 ~ 100 사이로 환산하여 반환합니다.
gyro_angular_vel_x = gyro.angular_vel_x
print('gyro_angular_vel_x:', gyro_angular_vel_x)

# y축의 각속도 값을 -100 ~ 100 사이로 환산하여 반환합니다.
gyro_angular_vel_y = gyro.angular_vel_y
print('gyro_angular_vel_y:', gyro_angular_vel_y)

# z축의 각속도 값을 -100 ~ 100 사이로 환산하여 반환합니다.
gyro_angular_vel_z = gyro.angular_vel_z
print('gyro_angular_vel_z :', gyro_angular_vel_z)

# x축의 가속도 값을 -100 ~ 100 사이로 환산하여 반환합니다.
gyro_acceleration_x = gyro.acceleration_x
print('gyro_acceleration_x:', gyro_acceleration_x)

# y축의 가속도 값을 -100 ~ 100 사이로 환산하여 반환합니다.
gyro_acceleration_y = gyro.acceleration_y
print('gyro_acceleration_y :', gyro_acceleration_y)

# z축의 가속도 값을 -100 ~ 100 사이로 환산하여 반환합니다.
gyro_acceleration_z = gyro.acceleration_z
print('gyro_acceleration_z:', gyro_acceleration_z)

# 진동하는 정도를 0 ~ 100 사이의 값으로 환산하여 반환합니다.
gyro_vibration = gyro.vibration
print('gyro_vibration:', gyro_vibration)

 

 

5. 적외선 모듈

[1] 설명

적외선 모듈은 모듈에서 방사한 적외선이 반사되어 돌아오는 양을 감지한다.
반사된 적외선 양에 따라 근접도를 측정한다.

 

[2] 주요 기능

근접도 측정

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'ir'라는 변수에 모듈 객체를 저장합니다.
ir = bundle.irs[0]

# 측정된 근접도 값을 0 ~ 100 사이로 환산하여 반환합니다.
ir_proximity = ir.proximity
print('ir_proximity:', ir_proximity)

 

 

6. 마이크 모듈

[1] 설명

마이크 모듈은 소리에 의한 공기 압력 변화를 이용한다.
주변의 소리의 크기나 주파수를 측정한다.

 

[2] 주요 기능

소리 크기 측정

소리 주파수 측정

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'mic'라는 변수에 모듈 객체를 저장합니다.
mic = bundle.mics[0]

# 주변 소리의 주파수를 float값으로 반환합니다.
mic_frequency = mic.frequency
print('mic_frequency:', mic_frequency)

# 주변 소리의 크기를 0 ~ 100 사이의 값으로 환산하여 반환합니다.
mic_volume = mic.volume
print('mic_volume:', mic_volume)

 

 

7. 초음파 모듈

[1] 설명

초음파 모듈은 사람이 들을 수 없는 20KHz 이상의 초음파를 이용한다.
모듈에서 방사한 고주파 소리가 물체에 반사되어 돌아오는 시간을 측정해 거리를 계산한다.

 

[2] 주요 기능

거리 측정

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'ultrasonic'라는 변수에 모듈 객체를 저장합니다.
ultrasonic = bundle.ultrasonics[0]

# 대상과의 거리를 측정한 값을 0 ~ 100 사이로 환산하여 반환합니다.
ultrasonic_distance = ultrasonic.distance
print('ultrasonic_distance:', ultrasonic_distance)

출력 모듈

 

 

1. 디스플레이 모듈

[1] 설명

디스플레이 모듈은 사용자에게 그림, 글자와 같은 다양한 정보를 화면으로 전달한다.
사용자가 그린 그림이나, 글자 또는 모듈 정보 등을 화면에 표시할 수 있다.

 

[2] 주요 기능

픽셀 단위의 그림 표현

연결된 모듈의 정보 표현

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'display'라는 변수에 모듈 객체를 저장합니다.
display = bundle.displays[0]

# 원하는 문자 혹은 문자열을 디스플레이 모듈에 출력시킵니다.
display.text = 'Hello MODI!'

"""
변수 값을 좌표상의 (pos_x, pos_y) 의 위치에 출력시킵니다.
pos_x, pos_y 의 값은 0 ~ 255 사이의 값을 출력시킬 수 있습니다.
파라미터 :
   변수(variable): 출력시킬 숫자
   position_x(pos_x): x축 좌표
   position_y(pos_y): y축 좌표
"""
pos_x = 20
pos_y = 30
display.show_variable(0, pos_x, pos_y)

# 디스플레이 모듈에서 출력중인 모든 데이터를 지웁니다.
display.clear()

 

 

2. LED 모듈

[1] 설명

LED 모듈은 전기 신호를 빛으로 바꿔주는 반도체 소자이다.
빛의 3원색인 R, G, B를 조합하여 65,000 여가지 색상의 빛을 만들어 낸다.

 

[2] 주요 기능

4가지 색 표현 (빨, 초, 파, 흰, 꺼짐)

빨강, 초록, 파랑 조합을 통한 65,000 여개의 색상 표현

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'led'라는 변수에 모듈 객체를 저장합니다.
led = bundle.leds[0]

# led모듈의 red값을 0 ~ 100 사이의 값으로 설정하여 출력합니다.
led.red = 100

# led모듈의 green값을 0 ~ 100 사이의 값으로 설정하여 출력합니다.
led.green = 100

# led모듈의 blue값을 0 ~ 100 사이의 값으로 설정하여 출력합니다.
led.blue = 100

# 모듈의 전체 rgb값을 설정하여 출력합니다.
led.rgb = 10, 0, 60

# rgb값을 모두 100으로 설정한 상태에서 출력합니다.
led.turn_on()

# rgb값을 모두 0으로 설정합니다.
led.turn_off()

 

 

3. 모터 모듈

[1] 설명

모터 모듈은 전기 신호를 모터 모듈로 보내서 회전 운동을 시켜주는 모듈이다.
모터가 회전하는 속도, 각도 그리고 토크를 설정할 수 있다.

 

[2] 주요 기능

회전각도 출력

속도 출력

토크 출력

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'motor'라는 변수에 모듈 객체를 저장합니다.
motor = bundle.motors[0]

# 두 채널의 모터가 돌아가는 정도를 0 ~ 100 사이의 값으로 설정하여 동작시킵니다.
motor.degree = 30, 90

# 첫번째 채널의 모터가 돌아가는 정도를 0 ~ 100 사이의 값으로 설정하여 동작시킵니다.
motor.first_degree = 30

# 두번째 채널의 모터가 돌아가는 정도를 0 ~ 100 사이의 값으로 설정하여 동작시킵니다.
motor.second_degree = 90

# 두 채널의 모터가 돌아가는 속도를 -100 ~ 100 사이의 값으로 설정합니다.
# 설정 값이 -일 경우, 역으로 회전합니다.
motor.speed = 50, 100

# 첫번째 채널의 모터가 돌아가는 속도를 -100 ~ 100 사이의 값으로 설정합니다.
motor.first_speed = 50

# 두번째 채널의 모터가 돌아가는 속도를 -100 ~ 100 사이의 값으로 설정합니다.
motor.second_speed = 10

 

 

4. 스피커 모듈

[1] 설명

스피커 모듈은 전기 신호를 소리 신호로 변환한다.
피아노 건반 UI를 사용해 음을 선택하거나 원하는 주파수를 직접 입력하여 소리를 낼 수 있다.

 

[2] 주요 기능

주파수에 해당하는 소리 출력

 

[3] 코드 사용 예제

import modi
import time

# MODI 모듈의 번들을 연결하기 위해, MODI 객체를 인스턴스화합니다.
bundle = modi.MODI()

# 'speaker'라는 변수에 모듈 객체를 저장합니다.
speaker = bundle.speakers[0]

# 스피커의 주파수와 볼륨 크기를 0 ~ 100 사이의 값으로 설정하여 출력합니다.
# 220Hz 의 주파수와 100의 볼륨크기로 설정하여 스피커를 출력시킵니다.
speaker.tune = 220, 100

# 스피커의 주파수를 임의의 값으로 설정한 후, 출력합니다.
speaker.frequency = 550

# 스피커의 볼륨을 0 ~ 100 사이의 값으로 설정하여 출력합니다.
speaker.volume = 100

# 스피커의 동작을 정지합니다.
speaker.turn_off()
프로필사진
berry
FE Developer, loves React & better DX
Comments