|
|
|
from subprocess import call, check_output
|
|
|
|
from lib import ultrasonic
|
|
|
|
import RPi.GPIO as GPIO
|
|
|
|
|
|
|
|
|
|
|
|
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 relais"""
|
|
|
|
|
|
|
|
def __init__(self, lightpin):
|
|
|
|
self.pin = lightpin
|
|
|
|
GPIO.setup(self.pin, GPIO.OUT)
|
|
|
|
GPIO.output(self.pin, True)
|
|
|
|
self.shine = False
|
|
|
|
|
|
|
|
def switch(self):
|
|
|
|
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)
|
|
|
|
|
|
|
|
def get_distance(self):
|
|
|
|
distance = self.sensor.echo()
|
|
|
|
return distance
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
self.sensor.clean()
|
|
|
|
|
|
|
|
|
|
|
|
class Temperature:
|
|
|
|
"""A temperature sensor"""
|
|
|
|
|
|
|
|
def get_Temperature(self):
|
|
|
|
outp = check_output(['python', '-u', './lib/thermolib.py']).decode('ISO-8859-1')
|
|
|
|
temp, hum = outp.split('|')
|
|
|
|
return temp
|
|
|
|
|
|
|
|
def get_Humidity(self):
|
|
|
|
outp = check_output(['python', '-u', './lib/thermolib.py']).decode('ISO-8859-1')
|
|
|
|
temp, hum = outp.split('|')
|
|
|
|
return hum
|