micropython编程爱好网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 106160|回复: 14

pyboard 快速参考手册

[复制链接]

24

主题

24

帖子

2292

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

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

8 q: a( v" J) b6 [# s
通用板控制

pyb.

  1. import pyb7 M; ^( j5 d8 U( }

  2. 6 Z4 s. {: w& J2 S+ g- ]1 P
  3. pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
    1 E& F- C7 z+ E) I' d# x4 t
  4. pyb.wfi() # pause CPU, waiting for interrupt7 @8 C+ f: ]: Y+ b" e, T4 [
  5. pyb.freq() # get CPU and bus frequencies; E, C! o' N) b  Z; h" q2 ]3 @% P- j% x
  6. pyb.freq(60000000) # set CPU freq to 60MHz
    / b& i% {. g" F( t( B3 p8 m) s8 r
  7. pyb.stop() # stop CPU, waiting for external interrupt
复制代码
& r& O, }5 [0 Z& P7 f4 t/ y9 ?

7 M+ R% ?0 a' D* o/ S6 L延迟和计时

使用 time模块:

  1. import time9 N& `( m- `+ j
  2. , V- _) q9 A/ B  e6 u
  3. time.sleep(1)           # sleep for 1 second
    & X0 d2 Y# R& {& R% \6 t6 o
  4. time.sleep_ms(500)      # sleep for 500 milliseconds$ c+ U. _9 t2 G* \5 S* R2 J
  5. time.sleep_us(10)       # sleep for 10 microseconds- |$ h& o' K7 [7 G
  6. start = time.ticks_ms() # get value of millisecond counter9 L' G  X# K2 ]# ]& S
  7. delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
复制代码

7 r' N( f  N0 p0 p" T+ S; Z8 A4 K7 U
2 x: f# @/ c( N7 Y8 y* E
内部 LED

pyb.LED.

  1. from pyb import LED/ V' }, @3 @" N5 n% W
  2. ' f7 ?+ Q0 D: S2 S" o
  3. led = LED(1) # 1=red, 2=green, 3=yellow, 4=blue/ p1 S4 |! r, v) n
  4. led.toggle()
    . _7 }) z( s  N5 ~( s6 b) c! Z& o, S
  5. led.on()
    ' i( n! T$ [2 r8 H
  6. led.off()+ G4 [! i1 {1 k5 Q" _" s3 _

  7. # j' u0 e) G- z: ]6 U/ E) W5 S$ {9 P
  8. # LEDs 3 and 4 support PWM intensity (0-255): p% J4 Q) e6 R  F5 b% `4 z
  9. LED(4).intensity()    # get intensity
      @7 B% w, f+ q- j
  10. LED(4).intensity(128) # set intensity to half
复制代码
# x* O2 B$ E" E2 {

6 n+ r( c. j  u8 x9 g内部开关

请参阅 pyb.Switch.

  1. from pyb import Switch- L1 s. |9 e; x

  2. # g6 D! N; z* z4 l6 F4 q
  3. sw = Switch()
    - _! O( v6 k6 `; E* k
  4. sw.value() # returns True or False3 ?+ T- D  ?' V5 B
  5. sw.callback(lambda: pyb.LED(1).toggle())
复制代码

  ]$ S- e. ^/ ]% B7 v
  ?; a$ X# e0 Z) J+ [" C1 G
引脚和 GPIO

请参阅 pyb.Pin.

  1. from pyb import Pin5 t# n7 J2 ~1 [* }* z% B! g$ h
  2. 7 N: k" l0 `% ?
  3. p_out = Pin('X1', Pin.OUT_PP)
    & y- u7 O; |- E- K# z
  4. p_out.high()
    5 d2 P# C3 L# D/ C& e
  5. p_out.low()
    ! @) v. l: Q3 X% x
  6. - c: y+ v; M- I! n5 ~: x
  7. p_in = Pin('X2', Pin.IN, Pin.PULL_UP)# w( D0 J: s- t
  8. p_in.value() # get value, 0 or 1
复制代码
" h% X) x% s& Z6 J8 Y4 Y( F* b, b* d

( O0 q6 c( ]" A, C( i3 u伺服控制

请参阅pyb.Servo.

  1. from pyb import Servo
    5 F1 f8 ]3 b& [% x

  2. 1 T8 i7 n, r. ]
  3. s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
    9 F4 A$ k9 l) ~) B& Q2 y
  4. s1.angle(45) # move to 45 degrees; b8 c# G4 }0 _* Z
  5. s1.angle(-60, 1500) # move to -60 degrees in 1500ms9 S! c  ?' q" z0 _+ [. g) V% X
  6. s1.speed(50) # for continuous rotation servos
复制代码

$ u: ^0 l* t- X$ `: Z
( M$ d7 f" C) @6 K4 ]- \外部中断

请参阅 pyb.ExtInt.

  1. from pyb import Pin, ExtInt, L2 A& B: I. |2 F5 V

  2. 5 m9 n( p% n8 p. z6 x9 H; f
  3. callback = lambda e: print("intr")* \) E# v4 W0 G/ ]) R
  4. ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
复制代码
" O1 \! V) r) w4 v& V
( C/ x9 c: s9 Q; j" |  y) `
计时器

请参阅pyb.Timer.

  1. from pyb import Timer$ ^0 q8 c# u5 z1 O& O6 J

  2. ) v2 ?1 `) L5 L& |( t% U
  3. tim = Timer(1, freq=1000)
    - y: V4 T* \# |# m" O3 I
  4. tim.counter() # get counter value* j+ L& S2 k4 N1 r& z5 x7 t5 I1 D
  5. tim.freq(0.5) # 0.5 Hz, P4 X! H) P- R& E5 L! c
  6. tim.callback(lambda t: pyb.LED(1).toggle())
复制代码
' {! w$ @7 O; ^3 Z
RTC(实时时钟)

请参阅 pyb.RTC

  1. from pyb import RTC
    ( V& z  V# f/ ~- r1 m

  2. 4 _; ], @5 Q6 B  @- ~# r
  3. rtc = RTC()
    6 W: P; F( y5 K. p
  4. rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time3 A+ K8 W: {4 a/ R: D' y
  5. rtc.datetime() # get date and time
复制代码
( G5 e( r9 H+ h% M/ z! V! @
PWM(脉宽调制)

请参阅pyb.Pinpyb.Timer.

  1. from pyb import Pin, Timer
    7 l5 U" R5 o1 ~' o8 _- A- \

  2. & ]+ S" P( ^" c. H8 n7 @  ?2 W3 N
  3. p = Pin('X1') # X1 has TIM2, CH17 Z( N. l7 r' i; f5 p
  4. tim = Timer(2, freq=1000)
    - e! \; S7 F9 @, r$ e
  5. ch = tim.channel(1, Timer.PWM, pin=p)& n2 {5 O- G, Y5 ^0 m( F# Y
  6. ch.pulse_width_percent(50)
复制代码
7 e. g% j" ]/ k3 i; X" I
ADC(模数转换)

请参阅pyb.Pinpyb.ADC.

  1. from pyb import Pin, ADC/ f% Z. \& A" r2 q1 f, r; x

  2. 3 ?; B0 t2 _% U
  3. adc = ADC(Pin('X19'))
    2 t- Z" R' |7 i7 D  Z& j
  4. adc.read() # read value, 0-4095
复制代码
* g+ e; f/ u' l! F, a( j; S% C; D
9 u# L2 F4 E# U/ ?" N( Z8 p
DAC(数模转换)

请参阅pyb.Pinpyb.DAC.

  1. from pyb import Pin, DAC
    " O* g" u& [- N* z! M( y

  2. 4 f( A& t8 K0 _
  3. dac = DAC(Pin('X5'))+ P4 F, t/ G# K, G0 N6 _
  4. dac.write(120) # output between 0 and 255
复制代码

9 r/ j2 U4 I$ A# d
- |/ d- v$ `' U: o. @! nUART(串行总线)

请参阅 pyb.UART.

  1. from pyb import UART
    " U: \. h, \- }$ D8 c. [& c
  2. . \! P; y2 b- b$ @
  3. uart = UART(1, 9600)8 q1 n6 h! N$ K% a* |: a
  4. uart.write('hello')* x  o0 O* w, U$ O
  5. uart.read(5) # read up to 5 bytes
复制代码

2 c" `7 w3 B9 R; P# _/ w" s; g1 A# q( z1 C: P' K3 z1 D
SPI总线

请参阅 pyb.SPI.

  1. from pyb import SPI1 a& o5 C+ e& ]- ~

  2. # y$ g  y3 B% b
  3. spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
    ) K' N# Y0 J; m" k3 Y2 ]
  4. spi.send('hello')/ x5 u3 E# `5 t* R' [! Y
  5. spi.recv(5) # receive 5 bytes on the bus6 f( K* L2 O& l: u0 z; n
  6. spi.send_recv('hello') # send and receive 5 bytes
