Pyboard基本功能快速瀏覽


基本功能快速瀏覽

1.通用控制

>>> import pyb        #導入pyb包
>>> pyb.delay(50)   #延時50ms
>>> pyb.udelay(50) #延時50us
>>> pyb.repl_uart(pyb.UART(1,9600))  #指定REPL到串口1,波特率為9600
>>> pyb.millis()       #返回開機后的運行時間毫秒
4954710
>>> pyb.freq()    #返回CPU和總線的頻率
(168000000, 168000000, 42000000, 84000000)    
>>> pyb.freq(168000000)    #設置CPU頻率為168MHZ
>>> pyb.wfi()      #暫停CPU,等待中斷喚醒
>>> pyb.stop()     #停止CPU,等待外部中斷喚

 2.LED控制

>>> from pyb import LED
>>> r_led = LED(1)  #1=紅, 2=綠, 3=黃, 4=藍
>>> r_led.on()        #點亮
>>> r_led.off()       #熄滅
>>> r_led.toggle()    #翻轉
>>> b_led = LED(4)
>>> b_led.intensity(128)  # LEDs 3 和 4 支持 PWM 調節亮度 (0-255)

 3.Pin和GPIO的使用

>>> from pyb import Pin
>>> output = Pin('X1',Pin.OUT_PP)  #X1設置為輸出
>>> output.name()  #獲取該端口在芯片上對應引腳的名稱
'A0'
>>> output.names()  #獲取該引腳定義好的全部名稱
['A0', 'X1']
>>> output.high()  #設置該引腳上的電平狀態為高電平
>>> output.low()   #設置該引腳上的電平狀態為低電平
>>> output.value() #獲取該引腳當前的電平狀態
0
>> intput = Pin('X2',Pin.IN,Pin.PULL_UP)  #設置X2引腳為輸入,並使能內部上拉電阻

 4.舵機控制(Servo)

>>> help(pyb.Servo)
object <class 'Servo'> is of type type
  pulse_width -- <function>
  calibration -- <function>
  angle -- <function>
  speed -- <function>
>>> from pyb import Servo
>>> servo1 = Servo(1)  #板子上共有四個servo可以直接使用(X1-X4)
>>> servo1.angle(45)   #旋轉到45°位置
>>> servo1.angle()      #獲取舵機軸的位置角度
44
>>> servo1.angle(-45,2000)  #2000毫秒內從當前的角度轉到-45°角的位置
>>> servo1.speed(50)   #以速度50轉動
>>> servo1.speed()
50
>>> servo1.speed(100)
>>> servo1.speed()
100
>>> servo1.pulse_width(2200)  #改變PWM的脈沖寬度
>>> servo1.calibration()  #參數校准
(640, 2420, 1500, 2470, 2200)
#servo1.calibration()里面五個形參依次如下:
#pulse_min 是允許的最小脈沖寬度
#pulse_max 是允許的最大脈沖寬度
#pulse_centre 是對應於中心/零位置的脈沖寬度
#pulse_angle_90 是對應於90度的脈沖寬度
#pulse_speed_100 是對應於速度100的脈沖寬度

 5.外部中斷 

>>> from pyb import Pin,ExtInt
>>> callback = lambda e: print('interrupt!')  #此處的e必須要,不然會報錯
>>> ext = ExtInt(Pin('Y1'),ExtInt.IRQ_RISING,Pin.PULL_NONE,callback)
>>> interrupt!
interrupt!
interrupt!
interrupt!
interrupt!
interrupt!
interrupt!
interrupt!
interrupt!
.....

 6.定時器

>>> from pyb import Timer
>>> tim = Timer(1,freq=1000)  #定義定時器1,工作頻率是1000hz
>>> tim.counter()  #讀取計數值
19666
>>> tim.freq(0.5)  #設定定時器頻率為0.5hz
>>> tim.callback(lambda t:pyb.LED(1).toggle()  #設置回調函數
>>>

7.脈寬調制模塊(PWM)

>>> from pyb import Pin,Timer
>>> p = Pin('X1')  #X1是定時器2的CH1
>>> tim = Timer(2,freq=1000)
>>> ch = tim.channel(1,Timer.PWM,pin=p) #設置PWM引腳
>>> ch.pulse_width_percent(50)  #設置PWM輸出占空比

 8.模數轉換(ADC)

>>> from pyb import Pin,ADC
>>> adc = ADC(Pin('X19'))  #設定ADC輸入引腳
>>> adc.read()  #讀取ADC轉換結果,默認12位方式,參數范圍0~4095

9.數模轉換(DAC)

>>> from pyb import Pin,DAC
>>> dac = DAC(Pin('X5'))  #設置DAC輸出引腳
>>> dac.write(120)  #設置輸出電壓,默認8位模式,參數范圍0~255

 10.UART(串口)

>>> from pyb import UART
>>> uart = UART(1,9600)  #設置串口號以及波特率
>>> uart.write('hello')  #輸出
5
>>> uart.read(5)  #最多讀取5個字節

11.SPI總線

>>> from pyb import SPI
>>> spi = SPI(1,SPI.MASTER,baudrate=200000,polarity=1,phase=0)  #設置SPI參數
>>> spi.send('hello')  
>>> spi.recv(5)  #讀取5個字節
b'\xff\xff\xff\xff\xff'
>>> spi.send_recv('hello')  #發送並接收5個字節

 12.I2C總線

from machine import I2C

i2c = I2C('X', freq=400000)                        # 定義硬件I2C對象
i2c = I2C(scl='X1', sda='X2', freq=100000)         # 定義軟件I2C對象

i2c.scan()                          # 返回掃描到的從機地址
i2c.writeto(0x42, 'hello')          # 往地址為 0x42 的從機寫5個字節
i2c.readfrom(0x42, 5)               # 從地址為 0x42 的從機讀取5個字節

i2c.readfrom_mem(0x42, 0x10, 2)     # 從設備地址 0x42和存儲器地址為0x10中讀取2個字節
i2c.writeto_mem(0x42, 0x10, 'xy')   # 從設備地址 0x42和存儲器地址為0x10中寫入2個字節

 13.板載三軸加速度傳感器

>>> from pyb import Accel
>>> accel = Accel()
>>> accel.x()  #讀取X軸的數據
8
>>> print(accel.x(),accel.y(),accel.z())  #打印三軸的數據
8 -8 -18

 14.板載按鍵

>>> from pyb import Switch
>>> switch = Switch()
>>> switch.value()
False
>>> switch.callback(lambda:pyb.LED(4).toggle())

 15.實時時鍾(RTC)

>>> from pyb import RTC
>>> rtc = RTC()
>>> rtc.datetime((2019,9,10,2,18,56,0,0))  #設置年、月、日、星期、時、分、秒、次秒
>>> rtc.datetime()  #返回當前系統時間
(2019, 9, 10, 2, 18, 56, 9, 188)

16.CAN總線 (區域網絡控制)

>>> from pyb import CAN
>>> can = CAN(1,CAN.LOOPBACK)
>>> can.setfilter(0,CAN.LIST16,0,(123,124,125,126))
>>> can.send('message!',123)  #發送ID為123的消息
>>> can.recv(0)  #在FIF0 0 上接收信息
(123, False, 0, b'message!')

 下一章節:Pyboard基礎功能詳細探索---LED


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM