| .. _quickref: |
| |
| Quick reference for the pyboard |
| =============================== |
| |
| .. image:: http://micropython.org/resources/pybv10-pinout.jpg |
| :alt: PYBv1.0 pinout |
| :width: 700px |
| |
| General board control |
| --------------------- |
| |
| See :mod:`pyb`. :: |
| |
| import pyb |
| |
| pyb.delay(50) # wait 50 milliseconds |
| pyb.millis() # number of milliseconds since bootup |
| 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 |
| |
| 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 a 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 |