micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 291051|回复: 8

pyboard 快速参考手册

[复制链接]

24

主题

24

帖子

3146

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

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

7 X. x4 W4 N; m( v  c" J# p" E
通用板控制

pyb.

  1. import pyb6 c) r$ @8 \5 Y) C# r  [: X4 ~
  2. ' }  z, F) w" p. O1 b9 A& Q0 D2 e
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
    & o6 g# O& ~# l
  4. pyb.wfi() # pause CPU, waiting for interrupt) m# \8 h8 J1 Z
  5. pyb.freq() # get CPU and bus frequencies/ w) O: G" \. e# b3 [
  6. pyb.freq(60000000) # set CPU freq to 60MHz0 I% m! h3 I( [7 t/ B* G
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码

7 G0 Z6 u, |5 v% C

* E+ j+ J3 r6 m- {' O  H* {/ d延迟和计时

使用 time模块:

  1. import time
    8 H' y+ ?: j- s0 T/ D

  2. + `/ w" P' N. F& K( j4 O  k. f. N3 o$ E& ]
  3. time.sleep(1)           # sleep for 1 second# w7 n; C2 A- i! Y8 h/ I
  4. time.sleep_ms(500)      # sleep for 500 milliseconds- A! W2 ^* N2 S0 e! d7 Q7 u4 Q
  5. time.sleep_us(10)       # sleep for 10 microseconds
    4 w2 g0 ~* ^3 h( e
  6. start = time.ticks_ms() # get value of millisecond counter7 S+ Z, q6 Z& s1 c
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码
* j" {% Y4 s( R8 M

$ @' j6 `8 c& N" |  Z内部 LED

pyb.LED.

  1. from pyb import LED
    - w" Y: w* r4 v# W
  2. , m! g* C, i5 Y4 `' U# w1 X
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue+ X6 P9 ]& j3 b+ W  }
  4. led.toggle()
    ) K9 G1 P0 O0 p$ L7 Y
  5. led.on()/ ]) R* ?1 M& E) w1 I1 w
  6. led.off()' B  M8 i) s+ N6 N1 J' x' L
  7. / Q; a* l; l& a
  8. # LEDs 3 and 4 support PWM intensity (0-255)" T& l* T% R: q0 U: g# N: f. i
  9. LED(4).intensity()    # get intensity- u3 h: u6 X& ?6 c
  10. LED(4).intensity(128) # set intensity to half
复制代码
  u0 _1 S6 L% p! i) j
; Z+ e$ q, u5 Z. {) U
内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch% f4 v; d2 G# o2 A( P/ i. D

  2. 3 _, U& |, b* s: y* h4 ~8 p' ]
  3. sw = Switch()
    0 ]" L# t5 H% ~8 }, f
  4. sw.value() # returns True or False
      N4 g/ m1 n2 ~6 X$ `' O
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

; N) P4 V3 i8 ^

8 z! T; C6 m4 u  z3 `引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin$ P. s. L; H0 I) G2 Y" U
  2. ( O6 ~% E+ I6 P. }' x+ b* V5 X6 u& o
  3. p_out = Pin('X1', Pin.OUT_PP), X5 j! t2 j# l+ y
  4. p_out.high()
    / C- ]3 t2 ~. S( N2 a
  5. p_out.low()1 M0 D- z* e- `, Y% d+ a

  6. ! P( ?& i: G! o- B2 d  K! z; F
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)# `0 f( w; \$ W' I, k
  8. p_in.value() # get value, 0 or 1
复制代码

3 b3 z6 C1 o6 M" x& ~7 d2 Z8 h

