diff options
author | Evgeny Zinoviev <me@ch1p.io> | 2021-10-31 16:30:35 +0300 |
---|---|---|
committer | Evgeny Zinoviev <me@ch1p.io> | 2021-10-31 16:30:35 +0300 |
commit | dd54f14917e1883f2dd8ed64f913d7525e4708cc (patch) | |
tree | 40f58e7681cab1ee356ca70ca813bc84a39c97de /example.py |
initial
Diffstat (limited to 'example.py')
-rwxr-xr-x | example.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/example.py b/example.py new file mode 100755 index 0000000..3ebfc6c --- /dev/null +++ b/example.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +import os, logging +from argparse import ArgumentParser +from mg996r import MG996R + +default_degree = 360 +state_file = '.servo-state' + +if __name__ == '__main__': + # set logging level + logging.basicConfig(level=logging.DEBUG) + + # parse arguments + parser = ArgumentParser() + parser.add_argument('--deg', type=int, required=True) + parser.add_argument('--pin', type=str, default='PA6', + help='GPIO pin to use') + parser.add_argument('--reset', action='store_true', + help=f'Use clean default state (degree = {default_degree})') + args = parser.parse_args() + + start_degree = default_degree + + # restore previous degree from a file + if not args.reset: + try: + if os.path.exists(state_file): + with open(state_file, 'r') as f: + start_degree = int(f.read()) + if not 0 <= start_degree <= 360: + raise ValueError(f'invalid degree value in {state_file}') + except (IOError, ValueError) as e: + logging.exception(e) + start_degree = default_degree + + servo = MG996R(args.pin, start_degree) + servo.move(args.deg) + + # save degree to a file + try: + with open(state_file, 'w') as f: + f.write(str(args.deg)) + except IOError as e: + logging.exception(e) |