micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 344359|回复: 8

pyboard 快速参考手册

[复制链接]

24

主题

24

帖子

3244

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

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


4 g: O/ L  z' r5 x. {通用板控制

pyb.

  1. import pyb
    ! P7 h$ z" F/ z1 D

  2. 5 }7 [( }% W5 M* u
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)7 N2 y: m* u$ W( L& e
  4. pyb.wfi() # pause CPU, waiting for interrupt4 T' Z+ U( o4 |
  5. pyb.freq() # get CPU and bus frequencies% q6 ], X' X" T! I+ W  y# `
  6. pyb.freq(60000000) # set CPU freq to 60MHz" s2 F& y: Q5 J1 b
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码

* p: M$ @" ^; P1 o- a0 w$ `! x8 e
/ }2 T: _6 L' s
延迟和计时

使用 time模块:

  1. import time
    ; A, M* n: P$ P9 E( Y3 r4 V3 D

  2. ( N5 I; j9 v( F
  3. time.sleep(1)           # sleep for 1 second& v# D2 d& D! w; V" M3 K
  4. time.sleep_ms(500)      # sleep for 500 milliseconds  D7 J1 `" e  f. g! T
  5. time.sleep_us(10)       # sleep for 10 microseconds, S8 q/ ^% s3 J9 J- d
  6. start = time.ticks_ms() # get value of millisecond counter
    - g0 ]  a  P: G" h8 ]! D
  7. 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.

  1. from pyb import LED) t  H/ V6 q% ]: B  F( y
  2. 4 g9 @+ e2 f9 A; M* M" s
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
    0 M: w/ o7 c/ F, I7 g- y; G: L
  4. led.toggle()
    ; {1 D: I1 P- }* a
  5. led.on()
    : R: Q* x8 q8 c
  6. led.off()0 s: c. b, J7 J& g6 I3 j

  7. $ H9 j* ]( C& q' q# l/ F
  8. # LEDs 3 and 4 support PWM intensity (0-255)
    " b! Y, n* j$ y# y' g+ q
  9. LED(4).intensity()    # get intensity
    ) x' E& U" f: S7 P. G. s
  10. LED(4).intensity(128) # set intensity to half
复制代码

