Sensordaten eines Ultraschallsensors einlesen mit Rpi

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
rusb
User
Beiträge: 9
Registriert: Donnerstag 20. Oktober 2016, 10:53

Hallo Leute ich hänge jetzt schon seit längeren an einem Problem:

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
Kann mir bitte jemand irgendwelche Ratschläge geben?
Zuletzt geändert von Anonymous am Montag 14. November 2016, 16:10, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wozu soll denn das serial-Modul dienen? Dein Sensor laeuft doch auf dem PI - entweder plottest du dort direkt, oder du schickst die Daten an den PC. Wenn letzteres, dann waere der Umweg ueber serial aber so, als ob du einem Rennwagen einen Pedalantrieb spendierst. Da kann doch einfach ein Netzwerk genutzt werden.
Antworten