63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""Interactive GPIO test for physical pin A14."""
|
|
|
|
import sys
|
|
|
|
from maix import gpio, pinmap
|
|
|
|
|
|
PIN = "A14"
|
|
GPIO_NAME = "GPIOA14"
|
|
|
|
|
|
def set_level(output, command):
|
|
if command == "1":
|
|
output.value(1)
|
|
print("A14 = HIGH, laser OFF")
|
|
return True
|
|
if command == "0":
|
|
output.value(0)
|
|
print("A14 = LOW, laser ON")
|
|
return True
|
|
return False
|
|
|
|
|
|
def main():
|
|
pinmap.set_pin_function(PIN, GPIO_NAME)
|
|
output = gpio.GPIO(GPIO_NAME, gpio.Mode.OUT)
|
|
|
|
# One-shot mode for SSH/serial shells: python3 test_gpio_a14.py 1|0
|
|
if len(sys.argv) > 1:
|
|
command = sys.argv[1].strip()
|
|
if not set_level(output, command):
|
|
print("Invalid argument. Use 1 or 0.")
|
|
return
|
|
return
|
|
|
|
output.value(1)
|
|
print("A14 laser test: input 0 for ON, 1 for OFF, q to quit.")
|
|
|
|
try:
|
|
while True:
|
|
try:
|
|
command = input("A14> ").strip().lower()
|
|
except EOFError:
|
|
print("This runner has no stdin. Run from an SSH/serial shell with argument 1 or 0.")
|
|
return
|
|
if set_level(output, command):
|
|
continue
|
|
elif command in ("q", "quit", "exit"):
|
|
break
|
|
elif command:
|
|
print("Invalid input. Use 1, 0, or q.")
|
|
except KeyboardInterrupt:
|
|
print()
|
|
finally:
|
|
output.value(1)
|
|
print("A14 = HIGH, laser OFF, test stopped.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|