simavr的python包装器,它是avr和arduino模拟器。
pysimavr的Python项目详细描述
pysimavr是simavr的python包装器,它是AVR和arduino模拟器
- 链接:
基本用法
>>> from pysimavr.avr import Avr >>> avr=Avr(mcu='atmega48',f_cpu=8000000) >>> firmware = Firmware('lcd.elf') >>> avr.load_firmware(firmware)>>> from pysimavr.sim import ArduinoSim >>> print ArduinoSim(snippet='Serial.print("hello!");').get_serial() hello!
安装
检查simavr文档
一般
ubuntu 14.04
sudo apt-get install python-pip sudo apt-get install python-dev gcc libelf-dev arduino sudo pip install pysimavr # optional for some tests: sudo apt-get install freeglut3-dev scons swig
卸载
# as root pip uninstall pysimavr
用法
pysimavr.examples.simple:
#-- include('examples/simple.py')--# from pysimavr.avr import Avr if __name__ == "__main__": avr = Avr(mcu='atmega48', f_cpu=8000000) print( avr.pc ) avr.step(1) print( avr.pc ) avr.step(1) print( avr.pc ) avr.terminate() #-#
输出:
#-- sh('python -m pysimavr.examples.simple ')--# 0 2 4 #-#
pysimavr.examples.hello:
#-- include('examples/hello.py')--# from pysimavr.sim import ArduinoSim if __name__ == "__main__": s= ArduinoSim(snippet='Serial.println("hello!");').get_serial() print(s) #-#
输出:
#-- sh('python -m pysimavr.examples.hello ')--# hello! #-#
pysimavr.examples.delay:
#-- include('examples/delay.py')--# from pysimavr.sim import ArduinoSim import time snippet = ''' int i=0; while (1) { Serial.println(i++); _delay_ms(1000); } ''' t0 = None def logger(x): global t0 t = time.time() if not t0: t0 = t print t - t0, x f_cpu=16000000 fps=20 speed=1 timespan=5 if __name__ == "__main__": ArduinoSim(snippet=snippet, timespan=timespan, serial_line_logger=logger, f_cpu=f_cpu, fps=fps, speed=speed, ).run() #-#
输出:
#-- sh('python -m pysimavr.examples.delay ')--# 0.0 0 1.00977802277 1 2.01976013184 2 3.02968215942 3 4.03792500496 4 #-#
VCD导出示例
pysimavr.examples.vcd:
#-- include('examples/vcd.py')--# from pysimavr.sim import ArduinoSim vcdfile='delay.vcd' snippet = ''' Serial.println("start"); pinMode(0, OUTPUT); digitalWrite(0, HIGH); delay(100); digitalWrite(0, LOW); delay(100); digitalWrite(0, HIGH); delay(100); digitalWrite(0, LOW); delay(100); Serial.println("end"); ''' if __name__ == "__main__": sim = ArduinoSim(snippet=snippet, vcd=vcdfile, timespan=0.5) sim.run() #-#
文件层次结构
|-docs sphinx documentation |---.build generated documentation |-pysimavr main python package, high level classes |---examples examples |---swig all swig files (simavr and parts) |-----include copy of simavr generated *.h files |-------avr copy from avr-libc |-----parts some electronic parts in c |-----simavr simavr as git submodule |-tests unit tests