The Ultraschallsensor is finished and all addresses are added.

This commit is contained in:
2020-09-16 21:24:51 +02:00
parent b504d363ba
commit 1ac1c40332

View File

@@ -28,19 +28,33 @@ class Ultrasonic():
# #
# Diese Methode soll ein Datenbyte an den Ultraschallsensor senden um eine Messung zu starten # Diese Methode soll ein Datenbyte an den Ultraschallsensor senden um eine Messung zu starten
def write(self,value): def write(self,value):
try:
bus.write_byte_data(self.address, 0x00, 0x51)
except:
print "ERROR: Ultrasonic sensor start failed!"
return 0 return 0
# Aufgabe 2 # Aufgabe 2
# #
# Diese Methode soll den Lichtwert auslesen und zurueckgeben. # Diese Methode soll den Lichtwert auslesen und zurueckgeben.
def get_brightness(self): def get_brightness(self):
return 0 try:
light_v = bus.read_byte_data(self.address, 0x01)
except:
print "ERROR: Ultrasonic sensor get brightness failed!"
return light_v
# Aufgabe 2 # Aufgabe 2
# #
# Diese Methode soll die Entfernung auslesen und zurueckgeben. # Diese Methode soll die Entfernung auslesen und zurueckgeben.
def get_distance(self): def get_distance(self):
return 0 try:
range_High_Byte = bus.read_byte_data(self.address, 0x02)
range_Low_Byte = bus.read_byte_data(self.address, 0x03)
dist = (range_High_Byte << 8) + range_Low_Byte
except:
print "ERROR: Ultrasonic sensor get distance failed!"
return dist
def get_address(self): def get_address(self):
return self.address return self.address
@@ -48,6 +62,8 @@ class Ultrasonic():
class UltrasonicThread(threading.Thread): class UltrasonicThread(threading.Thread):
''' Thread-class for holding ultrasonic data ''' ''' Thread-class for holding ultrasonic data '''
stop = False
# distance to obstacle in cm # distance to obstacle in cm
distance = 0 distance = 0
@@ -58,6 +74,14 @@ class UltrasonicThread(threading.Thread):
# #
# Hier muss der Thread initialisiert werden. # Hier muss der Thread initialisiert werden.
def __init__(self, address): def __init__(self, address):
try:
threading.Thread.__init__(self)
time.sleep(0.1)
self.ultrasonic = Ultrasonic(address)
self.setDaemon(True)
self.start()
except:
print "ERROR: Ultrasonic sensor thread init failed!"
return 0 return 0
# Aufgabe 4 # Aufgabe 4
@@ -65,6 +89,8 @@ class UltrasonicThread(threading.Thread):
# Schreiben Sie die Messwerte in die lokalen Variablen # Schreiben Sie die Messwerte in die lokalen Variablen
def run(self): def run(self):
while not self.stopped: while not self.stopped:
distance = self.ultrasonic.get_distance()
brightness = self.ultrasonic.get_brightness()
continue continue
def stop(self): def stop(self):
@@ -193,24 +219,33 @@ class Encoder(object):
# Aufgabe 2 # Aufgabe 2
# #
# Wieviel cm betraegt ein einzelner Encoder-Schritt? # Wieviel cm betraegt ein einzelner Encoder-Schritt?
STEP_LENGTH = 0 # in cm STEP_LENGTH = 0 # in cm !!!ONP: to measure the wheel!!!
# number of encoder steps # number of encoder steps
count = 0 counter = 0
def __init__(self, pin): def __init__(self, pin):
self.pin = pin self.pin = pin
GPIO.add_event_detect(encoder_pin, GPIO.BOTH, callback=count, bouncetime=1)
# Aufgabe 2 # Aufgabe 2
# #
# Jeder Flankenwechsel muss zur Berechnung der Entfernung gezaehlt werden. # Jeder Flankenwechsel muss zur Berechnung der Entfernung gezaehlt werden.
# Definieren Sie alle dazu noetigen Methoden. # Definieren Sie alle dazu noetigen Methoden.
def count(channel):
global counter
counter = counter + 1
print "Number of impulses" + str(counter)
# Aufgabe 2 # Aufgabe 2
# #
# Diese Methode soll die gesamte zurueckgelegte Distanz zurueckgeben. # Diese Methode soll die gesamte zurueckgelegte Distanz zurueckgeben.
def get_travelled_dist(self): def get_travelled_dist(self):
return 0 global counter
global STEP_LENGTH
dist = counter * STEP_LENGTH
return dist
class EncoderThread(threading.Thread): class EncoderThread(threading.Thread):
''' Thread-class for holding speed and distance data of all encoders''' ''' Thread-class for holding speed and distance data of all encoders'''
@@ -225,6 +260,11 @@ class EncoderThread(threading.Thread):
# #
# Hier muss der Thread initialisiert werden. # Hier muss der Thread initialisiert werden.
def __init__(self, encoder): def __init__(self, encoder):
try:
GPIO.setmode(GPIO.BCM)
GPIO.setup(encoder_pin, GPIO.IN)
except:
print "ERROR: Encoder GPIO init failed!"
return 0 return 0
def run(self): def run(self):
@@ -235,6 +275,7 @@ class EncoderThread(threading.Thread):
# #
# Diese Methode soll die aktuelle Geschwindigkeit sowie die zurueckgelegte Distanz aktuell halten. # Diese Methode soll die aktuelle Geschwindigkeit sowie die zurueckgelegte Distanz aktuell halten.
def get_values(self): def get_values(self):
return 0 return 0
@@ -255,14 +296,14 @@ if __name__ == "__main__":
# Tragen Sie die i2c Adressen der Sensoren hier ein # Tragen Sie die i2c Adressen der Sensoren hier ein
# The i2c addresses of front and rear ultrasound sensors # The i2c addresses of front and rear ultrasound sensors
ultrasonic_front_i2c_address = 0x00; ultrasonic_front_i2c_address = 0x70;
ultrasonic_rear_i2c_address = 0x00; ultrasonic_rear_i2c_address = 0x71;
# The i2c address of the compass sensor # The i2c address of the compass sensor
compass_i2c_address = 0x00 compass_i2c_address = 0x60
# The i2c address of the infrared sensor # The i2c address of the infrared sensor
infrared_i2c_address = 0x00 infrared_i2c_address = 0x4f
# Aufgabe 6 # Aufgabe 6
# #