micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 355136|回复: 8

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

% o' n( P8 Q7 B5 i
通用板控制

pyb.

  1. import pyb- j1 @' d3 u- e$ ^( ]
  2. ; p2 k5 e# }% e2 j- X/ Z, f$ d$ v
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
    9 R4 I1 `0 g5 @; ~# Y5 d
  4. pyb.wfi() # pause CPU, waiting for interrupt8 ?; f7 P. v% j, c/ m
  5. pyb.freq() # get CPU and bus frequencies
    & X; r/ |5 w" b+ ]& a: C
  6. pyb.freq(60000000) # set CPU freq to 60MHz- Y4 N0 `$ ~( D) R  r5 z- F- L
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码

9 R9 Y. Y& ]% c$ a9 I7 ]# t

2 i+ A4 |2 X. {6 F延迟和计时

使用 time模块:

  1. import time$ J9 N4 C; u7 L: ]& c$ `
  2. 7 w4 T1 g9 ]& E) r8 |
  3. time.sleep(1)           # sleep for 1 second
    + d5 g. E  G0 m# ]+ D' E4 T
  4. time.sleep_ms(500)      # sleep for 500 milliseconds" D2 o# m* b8 b
  5. time.sleep_us(10)       # sleep for 10 microseconds: m$ r' P  d+ {3 H4 `1 @! A5 I
  6. start = time.ticks_ms() # get value of millisecond counter' e) l8 f% V9 _: u# O5 o! Z5 w
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码
  v3 e/ p- L! `2 i( I5 Q# \
% I' {+ ^! U2 T
内部 LED

pyb.LED.

  1. from pyb import LED- w5 D; H* [7 |' g

  2. / m5 ]2 n" h( U% O/ u
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue
    # W+ j) F$ L0 j" O) h
  4. led.toggle()
    ( H& O' C5 ^# r" J7 L- |
  5. led.on()9 I5 C6 B9 e4 `! ?( S6 A& N" C& [3 a) d
  6. led.off()$ r8 }8 ^: Z6 r: e( j& L% K/ c

  7. ' _! U* Q; Y$ a/ Z0 i1 p, \  J
  8. # LEDs 3 and 4 support PWM intensity (0-255)
    3 B. f: C% t2 O+ a  T5 s
  9. LED(4).intensity()    # get intensity
    % Q* t$ @. q! A  n3 f6 y
  10. LED(4).intensity(128) # set intensity to half
复制代码
6 S4 g4 ]3 ?6 j' Y( y5 d

, w* }) e5 b! q( Z- r" e( p7 z) E: m内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch
    3 B4 p% X- K" e# t9 m* L
  2. ) ~7 l8 G" A  q& ^& c
  3. sw = Switch()
    , a6 f2 V: t6 C5 k# x
  4. sw.value() # returns True or False
    5 [# S& N2 C9 ^; g! t7 G
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

% o8 {7 _5 T, @. k

% K. M3 x3 q; A引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin) ^3 [. V# R" v9 l& D: \" f2 B4 C

  2. ' G) a4 K3 D# m& r+ r- H% s, [
  3. p_out = Pin('X1', Pin.OUT_PP)
    + I2 F8 X/ ^. a6 E/ q5 O) [& S
  4. p_out.high(); E* N: I  j6 m( b) b% @& c* i
  5. p_out.low(); c& ^2 I+ M  d* }, Z% U2 X

  6. : I: Q0 [( T+ ~% O* d: b4 Q
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)- ?1 s$ S' ]6 D$ K
  8. p_in.value() # get value, 0 or 1
复制代码

  _1 Q2 J3 g6 u- P- j
, C% v/ M  h: w, N  z' V6 z5 v
伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo1 }& C+ m  q7 U( Q. Y# b% B
  2. + P- y3 e7 N5 L2 A( H. M
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)2 P1 m" p, Z9 W; m8 w! ^4 S
  4. s1.angle(45) # move to 45 degrees" w* z' F- M: ?
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms7 d* z3 T! J" M! z# T
  6. s1.speed(50) # for continuous rotation servos
复制代码

7 r# G4 G  M  a) L- ?
% Y3 y: ]/ Q9 N6 y$ e外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt
    6 n$ G) Q3 `& a- [

  2. - Z  }* L, Y4 m- I1 J9 c) c
  3. callback = lambda e: print("intr")  D" Y' p9 V  q' Q5 Q
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码

% ?9 w/ p$ P' C' s& r$ U7 y1 T2 D, ^3 O# r! G
计时器

请参阅pyb.Timer.

  1. from pyb import Timer3 [" t- n, C& f; R3 U

  2. ! g3 L3 a* e2 Q2 Y, p
  3. tim = Timer(1, freq=1000)
      V8 ^0 q+ d4 ?# g
  4. tim.counter() # get counter value
    6 |# q1 @# E: ?: [0 X
  5. tim.freq(0.5) # 0.5 Hz
    + b1 e9 d3 f4 C5 I) S% y2 K
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码
: ?: x1 D( y8 G6 K! B' _' \  A; n
RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC
    & ]- o9 |0 b7 P

  2. 0 r% v" P0 t$ K
  3. rtc = RTC()
    - C! V/ P% D3 P$ w! M; D$ q* G9 Z
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    " j6 b5 D8 x$ |2 t# u
  5. rtc.datetime() # get date and time
复制代码
2 R% V9 T+ d4 {
PWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer/ l* ?6 @9 K) \. O
  2. 5 b) L  l$ U5 n; B3 N8 Y5 j
  3. p = Pin('X1') # X1 has TIM2, CH1
    # o3 L' `+ Q1 ?$ S" g- l7 j& b. ?* M
  4. tim = Timer(2, freq=1000)9 h6 q- t0 [' f9 z
  5. ch = tim.channel(1, Timer.PWM, pin=p)% ]8 S3 I3 Y# d& ~" [8 [! v
  6. ch.pulse_width_percent(50)
