Hallo zusammen,
ich habe das Problem das mein Programm zwar Läuft, aber ich ne CPU Last von +-40% habe und bei weiteren Routinen mein Programm Pulse schluckt.
Einige im Internet schreiben dass das am Python liegt. C oder C++ währe da schneller siehe Link. raspberry-pi-gpio-speed
Einige andere sind das Problem umgangen in dem sie ein arduino nutzen.... ich habe keinen beim Kauf stellte ich fest dass es 2 verschiedene gibt und hauptsächlich in C/C++ sind.
ich habe auch schon Lösungen wie gaugette.rotary_encoder versucht, brachten aber keine Besserung.
Da ich 0 Kenntnisse von C / C++ habe könnt ihr mein Programm, zum erfassen der RPGs umschreiben und eine kleine HowTo dazu geben wie man das in Python importiert?
hier mein komplettes Programm.
from time import sleep
import RPi.GPIO as GPIO
#import smbus
import time
#import datetime
#import gaugette.rotary_encoder
GPIO.setmode(GPIO.BOARD) # Pin-Nummern wie auf dem Raspberry Board verwenden
GPIO.setwarnings(False) #Schaltet die Warnmeldungen ab
MOTORYL=13 #13
MOTORYR=15 #15
SYL=12 #Servo B Linksrum
SYR=16 #Servo B Rechtsrum
SXR=22 #Servo A Rechtsrum
SXL=18 #Servo A Linksrum
GPIO.setup(SXL,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SXR,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SYL,GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(SYR,GPIO.IN, pull_up_down=GPIO.PUD_UP)
ServoAL = GPIO.input(SXL)
ServoAR = GPIO.input(SXR)
ServoAL = GPIO.input(SYL)
ServoAR = GPIO.input(SYR)
CountX= 1000
CountY= 1000
RichtungXR=0
RichtungYR=0
CountXPrint = 0
CountYPrint = 0
Running = 1
def sensorXL(PinXL): # ---- RPG Sensor Start--------
global CountX, Rpg, Fehler, RichtungXR
if RichtungXR==1:
CountX = CountX +1
else:
CountX = CountX -1
def sensorXR(PinXR):
global RichtungXR
RichtungXR=GPIO.input(SXR)
if RichtungXR==1:
RichtungXR =1
else:
RichtungXR=0
def sensorYL(PinYL): #Y RPG Sensor
global CountY, Rpg, Fehler, RichtungYR
if RichtungYR==1:
CountY = CountY +1
else:
CountY = CountY -1
def sensorYR(PinYR):
global RichtungYR
RichtungYR=GPIO.input(SYR)
if RichtungYR==1:
RichtungYR=1
else:
RichtungYR=0
def abfrage():
GPIO.add_event_detect(SXL, GPIO.FALLING, sensorXL)
GPIO.add_event_detect(SXR, GPIO.BOTH, sensorXR)
GPIO.add_event_detect(SYL, GPIO.FALLING, sensorYL)
GPIO.add_event_detect(SYR, GPIO.BOTH, sensorYR)
# ---- RPG Sensor ENDE--------
#---------------------------------------Hauptprogramm----------------------------------------------------------------------
abfrage()
#Zeit = time.time()
while Running:
sleep(0.1)
if CountX <> CountXPrint:
print "CountX ", CountX #, RichtungXR
CountXPrint = CountX
if CountY <> CountYPrint:
print "CountY ", CountY #, RichtungYR
CountYPrint = CountY
Alles anzeigen
Gruß Termi