micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: 闪电

pyboard 快速参考手册

[复制链接]

24

主题

24

帖子

3266

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3266
发表于 2020-4-19 10:36:57 | 显示全部楼层 |阅读模式
pyboard 的快速参考

以下引脚分配适用于 PYBv1.1。您还可以查看其他版本的 pyboard 的引脚排列: PYBv1.0PYBLITEv1.0-ACPYBLITEv1.0.

下面是 pyboard 的快速参考。如果这是您第一次使用该板,请考虑先阅读以下部分:


* q, R) h0 ~4 F6 x9 T通用板控制

pyb.

  1. import pyb: f2 p" \6 m8 N$ E! R/ r* a
  2. / b/ i0 ]2 @5 W
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
    " t/ Y% z- B; n; r7 y2 c6 J2 [
  4. pyb.wfi() # pause CPU, waiting for interrupt, L( s1 }. Q0 x( h
  5. pyb.freq() # get CPU and bus frequencies  l4 o/ ^7 _& i  Y8 W( F8 z
  6. pyb.freq(60000000) # set CPU freq to 60MHz
    $ i4 x( o, \2 b/ y/ c8 z
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码

  N' `1 B: n: I1 t$ a/ k( B

1 l' n- i1 B0 V延迟和计时

使用 time模块:

  1. import time
    , m; r0 O% f5 \1 v
  2. 3 j0 x5 r) _; R8 y3 ?3 o4 ^1 Y3 [) T
  3. time.sleep(1)           # sleep for 1 second% u( [/ O& Y" R" p2 y
  4. time.sleep_ms(500)      # sleep for 500 milliseconds  A- v1 u! y# o8 D; `
  5. time.sleep_us(10)       # sleep for 10 microseconds1 t# E0 B' W& A3 D
  6. start = time.ticks_ms() # get value of millisecond counter. T8 ?& |$ O/ R% q# s$ D0 W+ i, d+ m
  7. 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.

  1. from pyb import LED8 s( T  Q5 q. C9 m
  2.   }7 r" X$ }2 `5 x6 J' _4 Y; p
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
    ) }) B: X8 n$ k. ?
  4. led.toggle()
    2 Y, ~7 j$ a. s# a+ ^. B
  5. led.on()
    5 b+ T4 q8 Y, E& z8 ^
  6. led.off(). l$ i0 b) D  N8 M
  7. * y3 X7 c' s6 |. V% h
  8. # LEDs 3 and 4 support PWM intensity (0-255)
    # U7 A' P2 `% x" h+ S( i
  9. LED(4).intensity()    # get intensity; n, m5 q$ k6 B
  10. 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.

  1. from pyb import Switch
    ! S- L+ f6 j8 N' n4 j" X! H: T7 O" O

  2. " g7 _# H, Y6 K. S" k/ f( ?
  3. sw = Switch()# W0 k* R1 i8 n! q7 @4 G
  4. sw.value() # returns True or False
    1 l4 Q* a% F) c( R+ H
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

: m" u4 k' |! i$ t2 M

) A$ _- ?3 s% W2 P: c9 z引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin! Z8 x# S9 R, o# J; C

  2. ! Q1 r: t+ p4 ^- k& z# c
  3. p_out = Pin('X1', Pin.OUT_PP)
    9 ]6 h; E- U) t& Q
  4. p_out.high()
    ! `' l" S! f* _; m; C! y
  5. p_out.low()1 F6 f! Z9 q4 Y" e5 {; \3 O

  6. ( s6 B. [' Q2 B( A4 G. q
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)+ e# g* G- w$ T, H, A. Z- b
  8. p_in.value() # get value, 0 or 1
复制代码

3 @) t  S2 a' C- [" k

. Y+ I6 W0 S( ~* Z: ?" D1 m, K伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo
    - f0 W6 D' y0 V" G: V9 a

  2. " o" V) M  m8 Q, \% \
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
    8 x: F% E6 A. K3 ?* j, W# K
  4. s1.angle(45) # move to 45 degrees
    - c8 V* Z+ n6 t3 y
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms7 A  Q( x5 e9 \9 x. C
  6. s1.speed(50) # for continuous rotation servos
复制代码
: @1 b7 f+ ?0 j, k: b

+ C2 ^( a# b' ]8 v7 _外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt
    . W) M; ]: Z! z; y8 N' Q

  2. / i" x9 ]0 J; I& `
  3. callback = lambda e: print("intr")
    0 d% N, k% b% I8 K4 P2 @1 Y3 ]. g" |
  4. 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.

  1. from pyb import Timer
    : o" p" L' t3 A  L. Z/ @2 l9 r

  2. 3 K/ Y  F' _" y! x
  3. tim = Timer(1, freq=1000)/ h. Z) {9 b; Q' P1 T( c
  4. tim.counter() # get counter value' j2 p/ X, j; `# ^5 @% c* J9 E
  5. tim.freq(0.5) # 0.5 Hz
    6 H; ~/ F* o0 I4 g3 w6 M+ A+ t4 P" [
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码

9 x1 h* T/ B* \9 I7 FRTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC. y4 d' v+ L1 x
  2. " r' m) }3 s6 j
  3. rtc = RTC()  ^/ L3 J$ K- I% ^
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time6 ]3 k& L' q) |- `" Y: L" x* j
  5. rtc.datetime() # get date and time
复制代码

