micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 291038|回复: 8

pyboard 快速参考手册

[复制链接]

24

主题

24

帖子

3146

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

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


8 f) `' H: d& Q6 k" {- E通用板控制

pyb.

  1. import pyb
    8 ~1 _, B3 j6 I. M5 N
  2. $ N1 l+ j4 ~$ r( p
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)0 x8 v; i* O, o, x& H
  4. pyb.wfi() # pause CPU, waiting for interrupt5 [; W& }1 d* e4 F) v. ?/ Q: V6 m5 q
  5. pyb.freq() # get CPU and bus frequencies3 O' j& }* M" B) _' `3 l
  6. pyb.freq(60000000) # set CPU freq to 60MHz
    & Q6 T. P$ h* |6 q  _; j& M( z, c
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码

, j* {3 n. d  q* [. f) D1 m5 A- q5 ^

7 R8 n3 i& w. G延迟和计时

使用 time模块:

  1. import time$ ?. E0 t7 h) c- C& H0 P# [" Q
  2. 8 f# O9 a' H+ J3 i, y& x1 t5 A
  3. time.sleep(1)           # sleep for 1 second
    2 A+ H0 u0 }7 T$ @. e! s
  4. time.sleep_ms(500)      # sleep for 500 milliseconds
    : e1 |5 C( d8 H, ~# y0 ~
  5. time.sleep_us(10)       # sleep for 10 microseconds1 O+ N; @, }: f' K+ j
  6. start = time.ticks_ms() # get value of millisecond counter
    & V; h. d1 J; `3 z% N, F6 l
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码

/ a6 y8 n  [& F& A: p1 X
& ^6 P0 r  P( l2 M/ _% p* k$ b
内部 LED

pyb.LED.

  1. from pyb import LED1 z% d! q5 o' M. o$ G9 D0 L1 [
  2. & E% ]# j7 s( W; F
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
    / G/ f% \8 Z5 |/ {8 k
  4. led.toggle()1 K4 `3 t; E0 N$ E5 U$ \5 D: W
  5. led.on()
    6 [7 P9 M- I0 t/ {7 l- j
  6. led.off()/ u$ |* k4 H- B$ v6 [) K

  7. ! c# T; @5 {( G  ~% K
  8. # LEDs 3 and 4 support PWM intensity (0-255)6 Y  n6 G9 ], K( ?
  9. LED(4).intensity()    # get intensity# R+ E/ w6 `' u  |$ Q' w. m' n
  10. LED(4).intensity(128) # set intensity to half
复制代码
! A" I( W* ~5 {  i: u5 H2 E, H; @
+ t5 R) B$ P3 u) \) |4 N/ y! Y
内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch
    ( t% x5 F! U3 y' @7 O
  2. 7 _4 E/ Z+ [6 f3 E
  3. sw = Switch()7 B4 N) w, |% @$ L, K
  4. sw.value() # returns True or False
    ( I7 ]; o. g# X3 }
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

: b! f, O1 F% r% [+ d  @

: {# H; ]+ s3 W7 j2 F: n) D1 J引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin
    $ ?4 g) I( F1 f

  2. % M! }: N) {. M( l
  3. p_out = Pin('X1', Pin.OUT_PP)0 [" J& y7 @* M2 H& P% Q
  4. p_out.high()0 ^8 @* v& t' r/ X7 i% ^, G4 j5 t$ |- l
  5. p_out.low()
    0 k  j) }( |+ s/ e5 }

  6. 4 J0 x8 l. R; q. W- L# r% z
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
    4 }8 {1 r0 {" z
  8. p_in.value() # get value, 0 or 1
复制代码

: Y/ k* f; x$ k! h

* `9 i8 ~' k# O  O; [- a伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo
    1 B9 |* p2 {, F- [) h
  2. & R; Q: ]5 y; S6 h* R$ _& }- {
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)  T. i6 ]0 |+ B* X7 A% }  `
  4. s1.angle(45) # move to 45 degrees4 Z/ r+ u) t: s) n8 {; t
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms
    , V/ L* d' u) K$ S) T6 O; R8 x: m
  6. s1.speed(50) # for continuous rotation servos
复制代码

" v$ Y5 A2 Y9 S) |- h% K
+ L! y; p+ B. F$ z: m/ g) R外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt
    . ~+ u5 O4 h5 b, I! Z  f7 W
  2. * ^4 g( y3 V; H! E  r( [6 D" J
  3. callback = lambda e: print("intr")
    6 ]3 _3 z5 X/ ]$ t& m) G8 d- M
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码
) h8 S1 X  W* q9 N" N6 W

3 W6 Y+ l# _+ }计时器

请参阅pyb.Timer.

  1. from pyb import Timer% Y! V, ]* y3 P
  2. , ?" L$ l& M9 j: Q  p. u
  3. tim = Timer(1, freq=1000)
    % _- K% L- E6 f% T
  4. tim.counter() # get counter value
    # [9 Y5 T  _$ f8 _+ P6 s
  5. tim.freq(0.5) # 0.5 Hz  C5 E4 V5 Y0 t6 b/ |- C* ?
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码

