micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: 闪电

pyboard 快速参考手册

[复制链接]

24

主题

24

帖子

3270

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

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

4 m$ N4 E. O  \  L: u* t/ K
通用板控制

pyb.

  1. import pyb
    ) P* _1 v$ C3 Q
  2. 0 w) n$ P! w0 t2 X7 a1 w
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1), t$ |4 T  r9 Q/ j, }  l9 c8 U1 z
  4. pyb.wfi() # pause CPU, waiting for interrupt7 G, C, ~" v% F% U! S1 o3 k# m5 K
  5. pyb.freq() # get CPU and bus frequencies$ b0 N5 I+ F; J  ^- K* V2 k
  6. pyb.freq(60000000) # set CPU freq to 60MHz( w( v( j) `; d
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码

2 D( j2 c0 I0 ^- |- J
' ?  d7 v  u4 g, B: Z
延迟和计时

使用 time模块:

  1. import time
    3 _) n( L- b9 Z8 b$ {  `

  2. 1 m( m' i6 J6 ~) t% I
  3. time.sleep(1)           # sleep for 1 second5 i0 q, t& x9 j0 X
  4. time.sleep_ms(500)      # sleep for 500 milliseconds* e" E) E/ ?7 D) C; ?7 p# R" \
  5. time.sleep_us(10)       # sleep for 10 microseconds- s& d8 q$ b" c
  6. start = time.ticks_ms() # get value of millisecond counter. u: ]' Q* T; Y6 o% L% `! w' u
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码
1 o. s: L, D& L+ y

" b/ H1 X( s+ w, ~内部 LED

pyb.LED.

  1. from pyb import LED
    0 ]! e6 ^/ ~2 D" |6 @: ?
  2. ! U' J6 X  H" u1 v+ Z
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue6 d7 L+ M2 r3 j7 ]
  4. led.toggle()
    # M& r: A6 a/ X/ {
  5. led.on()1 J3 N$ `- q2 g6 e
  6. led.off()
    ) m" D2 [6 ]+ o- h5 k

  7. & ~: P* {3 W$ ~
  8. # LEDs 3 and 4 support PWM intensity (0-255)- `% Y  y5 o; |6 n% }
  9. LED(4).intensity()    # get intensity
    % ], t  F, K5 T. M/ Y
  10. LED(4).intensity(128) # set intensity to half
复制代码

8 Y+ e0 e2 i0 X, _

9 P; v1 T6 Q; E0 S  O内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch
    $ `# L& s. }! u1 W9 O
  2. 2 d, h. a$ C2 q! B
  3. sw = Switch()1 v! i; P( _& b- E
  4. sw.value() # returns True or False5 a2 h+ P6 A9 {! ^8 [; m
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码
( x* [9 e, _4 l5 D8 b
* b1 H1 r/ Z. i* |9 c, m
引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin
    6 v  Y+ @6 X) q% R/ l0 Z. w

  2. 7 O3 i/ A# R3 k, b5 l2 k6 n+ R
  3. p_out = Pin('X1', Pin.OUT_PP)
    5 i" n! z# l% N, x' P
  4. p_out.high()! n3 s0 o+ T: ^
  5. p_out.low()
    - E; ?: `4 _* c! n

  6. + r6 G' f: ]; C. y, q; b5 Z
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP): K, k! x2 t( i. R3 D6 G2 ^8 T0 G" g
  8. p_in.value() # get value, 0 or 1
复制代码

7 W& }& m3 J4 I2 T8 U7 X, S% m
) P$ }2 s2 E4 J
伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo
    + z5 W3 j, {( |* W6 U
  2. 9 c- Q, i1 c7 B4 ]- }, e
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
    9 a, a2 T: ~& s
  4. s1.angle(45) # move to 45 degrees; K9 m/ N; ^- f7 E  L  b' j, g
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms
    ; U& P+ Y& r# m; X- Y/ ]
  6. s1.speed(50) # for continuous rotation servos
复制代码

, d6 o$ k- v2 u' F3 I
2 P7 M" |( j/ w/ a+ y7 D5 u外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt2 _1 D9 Z0 x- G6 p2 L

  2. 4 t. _7 j  g% s( f$ ^" v
  3. callback = lambda e: print("intr"), ~- g4 E& Q1 T4 t) w6 e
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码
- I: X/ d1 J/ s; D
$ U/ j6 f( {# ^  j; M) V
计时器

请参阅pyb.Timer.

  1. from pyb import Timer
    * @7 M& E* I  j  M- b) c7 ]

  2. 9 l1 y7 C6 n% U% p
  3. tim = Timer(1, freq=1000)1 s' A. b5 h% ~; {$ @
  4. tim.counter() # get counter value
    0 S* k& r+ J% ]
  5. tim.freq(0.5) # 0.5 Hz& O# _( F9 Q: t7 O- a
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码
' N  ]. K1 }0 ?+ s  \
RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC$ D' ^3 A* \  b. l2 _  G
  2. 8 F* G. E- n" v6 r* r( J6 z
  3. rtc = RTC()
    . b+ E, q7 ?" f2 h3 h& T
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    ! e$ f# |7 x4 C. p+ }) X% ?
  5. rtc.datetime() # get date and time
