Hi,
Ich habe am GPIO Pin 24 eine Pulsierende Gleichspannung und will sobald dort ein längeres Signal anliegt Funksteckdosen schalten und ein Video aufnehmen. Dies soll solange passieren bis eine lange 0 Folge kommt. Zusätzlich soll noch nach dem Auslösen in eine Datei geschrieben werden.
Hier erstmal mein Code bisher:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import os
from time import gmtime, strftime
# Variable Counter definieren
global Counter
global Counter_False
global Times
Times = 0
Counter = 0
Counter_False = 0
# SoC als Pinreferenz waehlen
GPIO.setmode(GPIO.BCM)
# Pin 24 vom SoC als Input deklarieren und Pull-Down Widerstand aktivieren
GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
# Endlosschleife
while True:
if GPIO.input(24) == True:
Counter = Counter + 1
print "Counter " + str(Counter)
Counter_False = Counter_False - 1
# if Counter == 11:
# os.system ("raspivid -t 999999 -o video.h264 &")
if Counter > 10:
os.system ("./steuer")
if GPIO.input(24) == False:
Counter_False = Counter_False + 1
print "Counter_False " + str(Counter_False)
if Counter_False > 3:
os.system ("./steuer1")
os.system ("pkill raspivid")
Times = Times + 1
print "Anzahl " + str(Times)
fobj_in = open("Tiimes.txt")
fobj_out = open("Times","w")
fobj_out.write("Anzahl: " + str(Times)+ " " + strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) + " " + "2 Stunden dazu rechnen" + "\n")
fobj_in.close()
fobj_out.close()
Counter_False = 0
Counter = 0
time.sleep(1)
Alles anzeigen
Problem ist:
- Sobald eine Spannungsspitze ankommt wird ratikal bis 10 gezählt. Dies will ich verhindern. da wirklich die Flanken gezählt werden sollen.
Als Bsp. jede Sekunde kommt einmal der High zustand. Dieser soll gezählt werden. Also müsste er bei meinem Programm 10 sekunden warten bis eine if anweisung eintritt
- Der Video Befehl soll nur einmal ausgeführt werden
- in die Textdatei soll die Tatsächliche Systemzeit geschrieben werden.
Ihr seht, ich bin ein ziemlicher Anfänger und habe mir das aus etlichen Tutorials zusammen gebaut.
Probleme sehe ich bei den while schleifen und den if anweisungen.
Ich hoffe ihr habt ein paar tipps für mich, was in einem Code schief läuft.
LG