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 的快速参考。如果这是您第一次使用该板,请考虑先阅读以下部分:

& S1 P  \. a. x/ f0 U; L* M* C' Z
通用板控制

pyb.

  1. import pyb
    , M/ b/ J! {8 l; Y

  2. * {; B. C* ?+ {' D
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)5 h+ O$ o- j8 {
  4. pyb.wfi() # pause CPU, waiting for interrupt
    , T: z' M- s; v
  5. pyb.freq() # get CPU and bus frequencies) {1 V5 ]6 B( F, K
  6. pyb.freq(60000000) # set CPU freq to 60MHz
    9 L2 `* s) H4 c5 A0 d8 c+ F0 J& |
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码
" |' I# H- o& ]& S2 C7 W

+ X7 S/ O1 W, Q" |延迟和计时

使用 time模块:

  1. import time! [# w8 j1 e' j& m6 N' ^0 O

  2. 7 w8 {2 @* o( u( G
  3. time.sleep(1)           # sleep for 1 second/ Y9 C6 W0 a4 f$ I% p: `
  4. time.sleep_ms(500)      # sleep for 500 milliseconds) W  k, C) ~" @
  5. time.sleep_us(10)       # sleep for 10 microseconds6 ?' t9 t! f" N" e! ]4 R
  6. start = time.ticks_ms() # get value of millisecond counter
    ' b0 R5 \, R& F# h* z+ }
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码

1 b: p/ }. `6 L. r) c' n* K& Z8 A

' N' @2 K- q+ i内部 LED

pyb.LED.

  1. from pyb import LED
    7 ~9 Q2 o1 I. _- l. i0 T; V
  2. $ i* V+ y6 P% d+ [( R6 e8 A% R
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue7 [9 H* L, t2 w
  4. led.toggle()( J2 X1 h* Z. k+ O( n
  5. led.on()
    / a- `6 U/ ^: J7 T
  6. led.off()$ j! F9 j. c' x$ j
  7. ( \/ L! s: u6 I% O
  8. # LEDs 3 and 4 support PWM intensity (0-255)5 e" e  w% z9 y- ?; R6 K; n
  9. LED(4).intensity()    # get intensity
    8 E* G/ L! R; v, i% `% K! T0 S
  10. LED(4).intensity(128) # set intensity to half
复制代码
+ V- Q. Z( g4 c+ ?/ [: g
8 f% ~+ _8 y. u" w, x+ H
内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch, I* b) u5 h" c" d

  2. 8 A5 m$ D8 v. N. _8 ^- ?# ?7 g
  3. sw = Switch()
    2 {3 u# ~- R3 w. q/ I
  4. sw.value() # returns True or False
    & S# Z8 j: {6 Q+ I
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码
' ~. l$ q0 v* {% G
( @; e( Z# T7 M- T0 A8 e
引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin  p' i. P9 D8 [" A) A
  2. : i0 Y! y' s7 U3 V) h: b
  3. p_out = Pin('X1', Pin.OUT_PP)+ d& }- K' i4 }! }: ?: c$ u  Y0 D
  4. p_out.high()& N: }6 f7 w' K# |7 S8 D+ ?
  5. p_out.low()
    : p0 }3 B( r' @9 R8 b5 A

  6. 2 ^) v/ b7 L  M. f9 h0 _
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
    - o3 H& B& H# U  P; V& }
  8. p_in.value() # get value, 0 or 1
复制代码
; k( J0 j) u; c  t' o0 i* q
# u- {- z7 D3 @" I6 [0 j
伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo. ?9 K( I+ i1 w5 R: |" E1 G

  2. ' w; s4 B' C( ~/ O6 y& c
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
    ( Y: N; ?; S+ c1 `
  4. s1.angle(45) # move to 45 degrees# y* Z0 a8 b. n3 @  M- J' \
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms
    1 k% C4 M, |; `- R" I) A; K  V
  6. s1.speed(50) # for continuous rotation servos
复制代码
  d; `/ M+ `9 H& t
* R. m- b" Y# H" R. O
外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt
    ! w7 d& }9 D" h7 O3 P

  2. 3 e: m1 L& ]0 m1 V
  3. callback = lambda e: print("intr")
    4 f4 v  w! r: K& j: }' o9 d
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码

* r& o5 D, n5 N: e9 s2 \: u0 P- _/ C: m/ H* X
计时器

请参阅pyb.Timer.

  1. from pyb import Timer
      q8 r& C( y/ [* e! J& n: Q6 o7 F2 m7 g

  2. 6 S: R* s# `, i7 Q6 s
  3. tim = Timer(1, freq=1000)
    + K) ~! `+ _8 {, V7 ^
  4. tim.counter() # get counter value# r4 q* g8 G6 S; a) a* O6 q- x
  5. tim.freq(0.5) # 0.5 Hz
    , i+ X( _5 E& L0 G; |$ m
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码

- T6 _/ X, H1 L5 `' T# `RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC3 |: f# s, Y; n( D( V
  2. : K, R& _& z" v" @7 u  n$ D* r% F
  3. rtc = RTC()
    ( d/ h  P) U  g2 {, _* C* j3 c
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    - h1 O( [7 x0 J# I0 g: j. i
  5. rtc.datetime() # get date and time
复制代码

% ]; ~* I! y3 M# D$ |2 HPWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer9 ~2 G! u# e! w5 M0 d6 k: W2 S2 b
  2. ) u8 Q* g9 C6 h; Q8 n" d
  3. p = Pin('X1') # X1 has TIM2, CH1
    6 ?- M, q9 e, b+ i7 A) R
  4. tim = Timer(2, freq=1000)! M" _+ j4 ?4 K
  5. ch = tim.channel(1, Timer.PWM, pin=p), b- {9 B  @: i: A* E" O
  6. ch.pulse_width_percent(50)
复制代码

0 l) v) B9 G5 J  sADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC
    8 L4 D8 L. [# t8 ?9 M+ x
  2. # q2 }- \$ Q$ @7 y, n5 m" ]
  3. adc = ADC(Pin('X19'))
    , }, q7 M/ }" T8 v7 r2 {2 @
  4. adc.read() # read value, 0-4095
