Bevor Programmablauf Lichtschranke (GPIO.input) prüfen
Verfasst: Donnerstag 7. Januar 2021, 10:33
Hey,
Ich würde gerne in folgenden Code
würde ich gerne eine Lichtschranke einbauen. Durch das "def Mischung" werden die Pumpen von einen Automaten angesteuert. Jedoch sollte vor den Ablauf durch eine If Funktion geprüft werden ob die Lichtschranke unterbrochen ist und falls ja erst der Ablauf mit den pumpen beginnen. Ich habe bereits ein Programm für die Lichtschranke geschrieben und mit einem LED Kreis verbunden, dies funktioniert super. Sobald ich die Lichtschranke unterbreche werden die LED Grün. Ich habe aber Probleme diesen Code in den oberen "einzubauen" und alle versuche scheiterten.
Den Ablauf starte ich aus einem anderen Skript mit tkinter und dies Funktioniert auch, die Pumpen reagieren.
Wie ist den die beste herangehensweise?
Ich habe unter den "def" eine If Funktion gestartet aber dies funktionierte nicht.
Hier der Code den ich zur reinen überprüfung der Funktionalität der Schranke verwendet habe:
Liebe Grüße
Alfred
Ich würde gerne in folgenden Code
Code: Alles auswählen
#...Programm
from tkinter import *
import RPi.GPIO as GPIO
import time
import neopixel
import board
pixels = neopixel.NeoPixel(board.D18, 24)
def Mischung1():
pixels.fill((255, 0, 0))
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.LOW)
time.sleep(2)
GPIO.output(17, GPIO.HIGH)
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, GPIO.LOW)
time.sleep(8)
GPIO.output(22, GPIO.HIGH)
pixels.fill((0, 255, 0))
Den Ablauf starte ich aus einem anderen Skript mit tkinter und dies Funktioniert auch, die Pumpen reagieren.
Wie ist den die beste herangehensweise?
Ich habe unter den "def" eine If Funktion gestartet aber dies funktionierte nicht.
Hier der Code den ich zur reinen überprüfung der Funktionalität der Schranke verwendet habe:
Code: Alles auswählen
import RPi.GPIO as GPIO
import os, time
import board
import neopixel
import time
from rpi_ws281x import *
import argparse
pixels = neopixel.NeoPixel(board.D18, 24)
RECEIVER_PIN = 16
def callback_func(channel):
if GPIO.input(channel):
time.sleep(0.25)
pixels.fill((0, 255, 0))
else:
pixels.fill((255, 0, 0))
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(RECEIVER_PIN, GPIO.IN)
GPIO.add_event_detect(RECEIVER_PIN, GPIO.RISING, callback=callback_func,)
try:
while True:
time.sleep(0.2)
except:
GPIO.remove_event_detect(RECEIVER_PIN)
Liebe Grüße
Alfred