micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: 闪电

pyboard 快速参考手册

[复制链接]

24

主题

24

帖子

3276

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

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


. e8 L5 h2 U* q; H3 S! s2 X! [通用板控制

pyb.

  1. import pyb
    6 B' E3 w$ h5 ~3 C  P  Y

  2. , e; m  P" `% T
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
    + [& o% w' \  u  ~# D8 ]
  4. pyb.wfi() # pause CPU, waiting for interrupt
    8 _$ `$ R4 R- T, P; e1 s
  5. pyb.freq() # get CPU and bus frequencies2 e. t, w# s8 k- X1 z& F6 U* S5 f
  6. pyb.freq(60000000) # set CPU freq to 60MHz
    5 w) u* u9 o$ |
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码
6 V1 y8 J$ B3 G" I0 T! Z; M

$ K' s) }) x# x' \延迟和计时

使用 time模块:

  1. import time* o" {; `6 K- l! n- f0 _
  2. " E% f6 `( Y0 p" n0 e
  3. time.sleep(1)           # sleep for 1 second
    9 K. Y5 d- X% C- O
  4. time.sleep_ms(500)      # sleep for 500 milliseconds; P! Z; p2 a$ h9 W9 a$ q
  5. time.sleep_us(10)       # sleep for 10 microseconds
    $ X) ~: }3 B, I# h* E* A5 M
  6. start = time.ticks_ms() # get value of millisecond counter+ `# n9 B9 b: x2 a1 }* H6 \
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码
0 b) [" L& c7 ?  {8 Y
4 D5 D! P1 j8 g7 n: ?
内部 LED

pyb.LED.

  1. from pyb import LED
    7 p% Z+ \5 m/ _' L% j
  2. $ N# }6 r3 I! U% v
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
    + |* t" Y( N' T3 E/ E* C' [
  4. led.toggle()# x4 {' [! O. }2 W6 k8 R0 W5 ~
  5. led.on()
    ; R9 n4 e5 `$ K  g
  6. led.off()1 R9 r: d+ V7 x1 G

  7. . E$ O4 m& E: P( i; H5 q3 S
  8. # LEDs 3 and 4 support PWM intensity (0-255)# K; ?- {( U) j. ?
  9. LED(4).intensity()    # get intensity
    5 T1 z' @0 X$ m7 s7 {' w1 @$ v* v  z
  10. LED(4).intensity(128) # set intensity to half
复制代码

" N. o# u; J( ^7 u
9 o% q% c, v# M1 U4 l# m
内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch
    ' E- ]7 A& ^+ S* r3 v0 H

  2. / L4 t$ m; [+ m5 l: X8 n
  3. sw = Switch()- W. A6 \; Z" Q6 z
  4. sw.value() # returns True or False
    2 g% d5 z) A) @# }6 f, w
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

1 R2 x& c) e5 c& f

3 _  g" }4 M2 n- y" S1 ^引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin9 A- J& ^1 C+ f+ ?3 m  B5 ^
  2. ( E7 R( n/ W& @* H: h. A
  3. p_out = Pin('X1', Pin.OUT_PP)
    : h4 o' N( F' I$ E
  4. p_out.high()9 y8 U$ b2 H2 X+ `: g2 m1 {) `
  5. p_out.low(): M& G  c  ?# O8 j4 _7 u5 V
  6. 9 d/ k2 b' @" g+ e# |' d
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
    4 v3 y! q+ q  X0 B
  8. p_in.value() # get value, 0 or 1
复制代码
$ a! ?$ X( L3 P4 j! F$ g
3 M. [: x0 r( e: I
伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo
    7 T3 e" x7 l$ l+ E

  2. 4 c/ O) [1 [0 x) U, ~& ?
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)* _$ g3 u0 l( x& X9 T0 i: z/ S
  4. s1.angle(45) # move to 45 degrees
    & t! U  B/ Y- q6 U. T: A5 k
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms1 C  E* p7 O2 t7 b
  6. s1.speed(50) # for continuous rotation servos
复制代码
5 W, R9 {1 g! O4 z6 k1 @- J4 V% f

/ ]0 e) Q) f  S9 N4 o6 i外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt$ K) Y; x: O6 O( W+ |" K
  2. : B: M2 s, @% X* f$ x7 g3 ?! u& x
  3. callback = lambda e: print("intr")
    ) I3 ]- n! E$ I+ G6 Q$ F& i
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码

8 D; j' H; }% g* _6 x2 l8 e7 u" y, V& T
计时器

请参阅pyb.Timer.

  1. from pyb import Timer  P, S' i9 m% ~" z
  2. . q9 S% K6 i0 E3 k5 v$ P
  3. tim = Timer(1, freq=1000)
    ) S3 l3 b2 E$ @# L
  4. tim.counter() # get counter value$ |6 u, a" l1 t0 W5 |9 y) _
  5. tim.freq(0.5) # 0.5 Hz4 A- A, R/ L% V& c# G: M1 \. y
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码
* C4 @2 m) [; ]* N* O9 {3 ^! \
RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC% H; t9 z1 P  Z3 }8 D& Z8 y1 J
  2. & A9 l2 t( a6 E! _' U1 p
  3. rtc = RTC()+ {3 Z/ }, N1 P. i" o
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    , c0 X& f9 c, F  B. Q: T: Q0 J$ D
  5. rtc.datetime() # get date and time
复制代码

. p. b4 Y* J7 Q6 C6 f& W9 MPWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer: ^; G9 T/ v9 I% U$ Z9 C2 R
  2. : c# m' \3 K& m* m2 Q
  3. p = Pin('X1') # X1 has TIM2, CH1
    2 b8 o8 |% M& L8 R  M2 g( v
  4. tim = Timer(2, freq=1000)
    ) g# m9 Y9 y! A7 y" S1 \- Y! W# C$ J: r
  5. ch = tim.channel(1, Timer.PWM, pin=p)- C5 {% m. t: z/ }" b
  6. ch.pulse_width_percent(50)
复制代码
$ F4 d0 ?9 r' P
ADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC! P4 Q8 m* ^  G* _% `( Z  n9 W

  2. # U" j" h9 z$ {+ c  X2 r9 T  C
  3. adc = ADC(Pin('X19'))
    # f1 J4 P+ E8 L3 Z
  4. adc.read() # read value, 0-4095
复制代码

4 ?2 \1 j. O( d6 h4 I- i! Y) C& N  w! ?# A' I& m& I1 d
DAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC
    # f! M6 V+ p  v* s6 l- V
  2.   T1 D2 r' w2 Q) Y8 n) R
  3. dac = DAC(Pin('X5'))
    * h) Y9 g: O& z8 F% h
  4. dac.write(120) # output between 0 and 255
复制代码

3 I* q! M! {& [9 w( s! J7 R' U3 N/ h0 H
UART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART
      f# j/ S& W% T) b0 A  r
  2. 2 o5 P, y( B; D, G
  3. uart = UART(1, 9600)( c7 \: `/ O, D0 P8 f+ c# L7 Q2 E3 Z
  4. uart.write('hello')
    2 |/ v$ Y; v/ D9 b6 B+ l& _
  5. uart.read(5) # read up to 5 bytes
复制代码
6 o. ^; ~* N/ b8 T8 m( A& y

) n3 w; t4 K" _$ uSPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI3 l3 {! d# j/ Z5 J$ d1 L( T

  2. & S7 G* C9 R8 ]
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
    ( O! r; x+ Y0 h1 \4 t- w" L& G) Z
  4. spi.send('hello')
    , K8 h% F# U; R# q
  5. spi.recv(5) # receive 5 bytes on the bus
    2 _7 X/ ]& F7 D' P; C
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码
8 r- {7 R$ h/ K% n1 ?' S4 y
" U# \- T* G0 t6 s, h
I2C总线

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

  1. from machine import I2C
    # E. W) E( M/ j+ I1 K9 I( }

  2. ! k/ X' Z1 \7 A. h& D$ p9 ]( h, D+ k
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object
      k1 c% L5 E( C6 u
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object
    ) E/ O2 O) R: F. T5 h

  5. & z* J8 X( w, C9 M  D9 S
  6. i2c.scan()                          # returns list of slave addresses
    0 C* o8 M4 |% c  [# X: C
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42' i) `) n3 B3 s
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave
    4 }0 H4 e% A' S

  9. 4 D/ F/ u8 T9 ~7 M
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10
    + d  t+ S# A: G7 e! S2 b% o) h
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码

6 @( u4 c& M. @5 r$ h7 r# x1 V" q! C( N4 G

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

- @) m  ?3 `% l2 f" i
I2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin
    ' C$ k1 t$ R; M; x

  2. 9 o! \7 V$ s0 g/ 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 object9 l% m/ o# M% _; U1 w
  4. i2s.write(buf)             # write buffer of audio samples to I2S device
    7 K: X9 d+ ?, D2 m7 S) U7 m

  5. & C. V1 {$ o. G/ p# ?
  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 object0 a0 a; u% J. ~
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码
; p; Y, \) `* {; ]! b

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

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


2 w7 _  e# }6 q' F, }+ JCAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN" }: E  t) Z' N+ T% h. I

  2. - F$ ?4 e( U; O/ I6 C" `% {6 g
  3. can = CAN(1, CAN.LOOPBACK)
    " f1 y* O9 q* J) S% Q
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))3 o! ~3 e" r. \( |6 p7 L
  5. can.send('message!', 123)   # send a message with id 123! o8 y7 F+ m0 ], T6 P; B: r0 m& e+ @
  6. can.recv(0)                 # receive message on FIFO 0
复制代码
: W; r8 }3 C. t  z  \! p

; h! E7 I' z' T' R$ f内部加速度计

参见pyb.Accel.

  1. from pyb import Accel
    5 x, S: A& ~9 ?1 f
  2. % a$ L! I+ j5 T. t. [, H
  3. accel = Accel()
    % Q- |$ P0 P) l9 V; p
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码

% l" I! G. u( a8 e! V3 ]
! I+ h. L3 _* O0 H/ R8 b& M. E
回复

使用道具 举报

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
: f  E* p. j6 dThank you for posting this for all of us

( `0 X$ s, `) V: [; f1 JVery 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

帖子

1016

积分

新手上路

Rank: 1

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

Test, just a test

Hello. And Bye.
回复

使用道具 举报

0

主题

8

帖子

1016

积分

新手上路

Rank: 1

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

Test, just a test

Hello. And Bye.
回复

使用道具 举报

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

本版积分规则

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

粤公网安备 44030702001224号

GMT+8, 2025-7-19 07:52 , Processed in 0.218401 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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