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
# optional for generating code:
sudo apt-get install swig
# as root
pip uninstall pysimavr
$ sudo dnf install swig python3-devel libevent-devel elfutils-libelf-devel
$ sudo pip install 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