- Y+ i0 P5 b. k8 b7 ^  [7 P1 _PWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer$ H0 @& x% Z- H8 [1 e

  2. " l; A' A  ~6 @* y
  3. p = Pin('X1') # X1 has TIM2, CH1
    3 R9 M8 l6 N0 L' I+ _
  4. tim = Timer(2, freq=1000)
    / g1 @' G. a$ b4 i
  5. ch = tim.channel(1, Timer.PWM, pin=p)# L. m& H9 f, J
  6. ch.pulse_width_percent(50)
复制代码

4 x% n/ d/ D7 k$ s/ e. D" s. a" LADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC* H- T' b# `8 }/ m; Z1 E

  2. % ^" O. O: v6 |/ Y; A/ N
  3. adc = ADC(Pin('X19'))
    . V% p! J2 F9 T; i
  4. adc.read() # read value, 0-4095
复制代码

. N' y& @# @% b$ S; z9 C8 G7 S1 ]& z' w  C0 W  `/ F
DAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC
    1 d4 h9 x' o, p; A

  2. . {) o- [+ g9 F& D4 J3 p4 _; Z
  3. dac = DAC(Pin('X5'))
    8 I' a! _* C) S& G" f4 Z
  4. 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.

  1. from pyb import UART5 Z7 \8 x- Z1 R" Y
  2. ; K; d, d* a& Y  z
  3. uart = UART(1, 9600)- a# B* h; C1 L0 s$ M: m
  4. uart.write('hello'). R3 a2 O% \& o. Y+ m3 F: Y  g  u
  5. uart.read(5) # read up to 5 bytes
复制代码

4 O& Y, V2 z. Q" y/ ^  M3 u8 {, l3 i
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI
    1 a; ^# _8 I# O/ {$ S
  2. - I$ [! L5 j+ m
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)& l) I! D( y! f
  4. spi.send('hello')4 w; I7 M) M: f! v, @" h
  5. spi.recv(5) # receive 5 bytes on the bus) K8 p* x0 K/ S9 ^5 g
  6. 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.

  1. from machine import I2C9 w) K; t+ @3 U# b

  2. + Q& k) Z* i% N6 D! d
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object+ d' @% l3 [% j' u; h% N
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object& m. e3 D2 R* g7 Z
  5. ( M  v' q2 l) j  S. s
  6. i2c.scan()                          # returns list of slave addresses
    ! _/ @6 K% i4 y# f
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42( M$ {" T/ j( e4 w. N( z9 q. ]" f) G
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave
    2 [3 ~" g( v9 F" R. Z
  9.   ?7 z4 C0 s# b. D6 q9 K" N$ U
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10
    5 `* m) K# G3 C+ J: c
  11. 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.

  1. from machine import I2S, Pin0 n" U( u6 J  V6 U8 D
  2. 4 H- ^) n  K0 P1 o) F6 E4 Y2 G7 o
  3. 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
  4. i2s.write(buf)             # write buffer of audio samples to I2S device
    " {0 |% D3 E" \  l; c- P, J

  5.   x: y/ m" Y7 T1 s
  6. 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
  7. 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.

  1. from pyb import CAN% L) r9 V" a0 {5 [  _, s% T
  2. ! A1 X8 I* w/ |% j5 P2 I+ m  t
  3. can = CAN(1, CAN.LOOPBACK)% j) j9 o7 ]" A" E+ ^6 J# h
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))# O; h* d2 p) h' M  m2 Z/ x
  5. can.send('message!', 123)   # send a message with id 123, R  i# ]! W7 l* {
  6. 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.

  1. from pyb import Accel" R7 U6 {1 X( y+ o) _9 l. l7 J  u

  2. ! e" f% I9 S: a/ e
  3. accel = Accel()
    3 \3 [$ A% M4 S% w  V# w  y1 I+ G
  4. 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 ]
回复

使用道具 举报

0

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2020-11-15 08:13:45 | 显示全部楼层

pyboard 快速参考手册

So happens. We can communicate on this theme.
回复

使用道具 举报

0

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2020-12-7 20:00:16 | 显示全部楼层

-

Also that we would do without your very good idea
回复

使用道具 举报

0

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2020-12-20 17:55:02 | 显示全部楼层

-

I can not recollect.
回复

使用道具 举报

0

主题

1

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2021-10-21 20:48:49 | 显示全部楼层

Very interesting information, I am looking forward to the continuation.

dgfergus ??? 2021-8-28 11:00
1 _2 c2 t, B! V# T; w0 dThank you for posting this for all of us
) M& s" e# `0 v" Z7 w
Very interesting information, I am looking forward to the continuation.
回复

使用道具 举报

0

主题

3

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2022-6-11 02:02:49 | 显示全部楼层

-

You commit an error. I can defend the position. Write to me in PM, we will discuss.
回复

使用道具 举报

0

主题

7

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2022-6-25 11:56:25 | 显示全部楼层

-

excellent idea and is duly
回复

使用道具 举报

0

主题

8

帖子

1014

积分

新手上路

Rank: 1

积分
1014
发表于 2024-7-12 18:37:01 | 显示全部楼层

Test, just a test

Hello. And Bye.
回复

使用道具 举报

0

主题

8

帖子

1014

积分

新手上路

Rank: 1

积分
1014
发表于 2024-7-27 01:23:40 | 显示全部楼层

Test, just a test

Hello. And Bye.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|micropython编程爱好网 ( 粤ICP备14010847号-3 )

粤公网安备 44030702001224号

GMT+8, 2025-7-9 17:32 , Processed in 0.140400 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表