scan for available pyMCUs. returns a dictionary (portname, index) primarily used during class initialization to find the first available pyMCU hardware module but this could also be called to get a list of all available hardware modules if you needed to find and initialize a specific one manually. Usage: baudrate - sets the baudrate to use when scanning for available pyMCU hardware modules. If not specified the default value is 115200. Example: pymcu.mcuScan() {'COM23': 22}
Functions
mcuModule()
This is the main class for the pyMCU module it contains all of the related pyMCU hardware functions. Usage: import pymcu myBoard = pymcu.mcuModule()
analogPinType(pinNum, type)
Set the analog pin type to analog(default) or digital Usage: analogPinType(pinNum, type) Example: analogPinType(1, 'digital') analogPinType(1, 'analog') * When analog pins are configured as digital pins the numbering becomes and extension of the digital pins, A1 = D14, A2 = D15 and so on.
analogRead(pinNum)
Read the value of an analog pin. Usage: pinNum - specifies a valid analog pin number [1-6] Example: myBoard.analogRead(1) Returns a value between 0 and 1023
close()
Close the pyMCU communication port. Example: myBaord.close()
digitalRead(pinNum)
Read the value of a digital pin that was set to an input state. Usage: pinNum - specifies a valid digital pin number [1-13] Example: myBoard.digitalRead(1) Returns 0 or 1
digitalState(pinNum, io)
Sets the state of the digital pin as an input or an output. All digital pins are configured as output by default. Usage: pinNum - specifies a valid digital pin number [1-13] io - specifies whether you want to make the pin an input or an output, you can either use the string 'input' or 'output' or use and integer value 1 for input 0 for output. Example: myBoard.digitalState(1, 'input') myBoard.digitalState(1, 'output') myBoard.digitalState(1, 1) myBoard.digitalState(1, 0)
dtmfOut(pinNum, dtmfNum)
Plays DTMF numbers on the specified pin. [dtmfOut will halt your program until the DTMF tone is complete] Usage: pinNum - specifies a valid digital pin number [1-13] dtmfNum - digit 0-9 Example: myBoard.dtmfOut(1, 3)
eepromRead(address)
Read byte from EEPROM storage address. Byte Values are Stored as Raw Byte Data if you are Retrieving ASCII Character Data use chr() on the Returned Read Data. Usage: address - specifies a valid EEPROM address to write data to [1-255]. Example: myBoard.eepromRead(1) Returns byte value from read.
eepromWrite(address, value)
Write a byte to EEPROM storage address. Usage: address - specifies a valid EEPROM address to write data to [1-255]. value - a byte sized value to write to the EEPROM, either an int in the range of 0-255 or an ASCII character. Example: myBoard.eepromWrite(1, 't') myBoard.eepromWrite(2,100)
freqOut(pinNum, duration, freq1, freq2)
Plays frequency out on specified pin. [freqOut will halt your program for the frequency duration] Usage: pinNum - specifies a valid digital pin number [1-13] duration - specifies the duration in milliseconds freq1 - frequency one range = 0 to 32767 hertz freq2 - [optional frequency two] range = 0 to 32767 hertz Example: myBoard.freqOut(4, 2000, 1000) Plays 1Khz tone on Digital Pin 4 for 2 Seconds.
i2cRead(control, {address,} numBytes)
i2c protocol function to read data from an i2c device. i2c communications uses the hardware i2c pins of the PIC chip: Data = Digital Pin 4 Clock = Digital Pin 11 Usage: control - sets the control register for reading and writing. address - optional address to read from. numBytes - number of bytes to read from i2c device. Example: myBoard.i2cRead(0xEF,0xAA,2) Set the control to hex value EF, read address at hex value AA, read 2 bytes of data. Returns the data read as a python list.
i2cWrite(control, {address,} writeData)
i2c protocol function to write data to an i2c device. i2c communications uses the hardware i2c pins of the PIC chip: Data = Digital Pin 4 Clock = Digital Pin 11 Usage: control - sets the control register for reading and writing. address - optional address to write to. writeData - data to write to i2c device. Data can be of type string, int, or a list of ints Example: myBoard.i2cWrite(0xEE,0xF4, 0x2E) Set the control to hex value EE, write to address hex value F4, write data hex value 2E. myBoard.i2cWrite(0xEE, 0xF4, [0x2E, 0xAC, 0x34]) Set the control to hex value EE, write to address hex value F4, write data of hex values contained in a list.
irDecode(pinNum)
Decode IR remote control code (sony 12-bit SIRC Format) Usage: pinNum - specifies a valid digital pin number [1-13] Example: myBoard.irDecode(4)
lcd(line, text)
Init or send text to the LCD Supports up to 4 line LCD To initialize the LCD call the function without setting any of the variables. Usage: line - specifies which line of the LCD to write to. text - specifies the text string to write to the LCD. Example: myBoard.lcd() myBoard.lcd(1,'Hello World') myBoard.lcd(2,'This is a test')
mcuInfo()
Get additional info about the currently connected pyMCU hardware module. Example: myBoard.mcuInfo() Version Info : pymcu for PIC v1.0.1 Available Digital Pins : 1 - 13 Available Analog Pins : 1 - 6 Analog Value Range : 0 - 1023 PWM Pins : 1 - 5 PWM Duty Cycle Range : 0 - 1023 COM Port: : COM23 Baudrate: : 115200
mcuSetBaudRate(baudrate)
Set the pyMCU hardware Baud Rate. The setting is saved in the hardware EEPROM and the change will take effect next time you power cycle the device. Usage: The following values set the corresponding baudrate: 0 = 2400 1 = 4800 2 = 9600 3 = 19200 4 = 38400 5 = 57600 6 = 115200 7 = 230400 8 = 250000 9 = 460800 10 = 500000 11 = 750000 12 = 1000000 Example: myBoard.mcuSetBaudRate(3) Sets the pyMCU device to 19200 baud.
mcuVersion()
returns a string for the version info queried from the hardware chip. Example: myBoard.mcuVersion() 'pymcu for PIC v1.0.10'
owRead(pinNum, mode, numBytes)
1-Wire protocol function to read data from a 1-Wire device. Usage: pinNum - specifies a valid digital pin number [1-13] mode - specifies whether a reset is sent before and/or after the operation and the size of the data items, either bit or byte. Mode is a 3 bit number: bit 0: 1 = Send reset pulse before data bit 1: 1 = Send reset after data bit 2: 0 = byte sized data, 1 = bit sized data numBytes - number of bytes to read from 1-Wire device. Example: myBoard.owRead(1,1,20) Read on digital pin 1, send reset pulse before data, read 20 bytes. Returns read data as a python list.
owWrite(pinNum, mode, writeData)
1-Wire protocol function to write data to a 1-Wire device. Usage: pinNum - specifies a valid digital pin number [1-13] mode - specifies whether a reset is sent before and/or after the operation and the size of the data items, either bit or byte. Mode is a 3 bit number: bit 0: 1 = Send reset pulse before data bit 1: 1 = Send reset after data bit 2: 0 = byte sized data, 1 = bit sized data writeData - data to write to 1-Wire device. Data can be of type string, int, or a list of ints Example: myBoard.owWrite(1,1,100) Write on digital pin 1 with mode set to only reset before pulse and byte sized data, write data value 100
pausems(value)
Pause for a given time in milliseconds Usage: value - specifies a value in milliseconds, 1000 milliseconds = 1 second. Example: myBoard.pausems(500)
pauseus(value)
Pause for a given time in microseconds Usage: value - specifies a value in microseconds, 1000 microseconds = 1 millisecond. Example: myBoard.pauseus(500)
pinHigh(pinNum)
Set a digital pin high Usage: pinNum - specifies a valid digital pin number [1-13]. pinNum can also be a list of pins if you need to change a bunch of pins high in one call. Example: myBoard.pinHigh(1) myBoard.pinHigh([1,3,4,8,11])
pinLow(pinNum)
Set a digital pin low Usage: pinNum - specifies a valid digital pin number [1-13]. pinNum can also be a list of pins if you need to change a bunch of pins high in one call. Example: myBoard.pinLow(1) myBoard.pinLow([1,3,4,8,11])
pinToggle(pinNum)
Toggle a digital pin high or low by inverting it's current state Usage: pinNum - specifies a valid digital pin number [1-13]. pinNum can also be a list of pins if you need to change a bunch of pins high in one call. Example: myBoard.pinToggle(1) myBoard.pinToggle([1,3,4,8,11])
pulseCount(pinNum, duration)
Count the number of pulses that occur during the duration on digital pin [PulseCount will halt your program until the pulse count is complete] Usage: pinNum - specifies a valid digital pin number [1-13] duration - in milliseconds, the highest possible frequency that can be counted is 200KHz Example: pulseCount(4, 10)
pulseIn(pinNum, state)
Measure pulse width on a digital pin. [PulseIn will halt your program until the pulse in is complete] Usage: pinNum - specifies a valid digital pin number [1-13] state - specifies whether to measure a low or high pulse. 0 = measure the width of a low pulse. 1 = measure the width of a high pulse. Example: myBoard.pulseIn(1, 1)
pulseOut(pinNum, pulse, count)
Create a pulse out on a digital pin. The pulse is generated by toggling the pin twice, thus the initial state of the pin determines the polarity of the pulse. [PulseOut will halt your program until the pulse repeat cycle is complete] Usage: pinNum - specifies a valid digital pin number [1-13] pulse - specifies the period for the pulse. count - specifies how many times to repeat the pulse. Example: myBoard.pulseOut(4, 500, 20)
pwmDuty(pwmPin, duty)
Sets the PWM duty cycle for one of the PWM pins. Usage: pwmPin - specifies a valid PWM pin number [1-5] duty - specifies a valid duty cycle value [0-1023] Example: myBoard.pwmDuty(1, 500)
pwmOff(pwmPin)
Turns off the hardware PWM function for one of the PWM pins. Usage: pwmPin - specifies a valid PWM pin number [1-5] Example: myBoard.pwmOff(1)
pwmOn(pwmPin)
Turns on the hardware PWM function for one of the PWM pins. Usage: pwmPin - specifies a valid PWM pin number [1-5] Example: myBoard.pwmOn(1)
pwmPeriod(preScaler, preScalerOffset)
Set PWM period Usage: pwmPeriod(preScaler, preScalerOffset) preScaler: 1, 4, 16, or 64 preScalerOffset: 0 to 255 Example: pwmPeriod(1, 255) - Sets preScaler to 1:1, preScalerOffset to 255, PWM Period will be 31.875 micro Seconds, at 50% duty cycle Freq. will be 31.25Khz
reset()
Performs a hardware reset. Example: myBoard.reset()
serialRead(pinNum, mode, timeout, numBytes)
Read serial data with digital pin. Usage: pinNum - specifies a valid digital pin number [1-13] mode - sets baudrate and state: 0 = 2400 Driven True 1 = 4800 Driven True 2 = 9600 Driven True 3 = 19200 Driven True 4 = 2400 Driven Inverted 5 = 4800 Driven Inverted 6 = 9600 Driven Inverted 7 = 19200 Driven Inverted 8 = 2400 Open True 9 = 4800 Open True 10 = 9600 Open True 11 = 19200 Open True 12 = 2400 Open Inverted 13 = 4800 Open Inverted 14 = 9600 Open Inverted 15 = 19200 Open Inverted timeout - specifies a timeout period to wait if no serial data is received. numBytes - specifies the number of bytes to read from serial. Currently the max number of bytes is 64 per read. Example: myBoard.serialRead(1, 2, 1000, 10) Read 10 Bytes of Serial Data at 9600 Baud Driven True with a timeout of 1 second. Returns data as a string.
serialWrite(pinNum, mode, serialData)
Write serial data with digital pin. Usage: pinNum - mode - sets baudrate and state: 0 = 2400 Driven True 1 = 4800 Driven True 2 = 9600 Driven True 3 = 19200 Driven True 4 = 2400 Driven Inverted 5 = 4800 Driven Inverted 6 = 9600 Driven Inverted 7 = 19200 Driven Inverted 8 = 2400 Open True 9 = 4800 Open True 10 = 9600 Open True 11 = 19200 Open True 12 = 2400 Open Inverted 13 = 4800 Open Inverted 14 = 9600 Open Inverted 15 = 19200 Open Inverted serialData - Serial data to send. String data is currently limited to 64 Characters at a time, you can send lists or tuples which will get sent as individual serial writes per item. Example: Send a String, 9600 Driven Inverted on Pin 4: myBoard.serialWrite(4, 6, 'Hello World') Send an Int, 9600 Driven True on Pin 5: myBoard.serialWrite(5,2,100) Send multiple items at 9600 Driven True on pin 5: myBoard.serialWrite(5,2,['Hello World\\r\\n','This is a test of Multiple Items', 'In a List\\r\\n'])
soundOut(pinNum, note, duration)
Generates tone and/or white noise on the specified pin. [soundOut will halt your program until the sound playing is complete] Usage: note - 0 is silence. Notes 1-127 are tones. Notes 128-255 are white noise. tones and white noises are in ascending order (i.e. 1 and 128 are the lowest frequencies, 127 and 255 are the highest). Note 1 is about 78.74Hz and Note 127 is about 10,000Hz. duration - is 0-255 and determines how long the Note is played in about 12 millisecond increments. Example: myBoard.soundOut(1, 120, 10)
spiDisable()
Disables SPI and changes pins back to general IO pins Example: myBoard.spiDisable()
Enable SPI SCK (Clock) = Digital Pin 11 SDI (MISO) = Digital Pin 4 SDO (MOSI) = Digital Pin 5 Usage: clockPolarity: 0 - Idle state for clock is a low level 1 - Idle state for clock is a high level clockFreq: Specify Frequency for SPI clock in Khz (16Khz - 2000Khz Range) clockSelect: If clockPolarity = 0: 1 = Data transmitted on rising edge of Clock 0 = Data transmitted on falling edge of Clock If clockPolarity = 1: 1 = Data transmitted on falling edge of Clock 0 = Data transmitted on rising edge of Clock clockSample: 1 = Input data sampled at end of data output time 0 = Input data sampled at middle of data output time Example: myBoard.spiEnable(1,100,0,0) Clock idle high, 100Khz clock speed, Transmit on idle to active clock state, Data sampled at middle of output clock
spiTransfer(writeData, delay)
SPI Data Transfer SCK (Clock) = Digital Pin 11 SDI (MISO) = Digital Pin 4 SDO (MOSI) = Digital Pin 5 Usage: writeData - Data to be sent to SPI device, can be int, string, or a list of int's max 64 bytes per transfer. delay - Optional delay in microseconds default is 200 (1000 = 1 millisecond) between multibyte writes, max 64 bytes per transfer. Example: spiTransfer(160) Write a value of 160 to the SPI device and return SPI Read Byte spiTransfer([160,100,40,10,12,4], 400) Write all values out to the SPI Device, delay 400us between each byte, return bytes for each byte read as a list.