Skip to content
Yeison Cardona edited this page Mar 12, 2016 · 1 revision

Pinguino IDE can be installed via pip, this also install a python core for use Pinguino through python commands.

Installation

The module is available in PYPI

pip install pinguino

Configuration

from pinguino import Pinguino, PinguinoConfig, Config

#create pinguino object
p = Pinguino()

#generate environment variables
PinguinoConfig.set_environ_vars()

#check pinguino user directory
PinguinoConfig.check_user_files()

#load configuration from pinguino user directory
config = Config()

#write configurations in pinguino object (p)
PinguinoConfig.update_pinguino_paths(config, p) #load compiler paths
PinguinoConfig.update_pinguino_extra_options(config, p) #load extra options for 32bit
PinguinoConfig.update_user_libs(p) #load user libraries

Lazy Configuration

Commands above are not necessary for simple uses, we can use the lazy mode.

from pinguino import Pinguino, lazy

#create pinguino object
p = Pinguino()

#Configure simple environment
lazy(p)

Set board

from pinguino import Pinguino, lazy, boards

p = Pinguino()
lazy(p)

p.set_board(boards.Pinguino2550)

To list all boards options

>>> from pinguino import boards
>>> for board in boards.boardlist: print(board.__name__)
... 
Pinguino1459
Curiosity
Pinguino2455
Pinguino4455
Pinguino2550
Pinguino4550
...

Set compiler

p.set_8bit_compiler("sdcc") #sdcc or xc8 for 8bit

Use ICSP

For use ICSP instead of bootloader just call set_icsp

p.set_icsp()

Compile

Compile an existing file from their absolute path

p.compile_file("absolute/path/to/filename.pde")

if p.compiled():
    print(p.get_hex_file()) #print path for generated .hex
else:
    print(p.get_errors()) #print error

Compile from string

code = """
setup(){
    pinMode(1, OUTPUT);
}

loop(){
    toggle(1);
    delay(100);
}
"""

p.compile_string(code)

Print .hex

code = "setup(){}loop(){}"
p.compile_string(code)

p.get_hex().readlines()
[':020000040000FA\n',
 ':100C000002EF06F014EEFFF024EEFFF0F86AA68E75\n',
 ':100C1000A69CBF0EE96E0E0EEA6E0068ED6A0050EB\n',
 ':100C2000FDE1FA0EF66E0C0EF76E000EF86E09007E\n',
 ':100C3000F5CF05F00900F5CF06F034D00900F5CF67\n',
 ':100C400000F00900F5CF01F00900F5CF02F009002E\n',
 ':100C50000900F5CFE9FF0900F5CFEAFF0900090017\n',
 ':100C60000900F5CF03F00900F5CF04F009000900F1\n',
 ':100C7000F6CF07F0F7CF08F0F8CF09F000C0F6FF85\n',
 ':100C800001C0F7FF02C0F8FF03D00900F5CFEEFF67\n',
 ':100C90000306FBE20406F9E207C0F6FF08C0F7FF0F\n',
 ':100CA00009C0F8FF0506CAE20606C8E259EC06F0DC\n',
 ':100CB000FFD7D0B202D0930ED012D350030B800FC7\n',
 ':100CC0007E0F02E3D3A4FED76EEC06F084EC06F0B0\n',
 ':100CD0008BEC06F08AEC06F0FDD71200896A8A6A6E\n',
 ':100CE000400E8B6E926A936A949094929494949C22\n',
 ':100CF000949E806A816A826A12000100120D0000CF\n',
 ':100D000000050000010000000F0EC16E070EB46E5A\n',
 ':080D10001200000012001200A5\n',
 ':00000001FF\n']

Upload

success, message = p.upload()

Complete example

from pinguino import Pinguino, lazy, boards

code = """
setup(){
    pinMode(USERLED, OUTPUT);
}

loop(){
    toggle(USERLED);
    delay(1000);
}
"""

p = Pinguino()
lazy(p)

p.set_board(boards.Pinguino4550)
p.set_8bit_compiler("sdcc")

p.compile_string(code)

if p.compiled():
    success, message = p.upload()

    if success:
        print("Done")
    else:
        print("Fail")
        print(message)

else:
    print(p.get_errors())