基本功能快速瀏覽
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!')
