pyboard 的快速参考 以下引脚分配适用于 PYBv1.1。您还可以查看其他版本的 pyboard 的引脚排列: PYBv1.0 或PYBLITEv1.0-AC 或 PYBLITEv1.0.  下面是 pyboard 的快速参考。如果这是您第一次使用该板,请考虑先阅读以下部分:
|+ a1 K. }1 r通用板控制见 pyb. - import pyb
0 l7 K7 M) e$ l8 l7 t
% v" {( M& D# ?+ [- pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)4 a8 @) W, R1 N" _ n+ y
- pyb.wfi() # pause CPU, waiting for interrupt
% _4 i: \" j" W - pyb.freq() # get CPU and bus frequencies
7 W2 p9 |7 F# ^ o6 `8 H! R$ K - pyb.freq(60000000) # set CPU freq to 60MHz5 t$ q7 i- N: z; a2 J
- pyb.stop() # stop CPU, waiting for external interrupt
复制代码 0 x2 q! H* p& t: t9 \, h
# o e, {7 R3 D) d延迟和计时使用 time模块: - import time
2 g- T3 q8 |- I# i G4 Q; H
) i; w! W- T0 M0 K7 A, I& ?5 d- time.sleep(1) # sleep for 1 second
7 v1 u3 s7 E6 A+ t3 W' ]2 O9 H - time.sleep_ms(500) # sleep for 500 milliseconds" a3 ~( w7 P( d4 J* p
- time.sleep_us(10) # sleep for 10 microseconds
: a$ Y$ w8 @! u c2 h - start = time.ticks_ms() # get value of millisecond counter$ C- S% w4 u* Q0 \, c9 ]/ n3 R/ M
- delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码 0 R' n( h# T2 w
) t2 Y: _$ f" j内部 LED见 pyb.LED. - from pyb import LED
- D J6 K r* r9 m0 c4 T4 P - ' G7 T& c& m: b/ _
- led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue. `8 z8 H6 C7 T
- led.toggle()9 U6 e$ V0 T8 N3 }3 y, q$ w; ^1 G
- led.on()
% F" [/ b5 _0 F- m" c/ J - led.off()" Q/ |5 O8 p6 f: q8 N' H; \
$ e( m& ^- w% Z* v9 {- # LEDs 3 and 4 support PWM intensity (0-255)
. Y! P) I) p. T7 v, b- P2 ?& l% m A - LED(4).intensity() # get intensity
7 u; T* z3 ^2 R4 ]- |7 y - LED(4).intensity(128) # set intensity to half
复制代码 ; I. `. W$ g8 y0 g7 @& x1 a6 ^
. B5 ?1 i9 S6 D9 O$ s( i* C
内部开关请参阅 pyb.Switch. - from pyb import Switch- F1 P2 V _1 N7 E% V* {
0 |$ J1 Z# M& Z1 H, ~- sw = Switch()7 V5 h8 P% ^0 U0 s
- sw.value() # returns True or False
7 y5 T$ N9 x! E( v - sw.callback(lambda: pyb.LED(1).toggle())
复制代码
4 [) u0 {, K/ _% Q% F* Z% ^
3 ]; e- y! X& I- k3 S* m. Z引脚和 GPIO请参阅 pyb.Pin. - from pyb import Pin
# U3 g+ p, J9 v& o, z - 8 O1 X4 V1 ?( u9 c9 x, ~) s
- p_out = Pin('X1', Pin.OUT_PP)% m+ }# L. V' q" P" C0 u/ b
- p_out.high()8 g* J2 t& _" h
- p_out.low()% [& L% u0 ~& t7 ?, v* a2 q
- 0 E) _3 ^% o: S# m0 ~9 \
- p_in = Pin('X2', Pin.IN, Pin.PULL_UP). _- g, S; ^8 V# B
- p_in.value() # get value, 0 or 1
复制代码
9 f& T% n: @6 _- W7 l9 e; k, E
, m5 A s" E$ u伺服控制请参阅pyb.Servo. - from pyb import Servo
9 _6 W( `. S p4 `' \! M5 M# c, n - ( l. P5 I1 I( {6 i- b8 X& y
- s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
, R& Z2 l" C6 @ - s1.angle(45) # move to 45 degrees: N+ D" m9 k6 {1 j3 C1 C0 p+ y
- s1.angle(-60, 1500) # move to -60 degrees in 1500ms
e) F: K* W0 `+ b6 K, s: b5 C - s1.speed(50) # for continuous rotation servos
复制代码
7 e$ c0 a. ^+ v, c' m/ D' S# [* \, [- [: K% i8 l
外部中断请参阅 pyb.ExtInt. - from pyb import Pin, ExtInt
+ i; A% D+ U# S/ T$ w8 S
! F3 _- l+ y, t- callback = lambda e: print("intr")1 L: R3 d$ ^+ [8 {: B0 F8 W
- ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码 7 |2 b* w& D$ J- j8 U/ n4 _
# E. F: l' L0 _# ~8 c6 g% V
计时器请参阅pyb.Timer. - from pyb import Timer
" @1 H' I# p( ?& O- n7 U0 b
: Y' D+ x3 Q4 I9 o6 |- tim = Timer(1, freq=1000)- L3 h4 H# l& z; g
- tim.counter() # get counter value/ J1 h p+ Q3 W
- tim.freq(0.5) # 0.5 Hz
# q u' q) t% N& G* n$ t - tim.callback(lambda t: pyb.LED(1).toggle())
复制代码 $ Z G3 p9 A9 \8 l) N+ N( f
RTC(实时时钟)请参阅 pyb.RTC - from pyb import RTC, x. `; @- L$ x0 S+ b5 B* s6 a
- ( J. r( o3 O5 m' R
- rtc = RTC()
* k! U9 _! `+ o- P3 P - rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time9 N' v2 r0 H: U$ ]/ v( D
- rtc.datetime() # get date and time
复制代码
& b: j; k4 Q9 WPWM(脉宽调制)请参阅pyb.Pin 和 pyb.Timer. - from pyb import Pin, Timer
5 K/ ]+ a1 A. b F, X7 Z0 T% h - , x2 P8 ]; |9 m: y% F: j* {
- p = Pin('X1') # X1 has TIM2, CH1
% X; C' p4 z3 U) B9 a - tim = Timer(2, freq=1000)
9 h+ p0 r4 P2 S& B' f: T) ~ - ch = tim.channel(1, Timer.PWM, pin=p)$ I# O) ~' ]% b4 C( t
- ch.pulse_width_percent(50)
复制代码
6 U/ A% V$ V4 [9 k$ P' L1 k' pADC(模数转换)请参阅pyb.Pin 和pyb.ADC. - from pyb import Pin, ADC
' j/ r* N: [: o; h5 i - ) H9 A$ e9 X0 W
- adc = ADC(Pin('X19'))
, u/ Q3 h9 f" p2 A# k" n5 ?8 @ - adc.read() # read value, 0-4095
复制代码 ; Z) l! \7 E% j; ?2 ~
- E% {! ]9 b0 V. l1 p7 m. ?( U3 a
DAC(数模转换)请参阅pyb.Pin 和 pyb.DAC. - from pyb import Pin, DAC6 n. L$ j1 B- b" A0 a8 o$ \; L
- # i& y6 C. ~8 k" U
- dac = DAC(Pin('X5'))- s) \) ^8 N3 ]5 ~4 Q
- dac.write(120) # output between 0 and 255
复制代码
8 F _% `0 e& _% t0 W
, g. D3 W' n: ^9 } B; v* xUART(串行总线)请参阅 pyb.UART. - from pyb import UART; z5 Q) @3 F9 [- e
- ; A# ~* t2 D0 J4 p( J9 Y
- uart = UART(1, 9600)
Q2 I9 B9 [! O, q& G - uart.write('hello')
4 ?1 y, t0 ~4 G/ L8 { - uart.read(5) # read up to 5 bytes
复制代码 ( o: C% I, X* ]: f8 }+ M
# C$ K! |/ w& z! ]( h' f1 t$ NSPI总线请参阅 pyb.SPI. - from pyb import SPI
3 c4 ^( H! c* q, Q# z0 q% Z - 3 p( e" p& _( j
- spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)# j) K H5 ]" E$ n2 X/ E
- spi.send('hello')
F0 z* Q9 I" E$ B( g% X8 g - spi.recv(5) # receive 5 bytes on the bus: F" B! X& u9 d
- spi.send_recv('hello') # send and receive 5 bytes
复制代码
+ h- ~0 u+ o6 |
( r; a2 d: b x d# u- N# M* ]1 _I2C总线硬件 I2C 可通过I2C('X') 和用于 pyboard 的 X 和 Y 两半 I2C('Y')。或者,传入外围设备的整数标识符,例如I2C(1)。通过显式指定 scl 和 sda 引脚而不是总线名称,也可以使用软件 I2C 。有关更多详细信息,请参阅 machine.I2C. - from machine import I2C5 b; a7 m" g! ?# }6 q; {' c6 X
1 C- z( M$ {3 S G$ {$ g. f- i2c = I2C('X', freq=400000) # create hardware I2c object/ S) ~; f7 N3 M! V8 q- U, P! M
- i2c = I2C(scl='X1', sda='X2', freq=100000) # create software I2C object; H. B; m: ?( E" X% |
- 3 ?7 Z( b* n8 _$ G* O0 Y
- i2c.scan() # returns list of slave addresses
) ^7 v" I3 B1 d) u% z - i2c.writeto(0x42, 'hello') # write 5 bytes to slave with address 0x42
2 C( N) L, F. w/ B4 u" l - i2c.readfrom(0x42, 5) # read 5 bytes from slave$ R2 l% l1 z: }& ~
& l E' ?2 K: T- i2c.readfrom_mem(0x42, 0x10, 2) # read 2 bytes from slave 0x42, slave memory 0x10, N7 e% U/ x& Z/ F+ A$ p. c
- i2c.writeto_mem(0x42, 0x10, 'xy') # write 2 bytes to slave 0x42, slave memory 0x10
复制代码 ; y& t5 n d' n8 B5 _
: O0 _. N, q) I8 W4 o9 W
注意:对于传统 I2C 支持,请参阅 pyb.I2C。 : |! g4 f& Q6 G& x' q, }2 n) K
I2S总线参见 machine.I2S. - from machine import I2S, Pin4 e$ L0 ~$ }$ _" C
. |5 S6 W- _' Q- i2s = I2S(2, sck=Pin('Y6'), ws=Pin('Y5'), sd=Pin('Y8'), mode=I2S.TX, bits=16, format=I2S.STEREO, rate=44100, ibuf=40000) # create I2S object# x: D% p, Z) ~0 G/ x% S
- i2s.write(buf) # write buffer of audio samples to I2S device# L/ u G5 h1 }
# Q+ V8 E: J1 i4 l/ y- i2s = I2S(1, sck=Pin('X5'), ws=Pin('X6'), sd=Pin('Y4'), mode=I2S.RX, bits=16, format=I2S.MONO, rate=22050, ibuf=40000) # create I2S object4 P9 T3 B8 d' o% @6 _* u7 {! K1 W
- i2s.readinto(buf) # fill buffer with audio samples from I2S device
复制代码 ) Z2 I3 J, }9 N& i0 u7 F" o
I2S 类目前作为技术预览版提供。在预览期间,鼓励用户提供反馈。基于此反馈,I2S 类 API 和实现可能会更改。 PYBv1.0/v1.1 有一个 I2S 总线,id=2。PYBD-SFxW 有两条 I2S 总线,id=1 和 id=2。I2S 与 SPI 共享。
1 D/ e! s. a. `; H, tCAN总线(控制器局域网)参见 pyb.CAN. - from pyb import CAN
/ A; p$ w8 W- t1 @
: m9 U; o2 ?6 L) K$ g- can = CAN(1, CAN.LOOPBACK)3 Z" t, i( y; x. U0 Q* o% e* R% ~
- can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
. F: j5 _% R% O" o) h - can.send('message!', 123) # send a message with id 123
4 h3 G( ^' F3 ]) e) N - can.recv(0) # receive message on FIFO 0
复制代码
$ o: W) K: q9 u4 ?. B1 [
& P3 Q1 `- Y( g8 W1 T内部加速度计参见pyb.Accel. - from pyb import Accel* D0 a$ F- X* C
- ! B7 }; O: }5 g% }- G& A2 N
- accel = Accel()
7 l. m2 U# H# i% e! f+ ^8 o - print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码 g% I1 S1 R. B
& S# B- V. n6 W% m/ L
|