pysimavr is a python wrapper for simavr which is AVR and arduino simulator
- Links:
- home: https://github.com/ponty/pysimavr
- documentation: http://pysimavr.readthedocs.org
- PYPI: https://pypi.python.org/pypi/pysimavr
- Features:
>>> 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!
check simavr documentation
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() #-#
Output:
#-- 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) #-#
Output:
#-- 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() #-#
Output:
#-- sh('python -m pysimavr.examples.delay ')--# 0.0 0 1.00977802277 1 2.01976013184 2 3.02968215942 3 4.03792500496 4 #-#
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