pysimavr is a python wrapper for simavr which is AVR and arduino simulator
- Links:
documentation: http://pysimavr.readthedocs.org
- Features:
Basic usage
>>> 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!
Installation
check simavr documentation
General
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
Uninstall
# as root pip uninstall pysimavr
Usage
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
#-#
vcd export example
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()
#-#
File hierarchy
|-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
How to update external sources
Metadata
Release files for pysimavr 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pysimavr-0.2.2.tar.gz | 1.1 MB | Without provenance | Details for pysimavr-0.2.2.tar.gz |
Release files / pysimavr-0.2.2.tar.gz
| Download URL | pysimavr-0.2.2.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70d49d3500d0381e6695f492e97eb86164ddc403ca03780ca2787f4641b20926
|
|
BLAKE2b-256 checksum How to use checksums |
2fe4ac33181c5c9acd2f9ae41b76ce5b7fcb9bb81004b5f1d2ad9cde409cae8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for pysimavr 0.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.