, r. S0 G9 v* V+ G2 g; {RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC$ }  |7 O* Z8 ?' D5 p7 F+ |) W

  2. % ?+ X$ Z1 `& B0 s2 G  s6 w. @* h
  3. rtc = RTC()6 s# A1 U/ x3 w3 o  l
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    6 Y: t2 R6 h. j) G4 L
  5. rtc.datetime() # get date and time
复制代码
6 B. P7 [/ c; y. `7 r" w3 Q
PWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer
    + ?- B. H; h: f

  2. " C: b. F* i8 m( a: p5 ^4 Z! x
  3. p = Pin('X1') # X1 has TIM2, CH11 a0 ^! T7 M3 Y9 |; a( K( ?" X% t+ D
  4. tim = Timer(2, freq=1000)
    0 N3 p- I0 D4 p/ C* v( L- B) z
  5. ch = tim.channel(1, Timer.PWM, pin=p)
    / V9 C; e$ {3 A' L5 O& z/ N9 }
  6. ch.pulse_width_percent(50)
复制代码
8 Z/ w1 }7 Q2 P2 x8 l
ADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC$ q6 {- _# ~: L- _" L* Y
  2. % E! q. L0 E( p( ~9 q0 W/ z6 k
  3. adc = ADC(Pin('X19'))* B+ {$ v; a* D) \1 ~
  4. adc.read() # read value, 0-4095
复制代码

+ o, F4 l! A/ V% M& ^# k7 `+ S2 j+ o5 y+ S$ y
DAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC) M9 A4 \3 D8 L: ^  u) ~+ L
  2. 1 ?! Y$ v1 [( [: ?1 Q
  3. dac = DAC(Pin('X5'))! k) c& o/ m& Q) s
  4. dac.write(120) # output between 0 and 255
复制代码
6 c7 v4 Q& x4 n6 U5 p

9 w, P% A  ~4 j8 r2 H+ TUART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART+ P) L. [) i2 O3 b0 e3 K
  2. # ]) V! Y7 [: g8 \- i# C0 d
  3. uart = UART(1, 9600)
    * ^3 u/ @( a2 Z
  4. uart.write('hello')
    - t% m' ^8 z8 U: F" x' a2 F. w
  5. uart.read(5) # read up to 5 bytes
复制代码
& E; d5 x" i/ o5 E
( R% a$ n* A2 \% c* ?! @) y
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI! s0 y2 c7 g+ h+ |) t
  2. ( O" R5 F  B. m: j
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)5 b3 V. Z" z* V. M
  4. spi.send('hello')
    : `  ?9 i& ~3 T& d* |
  5. spi.recv(5) # receive 5 bytes on the bus1 g2 g( i, v' ?1 x9 Q0 t5 o0 j
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码

0 U# j' A7 s# c' n
0 o" |7 M& a+ Y. ?. hI2C总线

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

  1. from machine import I2C
    . f$ A. j$ l7 A, K' P
  2. ) M9 q6 {! b  l; d+ Y
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object
    ) K% u0 K* z& o! M- w, K! ]
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object) B6 P* z/ p; z4 ^

  5. 7 L) F* J) w: ?# b2 M: N0 |
  6. i2c.scan()                          # returns list of slave addresses
    : F' ]4 F5 e; N/ ]* I$ `2 U
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x422 Q! @4 {% K# D5 I  v3 L
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave
    4 u+ E9 F# k; _$ ~  O& d
  9. 7 Y, h3 e8 o+ C, F
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10
    % e3 R' z/ U* z+ Z, ~
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码

& |' X4 `+ F5 j7 p7 m; [8 `# o8 I' H6 G# v

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


; q" Y3 t$ Q( v* `/ |; lI2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin
    9 i2 Q6 N6 o! _* p0 ~

  2. 0 ]4 V2 ~4 q% l3 p, ^  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
    1 \  S( a$ V- Y: r
  4. i2s.write(buf)             # write buffer of audio samples to I2S device; A6 x* |8 Z$ G: M- C2 l: z

  5. ; X0 p$ r( X7 M5 K$ U6 U( E2 S; h  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
    * W  {7 i# C6 |' D( N! d+ _
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码
" n* g2 L+ \' F3 W/ U0 c6 B

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

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


# O4 p2 t9 Z: d. \: \% lCAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN
    6 ^% I% `& N# a6 L7 ~
  2. # W6 T) B* C3 M' |, y* z% h3 B
  3. can = CAN(1, CAN.LOOPBACK)+ f0 b$ K3 L7 |, H
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
    5 R8 v7 _# N# Q6 Y/ V
  5. can.send('message!', 123)   # send a message with id 123; Q" H4 X5 [0 ^, S# f3 s0 P0 g! g7 B
  6. can.recv(0)                 # receive message on FIFO 0
复制代码

' r. n# G# g/ M' I9 E' ~& Y* I
# j. H9 `, E  e7 i: _内部加速度计

参见pyb.Accel.

  1. from pyb import Accel
    9 v* z0 f1 E6 t

  2. . `8 g# u, T1 B" T
  3. accel = Accel()
    1 A) ]# |9 x% _' p5 O: O, g3 D
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码

* X# K9 {, S" y( T; k  m" [
: i8 t0 Z( Z1 q! D' Z  ?& g1 P
回复

使用道具 举报

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
3 c6 T4 M2 B* d" {7 WThank you for posting this for all of us

+ i% x  S5 x  H, HVery 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

帖子

996

积分

新手上路

Rank: 1

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

Test, just a test

Hello. And Bye.
回复

使用道具 举报

0

主题

8

帖子

996

积分

新手上路

Rank: 1

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

Test, just a test

Hello. And Bye.
回复

使用道具 举报

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

本版积分规则

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

粤公网安备 44030702001224号

GMT+8, 2025-5-9 12:01 , Processed in 0.218401 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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