Bitte einmal drüber schauen kleiner Fehler
Verfasst: Sonntag 19. Februar 2017, 17:38
Ein Hallo in die Runde
Ich bin dabei mir eine Steuerung für ein Art Sushi Transportband zu Basteln.
Der Code ist soweit fertig, aber läuft noch nicht einwandfrei (es kommt vor das das Band gestoppt wird wo es eigentlich laufen sollte).
Ich besitze keinen Widerstand und hab mich für die „pull_up_down“ Version entschieden.
Könnte bitte mal einer darüber schauen und mir vielleicht ein Tipp geben was man anders oder besser machen könnte.
Kurze Erklärung:
ich starte in einen Magazin wo die Produkte gesammelt werden, diese sollen in einen gleichmäßigen mindest abstand (in Sekunden) auf das Transportband gefördert werden.
- eine Lichtschranke prüft ob Eingang belegt ist
- wenn die Lichtschranke nach Besetzt wieder frei ist wird gewartet ob sie wieder innerhalb der vorgabe Zeit Besetzt wird
- wenn ein Produkt versucht aufs Band zukommen bevor die Vorgabezeit um ist, wird der Schütz für die Restzeit gestoppt.
Ich hoffe dass ich mich verständlich ausgedrückt habe. Danke schön.
Ach ja ich bin noch ein Frischling in Python.
[codebox=python file=Unbenannt.txt]#!/usr/bin/env python
#coding: utf8
import RPi.GPIO as GPIO
import sys
import time
# Zählweise der Pins festlegen
GPIO.setmode(GPIO.BOARD)
# (GPIO 25) als Ausgang festlegen
Schuetz_GPIO = 22
GPIO.setup(Schuetz_GPIO, GPIO.OUT)
# (GPIO 27) als Eingang festlegen
LSensor_GPIO = 13
GPIO.setup(LSensor_GPIO, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
# Wenn Sensor wieder belegt ab zur zeit Prüfung
def belegt():
# Schleifenzähler
i = 0
# Endlosschleife
while 1:
if GPIO.input(LSensor_GPIO) == GPIO.LOW:
time.sleep(0.05)
abgehtes()
else:
time.sleep(0.05)
i = i + 1
# Wird Sensor wären der Schleife belegt Schütz stoppen
def abgehtes():
# Variable Takt in Sekunden initialisieren
poem =open("/home/pi/MMMProgi/takt.txt").read()
durchlauf = float(poem)
while durchlauf > 0:
if GPIO.input(LSensor_GPIO) == GPIO.LOW:
time.sleep(0.99)
print durchlauf
durchlauf = durchlauf-1
if durchlauf == 0:
main()
else:
time.sleep(0.5)
print "stop "
# (GPIO 25) ein Schalten
GPIO.output(Schuetz_GPIO, GPIO.LOW)
# Programm Start und auf erste freizeichen reagieren
def main():
# (GPIO 25) aus Schalten
GPIO.output(Schuetz_GPIO, GPIO.HIGH)
print "start "
# Schleifenzähler
i = 0
# Endlosschleife
while 1:
if GPIO.input(LSensor_GPIO) == GPIO.LOW:
i = i + 1
else:
belegt()
main()
# Ausgänge wieder freigeben
GPIO.cleanup()
[/code]
Ich bin dabei mir eine Steuerung für ein Art Sushi Transportband zu Basteln.
Der Code ist soweit fertig, aber läuft noch nicht einwandfrei (es kommt vor das das Band gestoppt wird wo es eigentlich laufen sollte).
Ich besitze keinen Widerstand und hab mich für die „pull_up_down“ Version entschieden.
Könnte bitte mal einer darüber schauen und mir vielleicht ein Tipp geben was man anders oder besser machen könnte.
Kurze Erklärung:
ich starte in einen Magazin wo die Produkte gesammelt werden, diese sollen in einen gleichmäßigen mindest abstand (in Sekunden) auf das Transportband gefördert werden.
- eine Lichtschranke prüft ob Eingang belegt ist
- wenn die Lichtschranke nach Besetzt wieder frei ist wird gewartet ob sie wieder innerhalb der vorgabe Zeit Besetzt wird
- wenn ein Produkt versucht aufs Band zukommen bevor die Vorgabezeit um ist, wird der Schütz für die Restzeit gestoppt.
Ich hoffe dass ich mich verständlich ausgedrückt habe. Danke schön.
Ach ja ich bin noch ein Frischling in Python.
[codebox=python file=Unbenannt.txt]#!/usr/bin/env python
#coding: utf8
import RPi.GPIO as GPIO
import sys
import time
# Zählweise der Pins festlegen
GPIO.setmode(GPIO.BOARD)
# (GPIO 25) als Ausgang festlegen
Schuetz_GPIO = 22
GPIO.setup(Schuetz_GPIO, GPIO.OUT)
# (GPIO 27) als Eingang festlegen
LSensor_GPIO = 13
GPIO.setup(LSensor_GPIO, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
# Wenn Sensor wieder belegt ab zur zeit Prüfung
def belegt():
# Schleifenzähler
i = 0
# Endlosschleife
while 1:
if GPIO.input(LSensor_GPIO) == GPIO.LOW:
time.sleep(0.05)
abgehtes()
else:
time.sleep(0.05)
i = i + 1
# Wird Sensor wären der Schleife belegt Schütz stoppen
def abgehtes():
# Variable Takt in Sekunden initialisieren
poem =open("/home/pi/MMMProgi/takt.txt").read()
durchlauf = float(poem)
while durchlauf > 0:
if GPIO.input(LSensor_GPIO) == GPIO.LOW:
time.sleep(0.99)
print durchlauf
durchlauf = durchlauf-1
if durchlauf == 0:
main()
else:
time.sleep(0.5)
print "stop "
# (GPIO 25) ein Schalten
GPIO.output(Schuetz_GPIO, GPIO.LOW)
# Programm Start und auf erste freizeichen reagieren
def main():
# (GPIO 25) aus Schalten
GPIO.output(Schuetz_GPIO, GPIO.HIGH)
print "start "
# Schleifenzähler
i = 0
# Endlosschleife
while 1:
if GPIO.input(LSensor_GPIO) == GPIO.LOW:
i = i + 1
else:
belegt()
main()
# Ausgänge wieder freigeben
GPIO.cleanup()
[/code]