-
Notifications
You must be signed in to change notification settings - Fork 29
Python core
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.
The module is available in PYPI
pip install pinguino
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
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)
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
...
p.set_8bit_compiler("sdcc") #sdcc or xc8 for 8bit
For use ICSP instead of bootloader just call set_icsp
p.set_icsp()
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']
success, message = p.upload()
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())