复制代码

- z4 W& F! q1 d; o0 _PWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer& m' Q5 G$ H1 m0 X

  2. + r0 P% j1 U/ k" F
  3. p = Pin('X1') # X1 has TIM2, CH1( }1 i6 u, s4 h- R: d; i
  4. tim = Timer(2, freq=1000)
    ) V9 m( k9 n$ R1 V
  5. ch = tim.channel(1, Timer.PWM, pin=p)2 I$ z# _9 n4 E) D! y
  6. ch.pulse_width_percent(50)
复制代码

8 N6 [5 z* \$ W; g6 A( `- e% m) CADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC; C( X2 Z: K5 ~

  2. ( j4 L4 X( p' b, P- H& f
  3. adc = ADC(Pin('X19'))
    6 H$ k+ F7 Y& {5 C8 ]( H; W4 O( H. S
  4. adc.read() # read value, 0-4095
复制代码
' g( T3 [5 @$ T/ T1 o7 B

! ]5 }+ l' P& uDAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC& @9 R, y6 P, {( m

  2. ; `+ r6 {  U0 [  `$ ?6 T
  3. dac = DAC(Pin('X5'))
    & j0 L0 |9 Z  t
  4. dac.write(120) # output between 0 and 255
复制代码

, j, `1 F0 O0 K2 J; g* {# S" G# h$ C, c
UART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART
    % C5 b; l2 P0 i% l
  2. 4 q$ |7 X+ x. E4 F. h6 g' S
  3. uart = UART(1, 9600)
    ) r' q) t# v# v! V2 R  V
  4. uart.write('hello')
    ! m3 P2 u8 F1 f
  5. uart.read(5) # read up to 5 bytes
复制代码
. p3 F0 u( v  f9 `; {( P
) E& A* z2 q: l& r' c' M3 Z) z
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI$ M! J, c( a& h+ J" E2 l4 p/ X
  2. + c8 b7 _" Y5 s, R- D7 F
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0). d- d6 D8 y+ z8 o7 R$ ?
  4. spi.send('hello')
    ) E  k5 Y* J0 e% s. N4 g; p
  5. spi.recv(5) # receive 5 bytes on the bus# O9 i, F- _( q: a+ u: z/ J/ G
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码
5 h+ z0 C. [& w

- D: I4 D) z; D- i/ oI2C总线

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

  1. from machine import I2C) ^5 k- C4 g9 F; n7 X3 t( e5 k* E

  2. $ E0 d" ~' G2 L5 J2 A8 k7 B5 Y
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object
    % W  o% s1 N1 \2 h: H% q
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object( |! m- S. R8 q/ m! p( d% N

  5. ; @, ~9 D! l# e- \8 u, Y8 G
  6. i2c.scan()                          # returns list of slave addresses+ p' {  j$ Z# q$ i
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42
    # j, _8 |/ Y, d3 X0 v6 ^0 Q; C
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave) i- T" e2 Z# S' i" B

  9. $ Q+ {6 y% {6 }1 n* P, E
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10
    2 W* K" F* V9 G0 J' |6 l+ ?9 S
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码

3 o' ~# }3 y  D+ D6 p% [/ |: @( _3 e9 ^2 X

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


1 d4 B  u: M2 Z$ q  ?I2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin
    2 K) c" D( g6 i6 `6 H# l

  2. & ?3 x# x6 ]: e; O" n$ w
  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 object0 V% o# r# f, J' ~" @" L
  4. i2s.write(buf)             # write buffer of audio samples to I2S device. m/ k# f  B% _

  5. 6 D6 A# u% Z9 e* r; e
  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
    : o9 i- A/ L/ j% V
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码
) c6 O% ~! `! \

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

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

, q+ J+ }- t, g- M$ x! z
CAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN$ f! f% @& b6 L$ u  I

  2. / S- O( u: L& E' l+ E0 S: R) L
  3. can = CAN(1, CAN.LOOPBACK)
    0 E' z1 N6 z2 v" p' I
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
    ) H5 L# ]! G9 R$ q$ k5 x3 J9 p, l
  5. can.send('message!', 123)   # send a message with id 1237 L& y- H2 b; j7 R, [
  6. can.recv(0)                 # receive message on FIFO 0
复制代码
! W% p5 }; p: s+ s* G1 B
3 w4 |# @2 S3 z* g# @. r
内部加速度计

参见pyb.Accel.

  1. from pyb import Accel* k- s: {! u* u1 E

  2. , K  z& H$ Z  x
  3. accel = Accel()
    5 m+ M" r+ S# S* K3 ?. D# p
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码
; x4 k" z% ?, A* w) ?
$ y1 f' t- F! ]# {" Y+ g$ g' }# q
回复

使用道具 举报

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( A  a) u: h3 u+ v! a/ v
Thank you for posting this for all of us
! Z% Z- w$ B( r6 M. i
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-11 14:05 , Processed in 0.218401 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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