复制代码
7 {$ o; K7 d. L
ADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC: ~5 X0 G8 T2 q' `( U2 S
  2. 1 j: D/ f5 [/ T9 ]( r+ U
  3. adc = ADC(Pin('X19'))
    * \# q4 F4 o$ p. H, Q1 v
  4. adc.read() # read value, 0-4095
复制代码

* J7 U# |) O! H+ k) H! r
. b" L, `4 B- {; [+ vDAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC
    " X; z* h" N4 [0 Q4 F0 }

  2. * Z; _3 K7 I- e! _/ F
  3. dac = DAC(Pin('X5'))) o& o- ]# e" d7 p+ P. d, @# @2 V
  4. dac.write(120) # output between 0 and 255
复制代码
# U& a$ [# V  D5 ~& W. _  Z/ Z
2 ]* Y  L) ~5 ~$ M
UART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART
    4 E1 i* e% m; j3 F* U) I! _% d
  2. 7 G2 |1 d  P% M, x* `! c
  3. uart = UART(1, 9600)2 i9 n, a* Z. g+ U5 t6 M7 M' x
  4. uart.write('hello')
    3 e: k  [6 g" b) M
  5. uart.read(5) # read up to 5 bytes
复制代码

, S! F4 D( \  }1 f! b9 B; n( Z8 `  b- N9 ^* |! R1 N# \7 B$ R
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI
    5 p6 B: A1 r1 L8 L4 z6 L( c4 J
  2. ! P9 v" y, p4 b3 q6 E# z  w
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)( H) t8 a% i7 Y0 i, }! d9 \( y
  4. spi.send('hello')* I' S5 s* L& Z
  5. spi.recv(5) # receive 5 bytes on the bus5 f# E$ p! c* C9 J7 [& b/ ^; B
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码
6 u4 J& z6 C4 z
- n5 A( ?/ E3 K  d& P6 f9 z  h# A% t
I2C总线

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

  1. from machine import I2C
    : d* C1 L& |" u, {$ {$ C3 H
  2. / c7 u) j- B+ L& d# W+ u  x
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object. y6 ]1 o0 v+ B- K
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object0 C% V" v) x* @9 d
  5. 3 n8 y' i7 g/ j2 z0 E
  6. i2c.scan()                          # returns list of slave addresses
    ! M+ }3 F- M" a* x, o) ?
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42
    ) k4 Y9 h7 Z6 I: [
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave
    * _, m& e3 Y* Z9 \( n4 b1 \  z: r2 V
  9.   j; V: f9 y5 _# S: k8 q, y
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10) j# m) j" ?# E) T6 s
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码

$ J, b- }  P5 G( ^6 ?+ j  B% n4 S  h3 R, t% Q/ ~5 M: S

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


2 g1 D0 ~; t& Y6 z& XI2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin. _9 T  I' q4 G5 M

  2. " g" N- w' }8 S) 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 object2 o' R, B7 U. @
  4. i2s.write(buf)             # write buffer of audio samples to I2S device) |- H9 c: k3 L$ G

  5. % m7 y/ Z3 b& Q# E+ p' G# S
  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 object3 ~$ H$ d% q, J+ I) n
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码
/ K/ V1 V$ M( _$ I3 w# |  s

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

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

( F0 T% n* C  v6 w  t
CAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN
    + J8 X3 S/ a+ p' S8 `9 _
  2. # T, Q$ [- S) J! g4 U$ H! F$ L
  3. can = CAN(1, CAN.LOOPBACK)
    ) Q% E/ P$ i: l/ s$ y) @
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))" N4 r* N& R' V' B: l
  5. can.send('message!', 123)   # send a message with id 123
    6 v1 k/ o9 F- F7 W* ^. @7 l
  6. can.recv(0)                 # receive message on FIFO 0
复制代码
$ W$ W  _5 k  S, i

$ T7 c6 E! t3 C+ Y5 _内部加速度计

参见pyb.Accel.

  1. from pyb import Accel0 Y) }: t- }0 r- J
  2. ' W9 H4 {" w! ~
  3. accel = Accel(): h' g0 R9 y* G$ s; D! F
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码
6 ~0 i" P! j+ r9 q; y
6 V- v6 [9 u8 g% `# M1 H6 a! L
回复

使用道具 举报

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+ a5 A2 v1 O7 F, l5 m2 b) c1 Z
Thank you for posting this for all of us

1 ?& e3 w* H" z; q2 b: J1 ]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

帖子

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:46 , Processed in 0.218401 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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