复制代码

( ~  `7 i% O! b' m. A
% @' M. D8 G5 F3 K  e  \( S/ [I2C总线

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

  1. from machine import I2C
    ! e) C+ ?: }% u. Z

  2. - F6 f4 Z+ A/ j2 l3 R& P  X
  3. i2c = I2C('X', freq=400000)                 # create hardware I2c object1 e4 {1 y5 E; ~! p; _' J0 ~
  4. i2c = I2C(scl='X1', sda='X2', freq=100000)  # create software I2C object
    5 d  A5 u- t- U% H! _
  5. + g3 t' V, D8 X# ]; @8 D8 V
  6. i2c.scan()                          # returns list of slave addresses4 J; ]  H9 G' \! k1 a  n) o6 c3 F) q+ A
  7. i2c.writeto(0x42, 'hello')          # write 5 bytes to slave with address 0x42
    & s- ^: T; M7 v( M( P- Z5 D+ O8 G2 w* Y
  8. i2c.readfrom(0x42, 5)               # read 5 bytes from slave2 Z- p& S9 l& z, ]* M/ o6 P8 z
  9. ( h8 j+ v, A6 Z. q5 k
  10. i2c.readfrom_mem(0x42, 0x10, 2)     # read 2 bytes from slave 0x42, slave memory 0x10  `# l5 `  D: @1 A$ ?
  11. i2c.writeto_mem(0x42, 0x10, 'xy')   # write 2 bytes to slave 0x42, slave memory 0x10
复制代码
- \% G# V$ I# s
; ]% ]5 ]1 L. Z$ c: T) s: h

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