/ j1 ~- y) v) [7 m* _. x( {% ?伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo: @1 Q* U" j6 k% [& `1 u

  2.   z, e9 Z; H. M. D: y" d( C
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)1 G, C4 I5 b2 M# K# f2 Q4 P
  4. s1.angle(45) # move to 45 degrees2 v' r; [; }$ m/ t
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms: n/ B& I0 Z9 h/ Z
  6. s1.speed(50) # for continuous rotation servos
复制代码
% N# V* ?* d! V6 |/ n3 v0 M* ]

; Q3 D+ R. q. }9 N2 k! m" }( g6 s* X外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt" ?1 E2 s# \" ?" a% s  m9 K6 W1 f

  2. # q* h" }$ Y* F- y- X
  3. callback = lambda e: print("intr")
    5 [( V7 t1 f- N8 A5 P+ ^
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码
0 [7 H  R$ s3 L6 {0 P4 j
  k2 I0 K7 q& b* L& D
计时器

请参阅pyb.Timer.

  1. from pyb import Timer% f$ f6 F9 [2 V: r  G, m1 _" i4 W; e8 D* J
  2. 0 ]0 k: L* {& h! l$ W$ ]9 ^( j6 l
  3. tim = Timer(1, freq=1000)6 g! l6 H7 n+ g' f' ]
  4. tim.counter() # get counter value! x( _: M! `; I4 W0 [5 o, A) v' l. w
  5. tim.freq(0.5) # 0.5 Hz
    . N8 b5 g. @- ^
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码

7 Q  w+ n- ?: W! iRTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC
    % S5 H6 `; r+ K! \
  2. & Y) f; [2 Z6 m1 B
  3. rtc = RTC()
    " ?# S9 f" b' T, V% F' s0 s
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time/ K  g9 d1 P: z+ h( Z
  5. rtc.datetime() # get date and time
复制代码

, y* A% _& X, P- ZPWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer
      H. I. n+ [. q0 p
  2. & V/ M) Y3 d: J9 j3 M
  3. p = Pin('X1') # X1 has TIM2, CH17 K4 z7 k8 [7 G) C% _" j5 v  U* V
  4. tim = Timer(2, freq=1000)
    9 x8 d& i, l/ J  R. j+ s2 j2 Z
  5. ch = tim.channel(1, Timer.PWM, pin=p)/ R9 A0 Y( D2 v% B( l
  6. ch.pulse_width_percent(50)
复制代码

% f/ F, C0 J# w0 ^1 R: }& ~ADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC
    & K. b: W1 s, G+ b

  2. - [3 q7 m* J  E! t3 [( M4 ~
  3. adc = ADC(Pin('X19'))
    ! f" E, x5 Z3 h
  4. adc.read() # read value, 0-4095
复制代码
1 `' R+ N7 P) F9 s
6 f( v( B- Q; f' v) S! @$ y1 U
DAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC
    0 T: m: D. b# ~; b; z6 M
  2. $ Y. t% T; i% T* Z
  3. dac = DAC(Pin('X5'))$ T9 W& }; k+ {3 z6 z' C' ^
  4. dac.write(120) # output between 0 and 255
复制代码
, o1 P% b9 T+ U" ~3 J- n

9 N( y' P( P* Z6 h  aUART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART
    + i* v. D# V' Z
  2. - \; t1 \) ?, a5 ]/ _
  3. uart = UART(1, 9600)
    $ d" v) Y! `2 J  n' F2 I6 p7 X0 U
  4. uart.write('hello')* E# d+ [' `) Y( V" U  p& G
  5. uart.read(5) # read up to 5 bytes
复制代码
2 H; c0 z8 }. _, _2 a- l3 ^( |
# o5 G3 C) e0 Z. T
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI
    4 D0 Y& s8 C! H: p

  2. 7 O( f3 \; ~/ L7 r2 F! \" o# }8 X
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)1 n" y; a$ @) i. G2 k. k
  4. spi.send('hello')
    # P7 c! N' D% m, s9 J( g! A8 i
  5. spi.recv(5) # receive 5 bytes on the bus
    + l; I' B  U% g5 j6 {% I
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码
3 D+ z! L4 ]6 c" h% k

- k) f  Y! I: @( jI2C总线

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

  1. from machine import I2C
    ; T3 Y% @0 o& s8 L  v
  2. ) u  K8 R: b& ~( ~, ^  `7 Z
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object
    ) d7 G7 G! m! L, f/ S
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object( ]8 y0 h. P' |* i

  5. * W) N* Z6 e* F% F: V. X2 x
  6. i2c.scan()                          # returns list of slave addresses
    1 o8 Y0 E# j/ ]$ ~/ S
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42; d6 n2 @3 z# o$ O9 ^4 F
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave3 H; w" s5 f8 o+ M

  9. , c" i8 h% n0 r$ F1 N1 {+ Z
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x101 n& f* I  B0 b* }' Q0 v% a
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码

1 w# O9 X/ g: h" E2 D
* u# H# a, E) H5 K

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


7 v6 S2 L9 Y9 O' @* m6 p% [I2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin
    6 @( b! N- M- U4 v3 o" H/ ?

  2. 0 e, D" n# F, k% c0 }# m) 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 object2 T6 ^% K* ^0 R; B" w' a$ U; [+ |
  4. i2s.write(buf)             # write buffer of audio samples to I2S device
    0 Q3 Z8 g, l* P& m1 j6 P0 w' D

  5.   C$ w6 {1 S0 b: `. 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
    + p$ @, J( R, n2 h1 h) M
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码

; s; M3 h/ o5 C- i% G9 @, M1 p

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

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


* d/ ^3 f) m0 o6 M- KCAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN" s# J# I! B% C+ ]5 G0 {

  2. % D# R6 ~' U$ ?/ _; J' O
  3. can = CAN(1, CAN.LOOPBACK)6 @, g5 l; g5 v/ L
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
    : B) f4 [$ n; B  _
  5. can.send('message!', 123)   # send a message with id 123
    4 q( n, [) i0 z2 C( G/ J3 q& I
  6. can.recv(0)                 # receive message on FIFO 0
复制代码

5 u" \+ s5 c6 R. D2 v
9 w5 X* S4 D3 O7 S( i' s! m内部加速度计

参见pyb.Accel.

  1. from pyb import Accel7 A- \) C- A2 o) b0 n

  2. " {, U2 s6 }% J; I$ ]  K% Y( w2 l5 z
  3. accel = Accel()5 h- C! V, E/ R( G8 k# d
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码

+ Z! f# B3 i* K# U$ y* M, O" J1 h+ U; 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; \6 M. h$ b( ?: L/ s
Thank you for posting this for all of us
6 ^. p% m1 `( g) v  {3 R$ X. E6 u4 Y
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

帖子

996

积分

新手上路

Rank: 1

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

Test, just a test

Hello. And Bye.
回复

使用道具 举报

0

主题

8

帖子

996

积分

新手上路

Rank: 1

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

Test, just a test

Hello. And Bye.
回复

使用道具 举报

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

本版积分规则

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

粤公网安备 44030702001224号

GMT+8, 2025-5-9 12:21 , Processed in 0.234000 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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