复制代码
- L8 A. @. |5 g( m* ~; Q7 y

9 a+ Q& J. X6 y  B4 \DAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC
    5 K5 f) n' R2 Y( \/ c# p
  2. - K$ x) h: @5 X! H5 ^
  3. dac = DAC(Pin('X5'))
    $ e  `6 {$ D$ ?) F9 L  V
  4. dac.write(120) # output between 0 and 255
复制代码

$ W) S/ Q1 B5 m$ y! V% Q, x# S: X3 s7 f8 B8 u+ |9 y" D
UART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART
    7 [  `4 t; x( e- [$ H

  2. # _+ X! o  H4 o7 o8 F3 g
  3. uart = UART(1, 9600)& F* v1 x" ], ?# m
  4. uart.write('hello')' V8 @1 `% ?+ B" Z9 i9 H  ?
  5. uart.read(5) # read up to 5 bytes
复制代码
9 }/ C/ a: |0 m

: U/ H: @. }  }$ U/ aSPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI
    6 n* a' x: T+ B# j0 n

  2. * E9 o. p* U0 Y8 L
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)! z3 L) S7 g4 U  ^3 C# E4 R# @0 E' }
  4. spi.send('hello')
    " [& b1 R+ D: g6 Q9 B: x
  5. spi.recv(5) # receive 5 bytes on the bus
    4 i, |5 y+ V1 s( K% q$ @
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码
- A) E1 u6 Y+ O$ M, ]

; G0 C- k/ q' |8 s  Y2 _/ }! TI2C总线

硬件 I2C 可通过I2C('X') 和用于 pyboard 的 X 和 Y 两半 I2C('Y')。或者,传入外围设备的整数标识符,例如I2C(1)。通过显式指定 scl 和 sda 引脚而不是总线名称,也可以使用软件 I2C 。有关更多详细信息,请参阅 machine.I2C.

  1. from machine import I2C
    5 f4 m4 r" \/ u5 S" H$ c
  2. / i8 l' v! C9 N3 q5 |
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object% J9 l7 D; W1 H( o2 |6 \
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object$ x8 w- h, P' }

  5. 0 d* L- E& d( {
  6. i2c.scan()                          # returns list of slave addresses+ A' {+ K+ v% t' M! v* j5 W- u8 r0 T
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42* e. j# a' Q+ w7 G/ F' r
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave
    1 N. L9 D: e) O5 b- H
  9. / p( h6 Y- ~. z1 ~( p
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10: m! f" _- d4 K  u: X
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码
5 w: L2 m8 W' P( ~
; g, b9 B4 p0 u3 \6 _) [3 X6 c

注意:对于传统 I2C 支持,请参阅 pyb.I2C

8 i9 D1 ~: D- S. m  @
I2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin4 s! m9 X# Y" |/ [
  2. , @* L; [: t& m# a
  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/ A" g! U0 I- ^9 H7 g) K2 b* E
  4. i2s.write(buf)             # write buffer of audio samples to I2S device
    ! m9 u, W9 x+ R. e9 X# |

  5. 2 M6 Y* [, T) V4 x- |
  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
    2 Z3 J( o4 ~4 o  Z) L' T. r7 _
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码

% O& {' l% i1 q% x- R

I2S 类目前作为技术预览版提供。在预览期间,鼓励用户提供反馈。基于此反馈,I2S 类 API 和实现可能会更改。

PYBv1.0/v1.1 有一个 I2S 总线,id=2。PYBD-SFxW 有两条 I2S 总线,id=1 和 id=2。I2S 与 SPI 共享。


4 N( {; O/ c7 L) W( [CAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN
    0 v" l! R# B; `, y: m

  2. " B5 @# x  o. p) ^! }
  3. can = CAN(1, CAN.LOOPBACK)
    4 m) }2 N( D, \  m1 O' B: W
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))( \5 e1 _, o5 u
  5. can.send('message!', 123)   # send a message with id 123
    : f8 d( p, s& j8 y, ]' b; J
  6. can.recv(0)                 # receive message on FIFO 0
复制代码

- f1 j( ]7 Q6 g# g/ v# _9 _- I* x$ ?* p2 ^5 E+ [
内部加速度计

参见pyb.Accel.

  1. from pyb import Accel) |$ H6 B: [7 y$ B7 p4 ^
  2. 6 `1 w2 H( N, ]& A. Z3 y3 m
  3. accel = Accel()
    2 {3 b+ O+ _  h2 [, W2 x
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码
: d% ^+ E1 H4 `1 H
) Y1 v* U3 K& [, V# `2 [. r3 `
回复

使用道具 举报

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:005 C9 j& }! R) n1 h/ L0 i" v
Thank you for posting this for all of us
1 z' j8 x4 g- A
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 19:42 , Processed in 0.218400 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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