8 `/ L) }+ Q4 D' n  BI2S总线

参见 machine.I2S.

  1. from machine import I2S, Pin
    , v- C, O7 d/ Y4 \6 q! V
  2. 6 Q8 x( f7 R! V$ k. h4 P$ u2 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 object1 _: Y" A+ W# V: g0 C
  4. i2s.write(buf)             # write buffer of audio samples to I2S device
    , y7 g! o. ^' m8 f( e8 L
  5. , ^  \( e- e) _0 p( \: f1 ~5 ~8 H& u
  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! N* M. M% k6 T5 B+ T
  7. i2s.readinto(buf)          # fill buffer with audio samples from I2S device
复制代码

6 {# k6 B& P0 v2 u$ J$ I' F

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

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

: h0 e5 x; w8 m  z9 w
CAN总线(控制器局域网)

参见 pyb.CAN.

  1. from pyb import CAN
    3 S% e  [% k8 y
  2. * q! n, ~& r0 `7 c
  3. can = CAN(1, CAN.LOOPBACK)
    7 ]6 |2 h3 ?! p# x# l
  4. can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))& V$ r0 @0 D2 M' U- Y! j
  5. can.send('message!', 123)   # send a message with id 123" l1 e/ [/ m" P7 x
  6. can.recv(0)                 # receive message on FIFO 0
复制代码

