pyboard 的快速参考 以下引脚分配适用于 PYBv1.1。您还可以查看其他版本的 pyboard 的引脚排列: PYBv1.0 或PYBLITEv1.0-AC 或 PYBLITEv1.0.  下面是 pyboard 的快速参考。如果这是您第一次使用该板,请考虑先阅读以下部分:
* q, R) h0 ~4 F6 x9 T通用板控制见 pyb. - import pyb: f2 p" \6 m8 N$ E! R/ r* a
- / b/ i0 ]2 @5 W
- pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
" t/ Y% z- B; n; r7 y2 c6 J2 [ - pyb.wfi() # pause CPU, waiting for interrupt, L( s1 }. Q0 x( h
- pyb.freq() # get CPU and bus frequencies l4 o/ ^7 _& i Y8 W( F8 z
- pyb.freq(60000000) # set CPU freq to 60MHz
$ i4 x( o, \2 b/ y/ c8 z - pyb.stop() # stop CPU, waiting for external interrupt
复制代码
N' `1 B: n: I1 t$ a/ k( B
1 l' n- i1 B0 V延迟和计时使用 time模块: - import time
, m; r0 O% f5 \1 v - 3 j0 x5 r) _; R8 y3 ?3 o4 ^1 Y3 [) T
- time.sleep(1) # sleep for 1 second% u( [/ O& Y" R" p2 y
- time.sleep_ms(500) # sleep for 500 milliseconds A- v1 u! y# o8 D; `
- time.sleep_us(10) # sleep for 10 microseconds1 t# E0 B' W& A3 D
- start = time.ticks_ms() # get value of millisecond counter. T8 ?& |$ O/ R% q# s$ D0 W+ i, d+ m
- delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码 - X8 n7 r2 ]8 h2 |2 r
* K* E; }) a+ F- o& F& B6 n
内部 LED见 pyb.LED. - from pyb import LED8 s( T Q5 q. C9 m
- }7 r" X$ }2 `5 x6 J' _4 Y; p
- led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
) }) B: X8 n$ k. ? - led.toggle()
2 Y, ~7 j$ a. s# a+ ^. B - led.on()
5 b+ T4 q8 Y, E& z8 ^ - led.off(). l$ i0 b) D N8 M
- * y3 X7 c' s6 |. V% h
- # LEDs 3 and 4 support PWM intensity (0-255)
# U7 A' P2 `% x" h+ S( i - LED(4).intensity() # get intensity; n, m5 q$ k6 B
- LED(4).intensity(128) # set intensity to half
复制代码
) B! ^+ ^4 T/ X0 z G0 o" G# _3 P& ^/ W' s8 S% c+ v
内部开关请参阅 pyb.Switch. - from pyb import Switch
! S- L+ f6 j8 N' n4 j" X! H: T7 O" O
" g7 _# H, Y6 K. S" k/ f( ?- sw = Switch()# W0 k* R1 i8 n! q7 @4 G
- sw.value() # returns True or False
1 l4 Q* a% F) c( R+ H - sw.callback(lambda: pyb.LED(1).toggle())
复制代码
: m" u4 k' |! i$ t2 M
) A$ _- ?3 s% W2 P: c9 z引脚和 GPIO请参阅 pyb.Pin. - from pyb import Pin! Z8 x# S9 R, o# J; C
! Q1 r: t+ p4 ^- k& z# c- p_out = Pin('X1', Pin.OUT_PP)
9 ]6 h; E- U) t& Q - p_out.high()
! `' l" S! f* _; m; C! y - p_out.low()1 F6 f! Z9 q4 Y" e5 {; \3 O
( s6 B. [' Q2 B( A4 G. q- p_in = Pin('X2', Pin.IN, Pin.PULL_UP)+ e# g* G- w$ T, H, A. Z- b
- p_in.value() # get value, 0 or 1
复制代码
3 @) t S2 a' C- [" k
. Y+ I6 W0 S( ~* Z: ?" D1 m, K伺服控制请参阅pyb.Servo. - from pyb import Servo
- f0 W6 D' y0 V" G: V9 a
" o" V) M m8 Q, \% \- s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
8 x: F% E6 A. K3 ?* j, W# K - s1.angle(45) # move to 45 degrees
- c8 V* Z+ n6 t3 y - s1.angle(-60, 1500) # move to -60 degrees in 1500ms7 A Q( x5 e9 \9 x. C
- s1.speed(50) # for continuous rotation servos
复制代码 : @1 b7 f+ ?0 j, k: b
+ C2 ^( a# b' ]8 v7 _外部中断请参阅 pyb.ExtInt. - from pyb import Pin, ExtInt
. W) M; ]: Z! z; y8 N' Q
/ i" x9 ]0 J; I& `- callback = lambda e: print("intr")
0 d% N, k% b% I8 K4 P2 @1 Y3 ]. g" | - ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码
' M- z8 v1 o/ S, F; L. K! q8 z9 z
. l+ K2 _, v/ i* A# r' j计时器请参阅pyb.Timer. - from pyb import Timer
: o" p" L' t3 A L. Z/ @2 l9 r
3 K/ Y F' _" y! x- tim = Timer(1, freq=1000)/ h. Z) {9 b; Q' P1 T( c
- tim.counter() # get counter value' j2 p/ X, j; `# ^5 @% c* J9 E
- tim.freq(0.5) # 0.5 Hz
6 H; ~/ F* o0 I4 g3 w6 M+ A+ t4 P" [ - tim.callback(lambda t: pyb.LED(1).toggle())
复制代码
9 x1 h* T/ B* \9 I7 FRTC(实时时钟)请参阅 pyb.RTC - from pyb import RTC. y4 d' v+ L1 x
- " r' m) }3 s6 j
- rtc = RTC() ^/ L3 J$ K- I% ^
- rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time6 ]3 k& L' q) |- `" Y: L" x* j
- rtc.datetime() # get date and time
复制代码
- Y+ i0 P5 b. k8 b7 ^ [7 P1 _PWM(脉宽调制)请参阅pyb.Pin 和 pyb.Timer. - from pyb import Pin, Timer$ H0 @& x% Z- H8 [1 e
" l; A' A ~6 @* y- p = Pin('X1') # X1 has TIM2, CH1
3 R9 M8 l6 N0 L' I+ _ - tim = Timer(2, freq=1000)
/ g1 @' G. a$ b4 i - ch = tim.channel(1, Timer.PWM, pin=p)# L. m& H9 f, J
- ch.pulse_width_percent(50)
复制代码
4 x% n/ d/ D7 k$ s/ e. D" s. a" LADC(模数转换)请参阅pyb.Pin 和pyb.ADC. - from pyb import Pin, ADC* H- T' b# `8 }/ m; Z1 E
% ^" O. O: v6 |/ Y; A/ N- adc = ADC(Pin('X19'))
. V% p! J2 F9 T; i - adc.read() # read value, 0-4095
复制代码
. N' y& @# @% b$ S; z9 C8 G7 S1 ]& z' w C0 W `/ F
DAC(数模转换)请参阅pyb.Pin 和 pyb.DAC. - from pyb import Pin, DAC
1 d4 h9 x' o, p; A
. {) o- [+ g9 F& D4 J3 p4 _; Z- dac = DAC(Pin('X5'))
8 I' a! _* C) S& G" f4 Z - dac.write(120) # output between 0 and 255
复制代码 . {4 ?' T- k Y/ w! ?1 x
6 [' u% W B* I) c% r! ^( p
UART(串行总线)请参阅 pyb.UART. - from pyb import UART5 Z7 \8 x- Z1 R" Y
- ; K; d, d* a& Y z
- uart = UART(1, 9600)- a# B* h; C1 L0 s$ M: m
- uart.write('hello'). R3 a2 O% \& o. Y+ m3 F: Y g u
- uart.read(5) # read up to 5 bytes
复制代码
4 O& Y, V2 z. Q" y/ ^ M3 u8 {, l3 i
SPI总线请参阅 pyb.SPI. - from pyb import SPI
1 a; ^# _8 I# O/ {$ S - - I$ [! L5 j+ m
- spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)& l) I! D( y! f
- spi.send('hello')4 w; I7 M) M: f! v, @" h
- spi.recv(5) # receive 5 bytes on the bus) K8 p* x0 K/ S9 ^5 g
- spi.send_recv('hello') # send and receive 5 bytes
复制代码 % ?& @) |$ P8 B8 r
, [* _4 H1 [: V0 O' Y2 q% S4 y1 Z
I2C总线硬件 I2C 可通过I2C('X') 和用于 pyboard 的 X 和 Y 两半 I2C('Y')。或者,传入外围设备的整数标识符,例如I2C(1)。通过显式指定 scl 和 sda 引脚而不是总线名称,也可以使用软件 I2C 。有关更多详细信息,请参阅 machine.I2C. - from machine import I2C9 w) K; t+ @3 U# b
+ Q& k) Z* i% N6 D! d- i2c = I2C('X', freq=400000) # create hardware I2c object+ d' @% l3 [% j' u; h% N
- i2c = I2C(scl='X1', sda='X2', freq=100000) # create software I2C object& m. e3 D2 R* g7 Z
- ( M v' q2 l) j S. s
- i2c.scan() # returns list of slave addresses
! _/ @6 K% i4 y# f - i2c.writeto(0x42, 'hello') # write 5 bytes to slave with address 0x42( M$ {" T/ j( e4 w. N( z9 q. ]" f) G
- i2c.readfrom(0x42, 5) # read 5 bytes from slave
2 [3 ~" g( v9 F" R. Z - ?7 z4 C0 s# b. D6 q9 K" N$ U
- i2c.readfrom_mem(0x42, 0x10, 2) # read 2 bytes from slave 0x42, slave memory 0x10
5 `* m) K# G3 C+ J: c - i2c.writeto_mem(0x42, 0x10, 'xy') # write 2 bytes to slave 0x42, slave memory 0x10
复制代码
1 h* j& R9 L# T8 A# l
* I7 |( _0 T' P5 q0 _) N/ A" C注意:对于传统 I2C 支持,请参阅 pyb.I2C。 ! H/ t' A% j1 ~
I2S总线参见 machine.I2S. - from machine import I2S, Pin0 n" U( u6 J V6 U8 D
- 4 H- ^) n K0 P1 o) F6 E4 Y2 G7 o
- 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$ A8 e8 }+ R q/ V) q
- i2s.write(buf) # write buffer of audio samples to I2S device
" {0 |% D3 E" \ l; c- P, J
x: y/ m" Y7 T1 s- 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 object
' f- v4 M B1 [6 W5 K/ e - i2s.readinto(buf) # fill buffer with audio samples from I2S device
复制代码 - y: ~1 r4 k' f) D7 f% l5 e. y& O
I2S 类目前作为技术预览版提供。在预览期间,鼓励用户提供反馈。基于此反馈,I2S 类 API 和实现可能会更改。 PYBv1.0/v1.1 有一个 I2S 总线,id=2。PYBD-SFxW 有两条 I2S 总线,id=1 和 id=2。I2S 与 SPI 共享。
$ k, {5 @3 C4 R9 \5 w5 xCAN总线(控制器局域网)参见 pyb.CAN. - from pyb import CAN% L) r9 V" a0 {5 [ _, s% T
- ! A1 X8 I* w/ |% j5 P2 I+ m t
- can = CAN(1, CAN.LOOPBACK)% j) j9 o7 ]" A" E+ ^6 J# h
- can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))# O; h* d2 p) h' M m2 Z/ x
- can.send('message!', 123) # send a message with id 123, R i# ]! W7 l* {
- can.recv(0) # receive message on FIFO 0
复制代码 ; t7 w c6 Y- k& w1 A9 P
$ k) W, Z+ h: y8 F/ N内部加速度计参见pyb.Accel. - from pyb import Accel" R7 U6 {1 X( y+ o) _9 l. l7 J u
! e" f% I9 S: a/ e- accel = Accel()
3 \3 [$ A% M4 S% w V# w y1 I+ G - print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码 / f$ Z9 K4 e5 R6 `- h0 m! l: r; j9 n
8 y0 _, H( {" x5 b8 g) ?, H2 ]
|