170 lines
3.9 KiB
ReStructuredText
170 lines
3.9 KiB
ReStructuredText
.. _quickref:
|
|
|
|
Quick reference for the pyboard
|
|
===============================
|
|
|
|
The below pinout is for PYBv1.0. You can also view pinouts for
|
|
other versions of the pyboard:
|
|
`PYBv1.1 <http://micropython.org/resources/pybv11-pinout.jpg>`__
|
|
or `PYBLITEv1.0-AC <http://micropython.org/resources/pyblitev10ac-pinout.jpg>`__
|
|
or `PYBLITEv1.0 <http://micropython.org/resources/pyblitev10-pinout.jpg>`__.
|
|
|
|
.. image:: http://micropython.org/resources/pybv10-pinout.jpg
|
|
:alt: PYBv1.0 pinout
|
|
:width: 700px
|
|
|
|
General board control
|
|
---------------------
|
|
|
|
See :mod:`pyb`. ::
|
|
|
|
import pyb
|
|
|
|
pyb.repl_uart(pyb.UART(1, 9600)) # duplicate REPL on UART(1)
|
|
pyb.wfi() # pause CPU, waiting for interrupt
|
|
pyb.freq() # get CPU and bus frequencies
|
|
pyb.freq(60000000) # set CPU freq to 60MHz
|
|
pyb.stop() # stop CPU, waiting for external interrupt
|
|
|
|
Delay and timing
|
|
----------------
|
|
|
|
Use the :mod:`time <utime>` module::
|
|
|
|
import time
|
|
|
|
time.sleep(1) # sleep for 1 second
|
|
time.sleep_ms(500) # sleep for 500 milliseconds
|
|
time.sleep_us(10) # sleep for 10 microseconds
|
|
start = time.ticks_ms() # get value of millisecond counter
|
|
delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
|
|
|
|
LEDs
|
|
----
|
|
|
|
See :ref:`pyb.LED <pyb.LED>`. ::
|
|
|
|
from pyb import LED
|
|
|
|
led = LED(1) # red led
|
|
led.toggle()
|
|
led.on()
|
|
led.off()
|
|
|
|
Pins and GPIO
|
|
-------------
|
|
|
|
See :ref:`pyb.Pin <pyb.Pin>`. ::
|
|
|
|
from pyb import Pin
|
|
|
|
p_out = Pin('X1', Pin.OUT_PP)
|
|
p_out.high()
|
|
p_out.low()
|
|
|
|
p_in = Pin('X2', Pin.IN, Pin.PULL_UP)
|
|
p_in.value() # get value, 0 or 1
|
|
|
|
Servo control
|
|
-------------
|
|
|
|
See :ref:`pyb.Servo <pyb.Servo>`. ::
|
|
|
|
from pyb import Servo
|
|
|
|
s1 = Servo(1) # servo on position 1 (X1, VIN, GND)
|
|
s1.angle(45) # move to 45 degrees
|
|
s1.angle(-60, 1500) # move to -60 degrees in 1500ms
|
|
s1.speed(50) # for continuous rotation servos
|
|
|
|
External interrupts
|
|
-------------------
|
|
|
|
See :ref:`pyb.ExtInt <pyb.ExtInt>`. ::
|
|
|
|
from pyb import Pin, ExtInt
|
|
|
|
callback = lambda e: print("intr")
|
|
ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback)
|
|
|
|
Timers
|
|
------
|
|
|
|
See :ref:`pyb.Timer <pyb.Timer>`. ::
|
|
|
|
from pyb import Timer
|
|
|
|
tim = Timer(1, freq=1000)
|
|
tim.counter() # get counter value
|
|
tim.freq(0.5) # 0.5 Hz
|
|
tim.callback(lambda t: pyb.LED(1).toggle())
|
|
|
|
PWM (pulse width modulation)
|
|
----------------------------
|
|
|
|
See :ref:`pyb.Pin <pyb.Pin>` and :ref:`pyb.Timer <pyb.Timer>`. ::
|
|
|
|
from pyb import Pin, Timer
|
|
|
|
p = Pin('X1') # X1 has TIM2, CH1
|
|
tim = Timer(2, freq=1000)
|
|
ch = tim.channel(1, Timer.PWM, pin=p)
|
|
ch.pulse_width_percent(50)
|
|
|
|
ADC (analog to digital conversion)
|
|
----------------------------------
|
|
|
|
See :ref:`pyb.Pin <pyb.Pin>` and :ref:`pyb.ADC <pyb.ADC>`. ::
|
|
|
|
from pyb import Pin, ADC
|
|
|
|
adc = ADC(Pin('X19'))
|
|
adc.read() # read value, 0-4095
|
|
|
|
DAC (digital to analog conversion)
|
|
----------------------------------
|
|
|
|
See :ref:`pyb.Pin <pyb.Pin>` and :ref:`pyb.DAC <pyb.DAC>`. ::
|
|
|
|
from pyb import Pin, DAC
|
|
|
|
dac = DAC(Pin('X5'))
|
|
dac.write(120) # output between 0 and 255
|
|
|
|
UART (serial bus)
|
|
-----------------
|
|
|
|
See :ref:`pyb.UART <pyb.UART>`. ::
|
|
|
|
from pyb import UART
|
|
|
|
uart = UART(1, 9600)
|
|
uart.write('hello')
|
|
uart.read(5) # read up to 5 bytes
|
|
|
|
SPI bus
|
|
-------
|
|
|
|
See :ref:`pyb.SPI <pyb.SPI>`. ::
|
|
|
|
from pyb import SPI
|
|
|
|
spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0)
|
|
spi.send('hello')
|
|
spi.recv(5) # receive 5 bytes on the bus
|
|
spi.send_recv('hello') # send and receive 5 bytes
|
|
|
|
I2C bus
|
|
-------
|
|
|
|
See :ref:`pyb.I2C <pyb.I2C>`. ::
|
|
|
|
from pyb import I2C
|
|
|
|
i2c = I2C(1, I2C.MASTER, baudrate=100000)
|
|
i2c.scan() # returns list of slave addresses
|
|
i2c.send('hello', 0x42) # send 5 bytes to slave with address 0x42
|
|
i2c.recv(5, 0x42) # receive 5 bytes from slave
|
|
i2c.mem_read(2, 0x42, 0x10) # read 2 bytes from slave 0x42, slave memory 0x10
|
|
i2c.mem_write('xy', 0x42, 0x10) # write 2 bytes to slave 0x42, slave memory 0x10
|