4 w6 e1 P( n+ K5 o
- W7 X8 w6 `4 r7 ^内部加速度计

参见pyb.Accel.

  1. from pyb import Accel
    # p& i4 }, M. M4 T8 w
  2. 2 H% l3 S% f, @; o3 i4 K$ m  ^
  3. accel = Accel(): Y' i# a) ^$ r/ o$ N# e+ H8 y8 o
  4. print(accel.x(), accel.y(), accel.z(), accel.tilt())
复制代码
3 {/ w% S. q3 V' W

; F$ Z2 g' y& g7 u0 M
回复

使用道具 举报

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

主题

12

帖子

40

积分

新手上路

Rank: 1

积分
40
发表于 2021-5-15 12:53:42 | 显示全部楼层
就是喜欢你的帖子 没办法
. \1 ]- f2 N. K3 h7 b
  s5 A7 `4 m2 j, W. _9 M2 s; a0 u& H: H  c+ `

* q* E* o0 K1 |& v
( v* h+ J( S& d* l7 J8 V/ R
5 T5 P$ c2 {4 @$ p5 n
+ C' G3 n0 v- a. G, M9 y
# Y) z5 B' W' g7 J; q% A
- @- g# a8 A7 u: Y( K9 c
% M5 a; u1 }4 n/ f
0 T- E# d, Z; s* |' ]
! G4 W7 E9 B; \5 U; t& C
0 N( _5 B, J; k" Gshechipinmall.com
% o9 _: ~) f5 Z( o3 JshenghuomaLL.com
. y+ b$ `0 K! ^: b' h1 C1 G; H* IshengqianmaLL.com
  x9 C' u5 W2 f- tshibomall.com* I+ `6 u- ?* a9 m! V' n
shicaimall.com
回复

使用道具 举报

0

主题

3

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2021-8-23 20:39:13 | 显示全部楼层
经验啊... 向楼主学习
: T* C* V# K: i, V( Y2 \6 i; W0 ^1 Q% O/ `6 V1 g1 R
  ~& e& m& Q$ R  M8 a2 i$ i# W
4 j' [0 K7 V& Y& K

( D4 k& H  @9 M# s- j  Z3 z
& k) O8 l4 L1 c5 g8 P
* S6 g$ e; N/ |$ c2 E, P4 M. K  {4 n- H; ?( r* G: F
6 C3 y4 q) s# T9 I7 t  [6 l. _' w. w
5 ^! E5 P' L, r' n7 O

/ E9 y" r+ O  \- c- |2 [7 K2 m7 a3 j/ y- `( Q
# i* V3 \# `. ~* v" q2 r
【免费 招域名销售代理 提成5-10%  详情查看 qklian.com】  x  }7 F! {/ U# d/ h! g; C
qklian.com
回复

使用道具 举报

0

主题

11

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2021-8-28 11:00:57 | 显示全部楼层
Thank you for posting this for all of us
https://theadulttoyfinder.com
回复

使用道具 举报

0

主题

11

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2021-8-28 11:02:02 | 显示全部楼层
ThomasWoody 发表于 2020-11-15 08:13$ l: U/ S" z& V) \( V. b4 _
So happens. We can communicate on this theme.
4 C: q5 ~3 V7 T; C
Thank you for posting this for all of us
https://theadulttoyfinder.com
回复

使用道具 举报

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( u0 ~# C# J' e5 J, e# k- J
Thank you for posting this for all of us
0 V& k3 C3 W* p) v) y
Very interesting information, I am looking forward to the continuation.
回复

使用道具 举报

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2021-12-25 02:31:16 | 显示全部楼层
Огромный каталог литых дисков ulan-ude.baikalwheels.ru
) w7 M. D0 \  B3 d2 @0 }, y) P   m3 s# T, N& Z/ A( l8 @8 R
Литьё — мечта каждого автомобилиста. А некоторые даже имеют целые коллекции уникальных моделей. Представляем Вам интернет сайт ulan-ude.baikalwheels.ru где размещен огромный каталог литых и кованых дисков всевозможных размеров, производителей, видов. Заходите в наш каталог и осуществляйте свой выбор. Если необходима будет помощь, наши квалифицированные специалисты Вам непременно помогут.
- H; l& n) W" ?: Z2 I: ]3 E
* M' Z( {4 f* W) J6 SПо вопросу  заходите на данный сайт. Кажется, все ощущают большое количество преимуществ наличия литых дисков на авто. Они обладают хорошей теплопроводностью, чаще весят меньше, чем штампованные диски, намного быстрее охлаждают тормоза. Отличная управляемость авто даже на высокой скорости, Вы сможете быстрее разгоняться и тормозить с хорошей безопасностью. Также кованые диски имеют огромный выбор дизайна, посмотреть весь каталог можно на указанном онлайн ресурсе ulan-ude.baikalwheels.ru уже сейчас.
' `: M6 P, d, L# }0 W9 ^ * R3 ?" A$ w5 U" O# g# Q
Мы уже более 10 лет работаем в данной сфере и знаем о дисках всё. Прямые поставки с заводов изготовителей разрешают нам не устанавливать большие цены на наш товар, любой сможет отыскать диски не только по душе и вкусу, но и по бюджету. Ознакомиться с расценками на диски возможно на данном сайте.
, c# Y" m. E. G* r- O& J( ^* K
& N2 U9 w# N  @+ mЕсли Вы планировали  в интернете, то Вы пришли по верному адресу. Доставим в любую точку Мира в очень быстрые сроки при помощи транспортных компаний. После Вашего выбора, Вам придет счет, который можно оплатить различными способами. Отгрузка дисков осуществляется в течение 3-х рабочих дней, проверять заказ можно по номеру заказа. Наш адрес в Улан-Удэ: ул. Строителей, 42 А. Режим работы с понедельника по пятницу с 9:00 — 19:00, в выходные с 10:00 — 16:00. Позвоните по номеру телефона +7(3012)666-112 или напишите на наш электронный адрес.
回复

使用道具 举报

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

本版积分规则

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

粤公网安备 44030702001224号

GMT+8, 2024-3-29 13:14 , Processed in 0.156000 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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