Also zunächst habe ich mit den Raspberry und einer Steckplatine wo man den Ultraschallsensor platzieren kann verschiedene Abstandsmessungen gemacht (Das Beispiel glaub ich kennen die meisten von euch und die Anleitungen gibts zu genüge im internet) Das funktioniert auch perfekt.
Als nächstes wolle ich ein Pythonskript erstellen wo ich zur Laufzeit, also genau dann wenn die ermittelten Abstände ausgegeben werden, diese wieder einzulesen um im Idealfall zu plotten. Ich habe erfahren dass ich dazu die serial bibliothek brauche welche ich sowohl auf dem Rpi Betriebssystem als auch auf windows installiert habe. Leider habe ich echt keine Ahnung wie ich beim zweiten Skript vorgehen muss um mein Ziel zu erreichen. hier sind die beiden skripte (Das erste, dass die Abstandsdaten gibt, das zweite welches diese einlesen soll)
Code: Alles auswählen
import serial
import time
import RPi.GPIO as GPIO
# define GPIO pins
GPIOTrigger = 18
GPIOEcho = 17
# function to measure the distance
def MeasureDistance():
# set trigger to high
GPIO.output(GPIOTrigger,True)
# set trigger after 10ms to low
time.sleep(0.00001)
GPIO.output(GPIOTrigger,False)
# store initial start time
StartTime = time.time()
# store start time
while GPIO.input(GPIOEcho) == 0:
StartTime = time.time()
# store stop time
while GPIO.input(GPIOEcho) == 1:
StopTime = time.time()
# calculate distance
TimeElapsed = StopTime - StartTime
Distance = (TimeElapsed * 34300) / 2
return Distance
# main function
def main():
try:
while True:
Distance = MeasureDistance()
print("Measure Distance = %.1f cm" % Distance)
time.sleep(1)
# reset GPIO settings if user pressed Ctrl+C
except KeyboardInterrupt:
print("Measurement stopped by user")
GPIO.cleanup()
if __name__ == '__main__':
# use GPIO pin numbering convention
GPIO.setmode(GPIO.BCM)
# set up GPIO pins
GPIO.setup(GPIOTrigger, GPIO.OUT)
GPIO.setup(GPIOEcho, GPIO.IN)
# set trigger to false
GPIO.output(GPIOTrigger, False)
#call main function
main()
Code: Alles auswählen
import serial
import numpy
import matplotlib.pyplot as plt
from drawnow import drawnow
raspberryData = serial.Serial("/dev/ttyAMA0", baudrate=115200, timeout=3.0)
while True:
while(raspberryData.inWaiting()==0):
pass
raspberryString = raspberryData.readline()
print raspberryString[0]
print