pyboard 的快速参考 以下引脚分配适用于 PYBv1.1。您还可以查看其他版本的 pyboard 的引脚排列: PYBv1.0 或PYBLITEv1.0-AC 或 PYBLITEv1.0.  下面是 pyboard 的快速参考。如果这是您第一次使用该板,请考虑先阅读以下部分:
4 g: O/ L z' r5 x. {通用板控制见 pyb. - import pyb
! P7 h$ z" F/ z1 D
5 }7 [( }% W5 M* u- pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)7 N2 y: m* u$ W( L& e
- pyb.wfi() # pause CPU, waiting for interrupt4 T' Z+ U( o4 |
- pyb.freq() # get CPU and bus frequencies% q6 ], X' X" T! I+ W y# `
- pyb.freq(60000000) # set CPU freq to 60MHz" s2 F& y: Q5 J1 b
- pyb.stop() # stop CPU, waiting for external interrupt
复制代码
* p: M$ @" ^; P1 o- a0 w$ `! x8 e/ }2 T: _6 L' s
延迟和计时使用 time模块: - import time
; A, M* n: P$ P9 E( Y3 r4 V3 D
( N5 I; j9 v( F- time.sleep(1) # sleep for 1 second& v# D2 d& D! w; V" M3 K
- time.sleep_ms(500) # sleep for 500 milliseconds D7 J1 `" e f. g! T
- time.sleep_us(10) # sleep for 10 microseconds, S8 q/ ^% s3 J9 J- d
- start = time.ticks_ms() # get value of millisecond counter
- g0 ] a P: G" h8 ]! D - delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码
5 y2 V- O5 y0 l* I, |
7 J% P: d) |" n5 m- {内部 LED见 pyb.LED. - from pyb import LED) t H/ V6 q% ]: B F( y
- 4 g9 @+ e2 f9 A; M* M" s
- led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
0 M: w/ o7 c/ F, I7 g- y; G: L - led.toggle()
; {1 D: I1 P- }* a - led.on()
: R: Q* x8 q8 c - led.off()0 s: c. b, J7 J& g6 I3 j
$ H9 j* ]( C& q' q# l/ F- # LEDs 3 and 4 support PWM intensity (0-255)
" b! Y, n* j$ y# y' g+ q - LED(4).intensity() # get intensity
) x' E& U" f: S7 P. G. s - LED(4).intensity(128) # set intensity to half
复制代码
* h7 E+ m7 P9 F! T: E( { R5 B d# T6 ~. R
内部开关请参阅 pyb.Switch. - from pyb import Switch3 D( I l6 M, o L% ]0 s
2 B, y* S0 S0 [- @7 u" K- sw = Switch()
! a$ a1 |5 h9 P, k# ]; V - sw.value() # returns True or False
; J \7 ^# v$ N' _4 J - sw.callback(lambda: pyb.LED(1).toggle())
复制代码
7 ~$ W9 D( j" [* `( Z+ G' F9 _* y- L
引脚和 GPIO请参阅 pyb.Pin. - from pyb import Pin
9 B* T. U9 d3 `. I - - o$ L% L' a& ?) `% c" R2 \! g
- p_out = Pin('X1', Pin.OUT_PP)8 ^6 i. j& Z$ _) V) B U1 e
- p_out.high()% h9 U/ y& e' y! Z# z; @" Q' | U# o
- p_out.low()3 |# {( R, r+ p/ X$ k
0 ~- n, Y( \/ _- p_in = Pin('X2', Pin.IN, Pin.PULL_UP)* J) V( B# o* Y! S& a; Q5 S
- p_in.value() # get value, 0 or 1
复制代码
! @4 y6 h/ ]' M" L: {
* o+ z! x! Z, @& M- B( K伺服控制请参阅pyb.Servo. - from pyb import Servo! O* v) H9 C+ P: I& s, P1 z
- % L& }" P+ O. H( O
- s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
; ^; f% ?( U; n: c9 W3 G+ r& [ - s1.angle(45) # move to 45 degrees
& Y* f# s+ R% d! m, { - s1.angle(-60, 1500) # move to -60 degrees in 1500ms
5 p1 g. X* U L8 P+ Z* H- g; H - s1.speed(50) # for continuous rotation servos
复制代码 4 g y4 {7 G. G3 K% `
; z; K: R3 {; A4 k
外部中断请参阅 pyb.ExtInt. - from pyb import Pin, ExtInt% e# y6 G: V5 M9 r
- % P. | ~8 n6 }
- callback = lambda e: print("intr")
) q. s) t% A& m: H3 D1 t/ k- p4 G e - ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码 * }* R& u8 C. j: r6 `; ]' |. D
# w, d2 ^( o$ L! ~1 l! d计时器请参阅pyb.Timer. - from pyb import Timer' ^' g! C! z, O: F2 N
- 1 u/ q7 g2 M. D/ V+ b
- tim = Timer(1, freq=1000). L; D4 Z- w7 c/ d
- tim.counter() # get counter value- R8 \: U8 d% t
- tim.freq(0.5) # 0.5 Hz
9 S) p& b, [: m- C4 X, w9 w* L" } - tim.callback(lambda t: pyb.LED(1).toggle())
复制代码
2 u1 u* |2 m0 B# q7 J/ h7 w" [RTC(实时时钟)请参阅 pyb.RTC - from pyb import RTC
/ ~. A" y: J4 C# S) _5 v1 Z - / B2 C5 E- l$ N1 z7 |9 \8 ^( j
- rtc = RTC()
* L7 i8 ?3 f& \$ X9 ~ - rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
: a* r) C" K1 J - rtc.datetime() # get date and time
复制代码 5 ]0 [2 O* p3 E; s
PWM(脉宽调制)请参阅pyb.Pin 和 pyb.Timer. - from pyb import Pin, Timer; J# D5 p9 X/ Q) \) ]9 T% C3 ?
- ) U) o/ c$ h' `. t; }
- p = Pin('X1') # X1 has TIM2, CH1
8 k, k( _* Y/ n$ ]* _4 T/ P - tim = Timer(2, freq=1000)
4 k# N% b$ n* I6 l" @9 p - ch = tim.channel(1, Timer.PWM, pin=p)6 P" w) h7 d1 z/ d
- ch.pulse_width_percent(50)
复制代码
1 I- l: w3 @$ p( QADC(模数转换)请参阅pyb.Pin 和pyb.ADC. - from pyb import Pin, ADC
6 x0 t* f, K& r - ( I& Z/ h9 { z+ \3 Z$ @+ @# i. [
- adc = ADC(Pin('X19'))$ h$ ~/ E: E/ C( o( L( ?
- adc.read() # read value, 0-4095
复制代码
D% I& g+ p5 p
6 b& _/ e& E5 w9 dDAC(数模转换)请参阅pyb.Pin 和 pyb.DAC. - from pyb import Pin, DAC: s5 J6 C" U. v- C1 v
- 1 M [9 t# t# y K
- dac = DAC(Pin('X5'))
5 L' u# e7 G. D, V& p& j - dac.write(120) # output between 0 and 255
复制代码
; Q" a6 ^$ R# o3 `
1 [9 b% B, B vUART(串行总线)请参阅 pyb.UART. - from pyb import UART" Y- P% n7 x }
% _& N3 q5 f2 T) K$ G7 i+ ^4 v- uart = UART(1, 9600)
) M% \$ }# B6 l5 m$ q - uart.write('hello')
& g0 E3 @4 y$ \" V - uart.read(5) # read up to 5 bytes
复制代码
: E$ c" x. X8 c& P, C5 \$ W% d+ v1 g7 R9 k
SPI总线请参阅 pyb.SPI. - from pyb import SPI+ W4 x4 ~9 K9 M2 } g: ?9 g& g1 K
- % g: \+ e! I) j$ |
- spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
4 G, a) k- J. z - spi.send('hello') F( ]4 ]4 Q* w/ p9 [% ~
- spi.recv(5) # receive 5 bytes on the bus
) p" h5 K$ F r! f6 I - spi.send_recv('hello') # send and receive 5 bytes
复制代码 5 O6 P6 p3 w" q1 b. H
9 @* [# T+ S5 W1 ^: X% j
I2C总线硬件 I2C 可通过I2C('X') 和用于 pyboard 的 X 和 Y 两半 I2C('Y')。或者,传入外围设备的整数标识符,例如I2C(1)。通过显式指定 scl 和 sda 引脚而不是总线名称,也可以使用软件 I2C 。有关更多详细信息,请参阅 machine.I2C. - from machine import I2C' k. `! ~5 g% l9 _1 y' Q! {) D& f
. F5 W% b5 ^$ \8 D- i2c = I2C('X', freq=400000) # create hardware I2c object% p+ j* t. x8 Z* v1 R+ G3 y
- i2c = I2C(scl='X1', sda='X2', freq=100000) # create software I2C object
3 e, V( z, H4 G$ j' e - - [ |" V" Z6 q3 j3 |5 K7 T# Z
- i2c.scan() # returns list of slave addresses
% t+ Y. Q9 T Q& ]- o8 s& ? - i2c.writeto(0x42, 'hello') # write 5 bytes to slave with address 0x42
% W) V6 G2 H- `& d# R* @ - i2c.readfrom(0x42, 5) # read 5 bytes from slave/ I; I+ w4 R, G
- 8 D) s- u. N6 y$ ^* c+ i
- i2c.readfrom_mem(0x42, 0x10, 2) # read 2 bytes from slave 0x42, slave memory 0x10
6 s0 K: @) f& d7 O3 P: }( z7 x M - i2c.writeto_mem(0x42, 0x10, 'xy') # write 2 bytes to slave 0x42, slave memory 0x10
复制代码 , C/ a) C1 d4 V: J
8 k' w& V+ N4 o注意:对于传统 I2C 支持,请参阅 pyb.I2C。
) i2 r+ F1 t7 f0 {7 m& CI2S总线参见 machine.I2S. - from machine import I2S, Pin* i, O) W/ W8 }6 R. j: o* R( `
% }3 f8 F: F3 d+ u* A* z- 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# z3 o* j+ G5 Q1 q) N# k7 e7 n
- i2s.write(buf) # write buffer of audio samples to I2S device
3 S6 p6 \$ C2 D& K( C" a% e
) y0 a, f- R; b& {! T9 d- 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
: P5 n- G9 c! L o* P - i2s.readinto(buf) # fill buffer with audio samples from I2S device
复制代码 4 N, z. y: K4 Z. X& z3 e0 j
I2S 类目前作为技术预览版提供。在预览期间,鼓励用户提供反馈。基于此反馈,I2S 类 API 和实现可能会更改。 PYBv1.0/v1.1 有一个 I2S 总线,id=2。PYBD-SFxW 有两条 I2S 总线,id=1 和 id=2。I2S 与 SPI 共享。
( R0 n! c, W0 ]6 ]CAN总线(控制器局域网)参见 pyb.CAN. - from pyb import CAN
7 s6 R. S7 r5 B1 J6 F4 E - : P/ v( u8 s& D' o
- can = CAN(1, CAN.LOOPBACK)
h4 v1 f! u3 `4 x& x% k( e9 q - can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))4 p! x: h2 }0 E8 K
- can.send('message!', 123) # send a message with id 123! J9 i- E# i6 ~. M" @* V
- can.recv(0) # receive message on FIFO 0
复制代码
/ @0 e8 a7 ]; z% B* h
% j3 r) b) w. d6 o# B! t8 H4 G+ I内部加速度计参见pyb.Accel. - from pyb import Accel! u, f+ L" v8 M; [9 x: F
- 4 M: r# s8 k2 s# h* c9 J/ u
- accel = Accel()
* ~$ v( m! P& b1 O- ?; M- x - print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码
6 U. ]! _6 a7 O- h6 Z! @ ?8 F5 C$ ~* E" _4 X' V |
|