Variable splitten
Verfasst: Freitag 23. November 2018, 20:03
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
# -*- coding: utf-8 -*-
import serial #OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//
import time
import RPi.GPIO as GPIO
import atexit
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor
# create a default object, no changes to I2C address or frequency
mh = Adafruit_MotorHAT(addr=0x60)
# recommended for auto-disabling motors on shutdown!
def turnOffMotors():
mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)
atexit.register(turnOffMotors)
#DC motor test
#Links
Motor_Rechts = mh.getMotor(1)
#Rechts
Motor_Links = mh.getMotor(2)
Vorwaerts = run(Adafruit_MotorHAT.FORWARD) #Variablen werden definiert
Rueckwaerts = run(Adafruit_MotorHAT.BACKWARD)
Stop = run(Adafruit_MotorHAT.RELEASE)
Abbiegezeit = 1
Motor_Rechts.setSpeed(100)
Motor_Links.setSpeed(100)
#import serial
#ser = serial.Serial(0)
#ser.is_open
#True
#ser.setRTS(1)
#ser.setRTS(0)
#print(ser.getCTS())
#False
#ser.close()
serial = serial.Serial('/dev/ttyACM0', 9600)
serial.open
time.sleep(5)
try:
def Split_Variablen():
while True:
try:
response = serial.readline()
print (response)
f,uv,ur1,ur2 = response.split()
Sensor_Vorne = uv
Sensor_Rechts_1 = ur1
Sensor_Rechts_2 = ur2
Farbe = f
except ValueError:
print("Error")
def Rechte_Hand():
while True:
try:
if Sensor_Rechts_2 < 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts. Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts. Vorwaerts
Motor_Links. Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne > 20:
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 < 20 and Sensor_Vorne > 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
except ValueError:
print("Error")
def Motor_Geschwindigkeit():
while True:
try:
if Sensor_Rechts_1 > Sensor_Rechts_2:
Motor_Links. setSpeed(150)
Motor_Rechts. setSpeed(100)
elif Sensor_Rechts_1 < Sensor_Rechts_2:
Motor_Links. setSpeed(100)
Motor_Rechts. setSpeed(150)
elif Sensor_Rechts_1 == Sensor_Rechts_2:
Motor_Rechts. setSpeed(100)
Motor_Links. setSpeed(100)
except ValueError:
print("Error")
Split_Variablen() #Funktionen werden gestartet
Rechte_Hand()
Motor_Geschwindigkeit()
except KeyboardInterrupt:
s.close()
turnOffMotors
Code: Alles auswählen
>>> s = b'Distance=15\r\n'
>>> int(s.split('=')[-1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'
Code: Alles auswählen
>>> int(s.split(b'=')[-1])
15
Also bis jetzt funktioniert er sehr gut... XDSirius3 hat geschrieben: Samstag 24. November 2018, 11:54 @AngryJones: Funktionen sind nicht so etwas wie Sprungmarken. Funktionen sind in sich abgeschlossene Bereiche, die sich mit ihrer Umgebung per Argumente und Rückgabewerte austauschen. Sie sollten am Anfang einer Datei stehen und nicht innerhalb eines try-Blocks.
Es wäre also sehr überraschend, wenn der neue Code überhaupt funktioniert.
Code: Alles auswählen
# -*- coding: utf-8 -*-
import threading
import serial #OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//
import time
import RPi.GPIO as GPIO
import atexit
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor
# create a default object, no changes to I2C address or frequency
mh = Adafruit_MotorHAT(addr=0x60)
# recommended for auto-disabling motors on shutdown!
def turnOffMotors():
mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)
atexit.register(turnOffMotors)
#DC motor test
#Links
Motor_Rechts = mh.getMotor(1)
#Rechts
Motor_Links = mh.getMotor(2)
Vorwaerts = run(Adafruit_MotorHAT.FORWARD) #Variablen werden definiert
Rueckwaerts = run(Adafruit_MotorHAT.BACKWARD)
Stop = run(Adafruit_MotorHAT.RELEASE)
Abbiegezeit = 1
Motor_Rechts.setSpeed(100)
Motor_Links.setSpeed(100)
#import serial
#ser = serial.Serial(0)
#ser.is_open
#True
#ser.setRTS(1)
#ser.setRTS(0)
#print(ser.getCTS())
#False
#ser.close()
serial = serial.Serial('/dev/ttyACM0', 9600)
serial.open
time.sleep(5)
try:
def Split_Variablen():
while True:
try:
response = serial.readline()
#print (response)
uv = int(response.split(b'=')[-1])
Sensor_Vorne = uv
Sensor_Rechts_1 = ur1
Sensor_Rechts_2 = ur2
Farbe = f
except ValueError:
print("Error")
def Rechte_Hand():
while True:
try:
if Sensor_Rechts_2 < 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts. Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts. Vorwaerts
Motor_Links. Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne > 20:
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 < 20 and Sensor_Vorne > 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
except ValueError:
print("Error")
def Motor_Geschwindigkeit():
while True:
try:
if Sensor_Rechts_1 > Sensor_Rechts_2:
Motor_Links. setSpeed(150)
Motor_Rechts. setSpeed(100)
elif Sensor_Rechts_1 < Sensor_Rechts_2:
Motor_Links. setSpeed(100)
Motor_Rechts. setSpeed(150)
elif Sensor_Rechts_1 == Sensor_Rechts_2:
Motor_Rechts. setSpeed(100)
Motor_Links. setSpeed(100)
except ValueError:
print("Error")
Split_Variablen() #Funktionen werden gestartet
Rechte_Hand()
Motor_Geschwindigkeit()
Split_Variablen = threading.Thread(target = Split_Variablen) #Funktionen werden in Threads verpackt
Split_Variablen.start()
Rechte_Hand = threading.Thread(target = Rechte_Hand)
Rechte_Hand.start()
Motor_Geschwindigkeit = threading.Thread(target = Motor_Geschwindigkeit)
Motor_Geschwindigkeit.start()
except KeyboardInterrupt:
s.close()
turnOffMotors
Code: Alles auswählen
# -*- coding: utf-8 -*-
import threading
import serial #OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//
import time
import RPi.GPIO as GPIO
import atexit
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor
# create a default object, no changes to I2C address or frequency
mh = Adafruit_MotorHAT(addr=0x60)
# recommended for auto-disabling motors on shutdown!
def turnOffMotors():
mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)
atexit.register(turnOffMotors)
#DC motor test
#Links
Motor_Rechts = mh.getMotor(1)
#Rechts
Motor_Links = mh.getMotor(2)
Vorwaerts = run(Adafruit_MotorHAT.FORWARD) #Variablen werden definiert
Rueckwaerts = run(Adafruit_MotorHAT.BACKWARD)
Stop = run(Adafruit_MotorHAT.RELEASE)
Abbiegezeit = 1
Motor_Rechts.setSpeed(100)
Motor_Links.setSpeed(100)
#import serial
#ser = serial.Serial(0)
#ser.is_open
#True
#ser.setRTS(1)
#ser.setRTS(0)
#print(ser.getCTS())
#False
#ser.close()
serial = serial.Serial('/dev/ttyACM0', 9600)
serial.open
time.sleep(1)
try:
while True:
def Split_Variablen():
response = serial.readline()
#print (response)
uv = int(response.split(b'=')[-1])
Sensor_Vorne = uv
Sensor_Rechts_1 = ur1
Sensor_Rechts_2 = ur2
Farbe = f
print(Sensor_Vorne)
def Rechte_Hand():
if Sensor_Rechts_2 < 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts. Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts. Vorwaerts
Motor_Links. Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne > 20:
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 < 20 and Sensor_Vorne > 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
def Motor_Geschwindigkeit():
if Sensor_Rechts_1 > Sensor_Rechts_2:
Motor_Links. setSpeed(150)
Motor_Rechts. setSpeed(100)
elif Sensor_Rechts_1 < Sensor_Rechts_2:
Motor_Links. setSpeed(100)
Motor_Rechts. setSpeed(150)
elif Sensor_Rechts_1 == Sensor_Rechts_2:
Motor_Rechts. setSpeed(100)
Motor_Links. setSpeed(100)
except KeyboardInterrupt:
print("Error")
Code: Alles auswählen
# -*- coding: utf-8 -*-
import threading
import serial #OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//
import time
import RPi.GPIO as GPIO
import atexit
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor
# create a default object, no changes to I2C address or frequency
mh = Adafruit_MotorHAT(addr=0x60)
# recommended for auto-disabling motors on shutdown!
def turnOffMotors():
mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)
atexit.register(turnOffMotors)
#DC motor test
#Links
Motor_Rechts = mh.getMotor(1)
#Rechts
Motor_Links = mh.getMotor(2)
Vorwaerts = run(Adafruit_MotorHAT.FORWARD) #Variablen werden definiert
Rueckwaerts = run(Adafruit_MotorHAT.BACKWARD)
Stop = run(Adafruit_MotorHAT.RELEASE)
Abbiegezeit = 1
Motor_Rechts.setSpeed(100)
Motor_Links.setSpeed(100)
#import serial
#ser = serial.Serial(0)
#ser.is_open
#True
#ser.setRTS(1)
#ser.setRTS(0)
#print(ser.getCTS())
#False
#ser.close()
serial = serial.Serial('/dev/ttyACM0', 9600) #Für Arduino
#serial = serial.Serial('COM3', 9600) #Für PC
serial.open
time.sleep(1)
def Split_Variablen(): #Definiere alle Funktionen
try:
response = serial.readline()
#print (response)
uv = int(response.split(b'=')[-1])
Sensor_Vorne = uv
Sensor_Rechts_1 = ur1
Sensor_Rechts_2 = ur2
Farbe = f
print(Sensor_Vorne)
except ValueError:
print("ValueError")
def Rechte_Hand():
if Sensor_Rechts_2 < 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts. Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts. Vorwaerts
Motor_Links. Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne > 20:
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 > 20 and Sensor_Vorne < 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(2)
Motor_Rechts .Stop
Motor_Links .Stop
Motor_Rechts .Rueckwaerts
Motor_Links .Rueckwaerts
time.sleep(1)
Motor_Rechts .Rueckwaerts
Motor_Links .Vorwaerts
time.sleep(Abbiegezeit)
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
time.sleep(1.5)
elif Sensor_Rechts_2 < 20 and Sensor_Vorne > 20:
Motor_Rechts .Vorwaerts
Motor_Links .Vorwaerts
def Motor_Geschwindigkeit():
if Sensor_Rechts_1 > Sensor_Rechts_2:
Motor_Links. setSpeed(150)
Motor_Rechts. setSpeed(100)
elif Sensor_Rechts_1 < Sensor_Rechts_2:
Motor_Links. setSpeed(100)
Motor_Rechts. setSpeed(150)
elif Sensor_Rechts_1 == Sensor_Rechts_2:
Motor_Rechts. setSpeed(100)
Motor_Links. setSpeed(100)
try: #Starte alle Funktionen
while True:
Split_Variablen()
Rechte_Hand()
Motor_Geschwindigkeit()
except KeyboardInterrupt:
print("Error")