mirror of https://github.com/Trivernis/spydian.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.3 KiB
Python
95 lines
2.3 KiB
Python
from subprocess import call, check_output
|
|
from lib import ultrasonic
|
|
import RPi.GPIO as GPIO
|
|
import time
|
|
|
|
|
|
class Navigator:
|
|
"""Forward Motor with relais, Steering with servo"""
|
|
|
|
def __init__(self, mrelaispin):
|
|
self.mrelpin = mrelaispin
|
|
self.steer = None
|
|
GPIO.setup(self.mrelpin, GPIO.OUT)
|
|
self.stop()
|
|
|
|
def left(self):
|
|
if self.steer != 'left':
|
|
call(['python', './lib/servolib.py', 'left'])
|
|
self.steer = 'left'
|
|
|
|
def right(self):
|
|
if self.steer != 'right':
|
|
call(['python', './lib/servolib.py', 'right'])
|
|
self.steer = 'right'
|
|
|
|
def straight(self):
|
|
if self.steer:
|
|
call(['python', './lib/servolib.py'])
|
|
self.steer = None
|
|
|
|
def forward(self):
|
|
GPIO.output(self.mrelpin, False)
|
|
|
|
def stop(self):
|
|
GPIO.output(self.mrelpin, True)
|
|
|
|
|
|
class Light:
|
|
"""Light switched with a relays"""
|
|
|
|
def __init__(self, lightpin):
|
|
self.pin = lightpin
|
|
GPIO.setup(self.pin, GPIO.OUT)
|
|
GPIO.output(self.pin, True)
|
|
self.shine = False
|
|
|
|
def switch(self):
|
|
print('light switch {}'.format(self.shine))
|
|
GPIO.output(self.pin, not self.shine)
|
|
self.shine = not self.shine
|
|
|
|
def switch_on(self):
|
|
GPIO.output(self.pin, False)
|
|
|
|
def switch_of(self):
|
|
GPIO.output(self.pin, True)
|
|
|
|
|
|
class Ultrasonic:
|
|
"""A ultrasonic sensor"""
|
|
|
|
def __init__(self, trigger, echo):
|
|
self.sensor = ultrasonic.Sensor()
|
|
self.sensor.init(trigger, echo)
|
|
self.time = 0
|
|
self.distance = 0
|
|
|
|
def get_distance(self):
|
|
if (time.time() - self.time) > 1:
|
|
self.distance = self.sensor.echo()
|
|
self.time = time.time()
|
|
return self.distance
|
|
|
|
def __del__(self):
|
|
self.sensor.cleanup()
|
|
|
|
|
|
class Temperature:
|
|
"""A temperature sensor"""
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
@staticmethod
|
|
def get_temperature():
|
|
outp = check_output(['python', '-u', './lib/thermolib.py']).decode('ISO-8859-1')
|
|
temp, hum = outp.split('|')
|
|
return temp
|
|
|
|
@staticmethod
|
|
def get_humidity():
|
|
outp = check_output(['python', '-u', './lib/thermolib.py']).decode('ISO-8859-1')
|
|
temp, hum = outp.split('|')
|
|
return hum
|