pyboard 用クイックリファレンス

以下のピン配置は PYBv1.1 用です。pyboard の他のバージョン(PYBv1.0PYBLITEv1.0-ACPYBLITEv1.0 )のピン配置もあります。

PYBv1.1 pinout

以下は pyboard のクイックリファレンスです。このボードを初めて使用する場合は、まず次の章を読むよう検討してください。

ボードの一般的な制御

モジュール pyb を参照してください:

import pyb

pyb.repl_uart(pyb.UART(1, 9600)) # REPL を UART(1) に複製
pyb.wfi() # 割込みまで CPU を一時停止します
pyb.freq() # CPU とバスの周波数を得ます
pyb.freq(60000000) # CPU の周波数を 60MHz に設定します
pyb.stop() # 外部割込みまで CPU を停止します

遅延とタイミング

モジュール time を使います:

import time

time.sleep(1)           # 1 秒スリープします
time.sleep_ms(500)      # 500 ミリ秒スリープします
time.sleep_us(10)       # 10 マイクロ秒スリープします
start = time.ticks_ms() # ミリ秒カウンターの値を得ます
delta = time.ticks_diff(time.ticks_ms(), start) # 時間差を算出します

ボード上の LED

pyb.LED を参照:

from pyb import LED

led = LED(1) # 1=赤、2=緑、3=黄色、4=青
led.toggle()
led.on()
led.off()

# LED 3 と 4 は PWM 照度(0-255)をサポートします
LED(4).intensity()    # 照度を得ます
LED(4).intensity(128) # 照度を半分に設定します

ボード上のスイッチ

pyb.Switch を参照:

from pyb import Switch

sw = Switch()
sw.value() # True または False を返します
sw.callback(lambda: pyb.LED(1).toggle())

ピンと GPIO

pyb.Pin を参照:

from pyb import Pin

p_out = Pin('X1', Pin.OUT_PP)
p_out.high()
p_out.low()

p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
p_in.value() # 0 または 1 を返します

サーボ制御

pyb.Servo を参照:

from pyb import Servo

s1 = Servo(1) # ポジション 1 (X1, VIN, GND)のサーボ
s1.angle(45) # 45 度に回転
s1.angle(-60, 1500) # 1500ms で -60 度に回転
s1.speed(50) # 以降のサーボの回転に適用

外部割込み

pyb.ExtInt を参照:

from pyb import Pin, ExtInt

callback = lambda e: print("intr")
ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)

タイマー

pyb.Timer を参照:

from pyb import Timer

tim = Timer(1, freq=1000)
tim.counter() # カウンター値を得ます
tim.freq(0.5) # 0.5 Hz
tim.callback(lambda t: pyb.LED(1).toggle())

RTC (リアルタイムクロック)

pyb.RTC を参照:

from pyb import RTC

rtc = RTC()
rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # 指定の日時を設定します
rtc.datetime() # 日時を得ます

PWM (パルス幅変調)

pyb.Pinpyb.Timer を参照:

from pyb import Pin, Timer

p = Pin('X1') # X1 は TIM2, CH1 を持ちます
tim = Timer(2, freq=1000)
ch = tim.channel(1, Timer.PWM, pin=p)
ch.pulse_width_percent(50)

ADC (アナログ-デジタル変換)

pyb.Pinpyb.ADC を参照:

from pyb import Pin, ADC

adc = ADC(Pin('X19'))
adc.read() # 値 0-4095 を読み込みます

DAC (デジタル-アナログ変換)

pyb.Pinpyb.DAC を参照:

from pyb import Pin, DAC

dac = DAC(Pin('X5'))
dac.write(120) # 0 から 255 の範囲で出力

UART (シリアルバス)

pyb.UART を参照:

from pyb import UART

uart = UART(1, 9600)
uart.write('hello')
uart.read(5) # 5 バイトまで読み込みます

SPI バス

pyb.SPI を参照:

from pyb import SPI

spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
spi.send('hello')
spi.recv(5) # バス上で 5 バイトを受信
spi.send_recv('hello') # 5 バイトを送受信

I2C バス

Hardware I2C is available on the X and Y halves of the pyboard via I2C('X') and I2C('Y'). Alternatively pass in the integer identifier of the peripheral, eg I2C(1). Software I2C is also available by explicitly specifying the scl and sda pins instead of the bus name. For more details see machine.I2C.

from machine import I2C

i2c = I2C('X', freq=400000)                 # ハードウェア I2C オブジエクトを作成
i2c = I2C(scl='X1', sda='X2', freq=100000)  # ソフトウェア I2C オブジエクトを作成

i2c.scan()                          # スレーブアドレスのリストを返します
i2c.writeto(0x42, 'hello')          # アドレス 0x42 のスレーブに 5 バイト送信します
i2c.readfrom(0x42, 5)               # スレーブから 5 バイト受信します

i2c.readfrom_mem(0x42, 0x10, 2)     # スレーブ 0x42 のスレーブメモリ 0x10 から2バイト読み込みます
i2c.writeto_mem(0x42, 0x10, 'xy')   # スレーブ 0x42 のスレーブメモリ 0x10 へ2バイト書き込みます

注記: 古い I2C サポートについては pyb.I2C を参照:

CAN バス (Controller Area Network)

pyb.CAN を参照:

from pyb import CAN

can = CAN(1, CAN.LOOPBACK)
can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
can.send('message!', 123)   # id 123 でメッセージを送信
can.recv(0)                 # FIFO 0 でメッセージを受信

ボード上の加速度センサー

pyb.Accel を参照:

from pyb import Accel

accel = Accel()
print(accel.x(), accel.y(), accel.z(), accel.tilt())