* h7 E+ m7 P9 F! T: E( {  R
5 B  d# T6 ~. R
内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch3 D( I  l6 M, o  L% ]0 s

  2. 2 B, y* S0 S0 [- @7 u" K
  3. sw = Switch()
    ! a$ a1 |5 h9 P, k# ]; V
  4. sw.value() # returns True or False
    ; J  \7 ^# v$ N' _4 J
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

7 ~$ W9 D( j" [* `( Z
+ G' F9 _* y- L
引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin
    9 B* T. U9 d3 `. I
  2. - o$ L% L' a& ?) `% c" R2 \! g
  3. p_out = Pin('X1', Pin.OUT_PP)8 ^6 i. j& Z$ _) V) B  U1 e
  4. p_out.high()% h9 U/ y& e' y! Z# z; @" Q' |  U# o
  5. p_out.low()3 |# {( R, r+ p/ X$ k

  6. 0 ~- n, Y( \/ _
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)* J) V( B# o* Y! S& a; Q5 S
  8. p_in.value() # get value, 0 or 1
复制代码

! @4 y6 h/ ]' M" L: {

* o+ z! x! Z, @& M- B( K伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo! O* v) H9 C+ P: I& s, P1 z
  2. % L& }" P+ O. H( O
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
    ; ^; f% ?( U; n: c9 W3 G+ r& [
  4. s1.angle(45) # move to 45 degrees
    & Y* f# s+ R% d! m, {
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms
    5 p1 g. X* U  L8 P+ Z* H- g; H
  6. s1.speed(50) # for continuous rotation servos
复制代码
4 g  y4 {7 G. G3 K% `
; z; K: R3 {; A4 k
外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt% e# y6 G: V5 M9 r
  2. % P. |  ~8 n6 }
  3. callback = lambda e: print("intr")
    ) q. s) t% A& m: H3 D1 t/ k- p4 G  e
  4. 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.

  1. from pyb import Timer' ^' g! C! z, O: F2 N
  2. 1 u/ q7 g2 M. D/ V+ b
  3. tim = Timer(1, freq=1000). L; D4 Z- w7 c/ d
  4. tim.counter() # get counter value- R8 \: U8 d% t
  5. tim.freq(0.5) # 0.5 Hz
    9 S) p& b, [: m- C4 X, w9 w* L" }
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码

2 u1 u* |2 m0 B# q7 J/ h7 w" [RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC
    / ~. A" y: J4 C# S) _5 v1 Z
  2. / B2 C5 E- l$ N1 z7 |9 \8 ^( j
  3. rtc = RTC()
    * L7 i8 ?3 f& \$ X9 ~
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    : a* r) C" K1 J
  5. rtc.datetime() # get date and time
复制代码
5 ]0 [2 O* p3 E; s
PWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer; J# D5 p9 X/ Q) \) ]9 T% C3 ?
  2. ) U) o/ c$ h' `. t; }
  3. p = Pin('X1') # X1 has TIM2, CH1
    8 k, k( _* Y/ n$ ]* _4 T/ P
  4. tim = Timer(2, freq=1000)
    4 k# N% b$ n* I6 l" @9 p
  5. ch = tim.channel(1, Timer.PWM, pin=p)6 P" w) h7 d1 z/ d
  6. ch.pulse_width_percent(50)
复制代码

1 I- l: w3 @$ p( QADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC
    6 x0 t* f, K& r
  2. ( I& Z/ h9 {  z+ \3 Z$ @+ @# i. [
  3. adc = ADC(Pin('X19'))$ h$ ~/ E: E/ C( o( L( ?
  4. adc.read() # read value, 0-4095
复制代码

  D% I& g+ p5 p
6 b& _/ e& E5 w9 dDAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC: s5 J6 C" U. v- C1 v
  2. 1 M  [9 t# t# y  K
  3. dac = DAC(Pin('X5'))
    5 L' u# e7 G. D, V& p& j
  4. dac.write(120) # output between 0 and 255
复制代码

; Q" a6 ^$ R# o3 `
1 [9 b% B, B  vUART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART" Y- P% n7 x  }

  2. % _& N3 q5 f2 T) K$ G7 i+ ^4 v
  3. uart = UART(1, 9600)
    ) M% \$ }# B6 l5 m$ q
  4. uart.write('hello')
    & g0 E3 @4 y$ \" V
  5. uart.read(5) # read up to 5 bytes
复制代码

: E$ c" x. X8 c& P, C5 \$ W% d+ v1 g7 R9 k
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI+ W4 x4 ~9 K9 M2 }  g: ?9 g& g1 K
  2. % g: \+ e! I) j$ |
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
    4 G, a) k- J. z
  4. spi.send('hello')  F( ]4 ]4 Q* w/ p9 [% ~
  5. spi.recv(5) # receive 5 bytes on the bus
    ) p" h5 K$ F  r! f6 I
  6. 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.

  1. from machine import I2C' k. `! ~5 g% l9 _1 y' Q! {) D& f

  2. . F5 W% b5 ^$ \8 D
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object% p+ j* t. x8 Z* v1 R+ G3 y
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object
    3 e, V( z, H4 G$ j' e
  5. - [  |" V" Z6 q3 j3 |5 K7 T# Z
  6. i2c.scan()                          # returns list of slave addresses
    % t+ Y. Q9 T  Q& ]- o8 s& ?
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42
    % W) V6 G2 H- `& d# R* @
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave/ I; I+ w4 R, G
  9. 8 D) s- u. N6 y$ ^* c+ i
  10. 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
  11. 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.

  1. from machine import I2S, Pin* i, O) W/ W8 }6 R. j: o* R( `

  2. % }3 f8 F: F3 d+ u* A* z
  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# z3 o* j+ G5 Q1 q) N# k7 e7 n
  4. i2s.write(buf)             # write buffer of audio samples to I2S device
    3 S6 p6 \$ C2 D& K( C" a% e

  5. ) y0 a, f- R; b& {! T9 d
  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
    : P5 n- G9 c! L  o* P
  7. 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.

  1. from pyb import CAN
    7 s6 R. S7 r5 B1 J6 F4 E
  2. : P/ v( u8 s& D' o
  3. can = CAN(1, CAN.LOOPBACK)
      h4 v1 f! u3 `4 x& x% k( e9 q
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))4 p! x: h2 }0 E8 K
  5. can.send('message!', 123)   # send a message with id 123! J9 i- E# i6 ~. M" @* V
  6. 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.

  1. from pyb import Accel! u, f+ L" v8 M; [9 x: F
  2. 4 M: r# s8 k2 s# h* c9 J/ u
  3. accel = Accel()
    * ~$ v( m! P& b1 O- ?; M- x
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码

6 U. ]! _6 a7 O- h6 Z! @  ?8 F5 C$ ~* E" _4 X' V  |
回复

使用道具 举报

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' r0 O& I" d; [" Q
Thank you for posting this for all of us
% n: [: m" y4 R. \7 |! e$ h, _2 J
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-4 16:52 , Processed in 0.218400 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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