micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: 闪电

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


3 }5 K$ ^8 y1 w' R' h! p6 F# _2 I: b8 X通用板控制

pyb.

  1. import pyb
    " Y& ~8 Z" w, m( C: T

  2. & y- I! d, R, O# ^( j3 \
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)# Y$ N' Z) l5 K, G! D/ W
  4. pyb.wfi() # pause CPU, waiting for interrupt9 j. P- ^: s" W9 F# d5 x
  5. pyb.freq() # get CPU and bus frequencies
    / T8 e& c  R4 A6 N
  6. pyb.freq(60000000) # set CPU freq to 60MHz1 h% T+ d; O& V5 P6 u& e% p3 P8 D& y  S
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码
* c9 J$ B! p* o6 {& y+ r$ y  K

, t% \( R" e5 y2 K; h, U! s延迟和计时

使用 time模块:

  1. import time$ D9 J, T# l1 J" t
  2. 2 j4 i: N% v2 R6 r- T
  3. time.sleep(1)           # sleep for 1 second
    . a. F7 p4 k7 G9 p/ ~# ]
  4. time.sleep_ms(500)      # sleep for 500 milliseconds
    . f/ F; k& n; j6 J" g
  5. time.sleep_us(10)       # sleep for 10 microseconds2 X  q: t! `! ]5 W- ^, [' u- q
  6. start = time.ticks_ms() # get value of millisecond counter
    ' s1 y+ R+ N0 W2 ^
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码

8 T, t. u6 B! N& @# D4 F, z

) |- ?; z: i+ ~% B内部 LED

pyb.LED.

  1. from pyb import LED
    1 T; W6 ], [9 k& y# J) Y

  2. - K. b7 ~3 q2 S2 K2 @- s
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
    ; B6 y2 _# s$ O" _; J
  4. led.toggle()2 D+ ~0 r; |. D. \( ^* j
  5. led.on()
    5 P  [+ l' P% Y  v
  6. led.off()
    $ s9 M) X" d& J" \6 ^

  7. 3 [# F5 `. o( f0 o& _
  8. # LEDs 3 and 4 support PWM intensity (0-255)
    / k8 S5 |# E  k9 f
  9. LED(4).intensity()    # get intensity
    & v6 g- t) Q, o* U
  10. LED(4).intensity(128) # set intensity to half
复制代码
, S1 V4 s4 w3 N" o+ q7 {5 G2 Y3 T5 X+ ~
2 a& C, N/ [! T) f" t
内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch0 ^! s7 R- d9 a7 A8 T) p+ `; i
  2. 3 o8 ^( R0 J. V* k) h
  3. sw = Switch()
    1 Q) f8 E9 j! g
  4. sw.value() # returns True or False3 x! \$ D! f3 F" D
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

/ ?  _5 w6 {  U, a9 P  p
) I, g1 M" |) A% f
引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin0 g$ s9 X! ^( t$ G0 H5 ]* U
  2. 0 g& `- h! S/ S$ @1 g
  3. p_out = Pin('X1', Pin.OUT_PP)# M/ M1 h5 L* G; u
  4. p_out.high()
    0 B6 G, n" u% C  d
  5. p_out.low(). ^- ?9 S4 q. b+ ?

  6. : q/ N7 B# ]% W
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
    / c5 Z+ T7 n! h. _: j5 j# i2 G
  8. p_in.value() # get value, 0 or 1
复制代码
! J) j2 Q* C! j+ O( f
3 G+ j% L. r" H0 V
伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo: ?- c1 \" ], a4 r3 Z* j

  2. / I3 g3 J- h: l  _- b" y- W* d- E
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
    0 L9 l& C# ~. g  S
  4. s1.angle(45) # move to 45 degrees, v# b  w5 t+ ]# a
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms
    3 x! D" M) q2 a; ^; G# I
  6. s1.speed(50) # for continuous rotation servos
复制代码

& }% Y% Z, w. {4 r
7 s- O" q9 ?7 e, m' u外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt
    2 @7 p+ o6 W2 Z3 D( m8 T1 g

  2. 3 Z9 G4 v2 r! h; O
  3. callback = lambda e: print("intr")
    % b9 d( e9 e- c% A
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码
+ I0 |% W5 ?" x
( M5 G: T$ V' R5 F3 |8 w3 m/ _4 f
计时器

请参阅pyb.Timer.

  1. from pyb import Timer9 `" C; {* i( E
  2. 2 Q7 }& S2 k* o4 a% f+ @
  3. tim = Timer(1, freq=1000)) g! q/ B+ E2 j% Q$ l% m9 W7 E1 V
  4. tim.counter() # get counter value
    ) i' l& x/ K. n" _
  5. tim.freq(0.5) # 0.5 Hz
    ; Y& w" s! W& }- K# {
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码
- i$ H9 \! R; }1 F5 Y( T' ^# f
RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC8 }8 ^8 @" f2 i2 P

  2. 5 }: \" _" y  h+ S; e
  3. rtc = RTC()
    9 ]/ [+ e! `. K/ R& n$ |' q
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    ( d$ Q+ h! i: Z- F
  5. rtc.datetime() # get date and time
复制代码

& w# k; _. N  @0 ^# W$ kPWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer. E+ I" x- z! \4 ?1 o0 I
  2. ' ]1 r. N: T5 _" s
  3. p = Pin('X1') # X1 has TIM2, CH14 K$ u' V- j- O( m" v" J
  4. tim = Timer(2, freq=1000)9 l3 _% W1 b7 _7 F2 `$ e, z4 j
  5. ch = tim.channel(1, Timer.PWM, pin=p)
    + K* F3 ^4 n, `; S4 K
  6. ch.pulse_width_percent(50)
复制代码
! L5 W& q$ C. M  m8 s- ^* K5 O7 ?
ADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC
    ) G, z+ N6 o* U( t

  2. % w# S' c0 Y3 ^/ [1 b) ]0 b
  3. adc = ADC(Pin('X19'))
    5 H4 D$ `9 B+ m( J
  4. adc.read() # read value, 0-4095
复制代码

% P6 i6 u! [. X0 y8 F+ [2 l
; H8 t# f  z* i/ h' JDAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC
    ' r8 |/ u5 @# b' L
  2. 9 u1 W# B8 y9 f1 r
  3. dac = DAC(Pin('X5'))
    9 s' ]! A/ Z; [- ~1 L0 o
  4. dac.write(120) # output between 0 and 255
复制代码

, ^9 S6 e+ _6 L3 q; q& j. s# z
UART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART
    5 O  ?; C: ~0 q+ O" k( \  ^' t0 l
  2. 8 d  j1 v- V2 B: {+ M
  3. uart = UART(1, 9600)8 _# p7 `4 r9 G3 g- Y" b
  4. uart.write('hello')2 i( e9 V% Q  A6 l- ^
  5. uart.read(5) # read up to 5 bytes
复制代码

% Z( G3 s- Y$ u& g9 K8 S! C' B, _
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI
    4 _* J" ~  v4 O, M; D4 R

  2. ' A. a; m3 p3 p7 v
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)( s$ x7 k9 K5 u/ P+ J+ d7 b
  4. spi.send('hello')
    6 y# y' [) b8 T( g% s9 ]- ^5 Z
  5. spi.recv(5) # receive 5 bytes on the bus: n# y5 |+ [8 R& X; n3 Q3 j, L: {
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码

% z9 B: w! X" a$ s1 c2 c3 u9 g* S, f8 X; W' ?* w( `  O% @! @
I2C总线

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

  1. from machine import I2C2 V7 s2 B/ e- O6 t; k
  2. ( y+ t+ }6 e/ R3 e- n$ o4 l
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object
    ; Q) S& j9 ~/ g" }( r7 I  Q% p
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object
    - u2 H4 r  B) W( z

  5. 4 F3 J, Z' G' M% @( q
  6. i2c.scan()                          # returns list of slave addresses
    ; h# P8 ]4 A! T1 Q2 T
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42" c, X4 f2 Y# A& y3 v
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave7 h! U. c, t1 O( |' ~

  9. ; V, V# K  p% N( \& B
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10" }2 `) }5 d8 \# z9 }
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码
; F2 d: F4 Z3 L$ W! W$ q
2 e6 E5 m# C8 @$ i6 P  O& J

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


2 W3 E: W% F3 I5 |) k+ U5 ^I2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin' J- T% Q% w1 k1 P* c7 e/ w

  2.   _4 ]# m$ M3 x, T; H
  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' u- v! R) n) I. v% w" F
  4. i2s.write(buf)             # write buffer of audio samples to I2S device$ a5 f  @1 F# A3 T. e+ Q, n. @
  5. # F4 S7 S4 c( N
  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 object9 ]3 N# z. M+ P8 B. i$ f3 }  j0 O
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码
5 \2 K: H- W* A7 h; ?* h6 b

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

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

( H. O1 e- _2 M) h' j1 o
CAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN% _9 H. f1 R0 |- g: ^

  2. 9 V" ~- G7 b/ ?! ]
  3. can = CAN(1, CAN.LOOPBACK)
    $ `) k' x2 l% C2 P4 d
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))6 b' N: v6 j& e& X) i! R. F$ Z: [
  5. can.send('message!', 123)   # send a message with id 123
    ) J6 C( Z' O5 {) I
  6. can.recv(0)                 # receive message on FIFO 0
复制代码
1 m, P6 w; N; s
) |# Q) y, H& L+ W4 M. I" a$ k( B
内部加速度计

参见pyb.Accel.

  1. from pyb import Accel; m+ w  H! V& C4 X6 `
  2. ( e. Z# m! K, ~' n# m6 B
  3. accel = Accel()+ `0 S+ _5 B: u) }' K
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码

0 F$ D9 F/ b! d# G; ?; V. q: S$ h2 D" H$ a. ^/ R8 i
回复

使用道具 举报

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
& n6 U9 W! W; B; ~, l4 n4 CThank you for posting this for all of us

, Z  T4 d; l# qVery 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-6 07:04 , Processed in 0.202800 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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