Page 1 of 1
Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 22 Nov 2018, 21:48
by TheBlackBird
Hallo zusammen,
ich bin jetzt vom normalen Pi auf das RevPi Core 3 umgestiegen, leider funktuniert meine Bashprogrammierung nicht.
Ich lese 2 Taster ein und möchte bei einem bestimmten Zustand eine LED leuchten lassen. Hardware passt soweit alles (alles richtig angeschlossen und getestet) also liegt es nur noch an der Software.
Am besten würde ich die Bash Programmierung beibehalten.
Vermutlich ist die Lösung ganz einfach aber ich komme nicht dahinter !
Hier mein altes Programm:
Code: Select all
#!/bin/sh
# Version: 1.0
# GPIO setzen
echo "23" > /sys/class/gpio/export
echo "24" > /sys/class/gpio/export
echo "GPIO setzen"
# GPIO als Eingang deklarieren
echo "in" > /sys/class/gpio/gpio23/direction
echo "in" > /sys/class/gpio/gpio24/direction
echo "GPIO deklarieren"
# Dauerschleife starten
while [ true ]
do
# GPIO abfragen
stoer=$(cat /sys/class/gpio/gpio23/value)
gas=$(cat /sys/class/gpio/gpio24/value)
echo $stoer
echo $gas
# Dauerschleife für GPIO abfrage
if [ $stoer = 0 ] && [ $gas = 0 ]
then
echo "kein Alarm"
# -----Hier soll: Betriebslampe Output_1 gleich 1!!!!!
sleep 1
fi
# Störungsalarm schalten
if [ $stoer != 0 ]
then
echo "Störung"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
sleep 1
fi
# CO²-Alarm schalten
if [ $gas != 0 ]
then
echo "Gasalarm"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
sleep 1
fi
done
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 23 Nov 2018, 07:34
by Eduard
Hallo,
das wird so nicht funktionieren. Der RevPi hat doch keine Eingänge, nur in Verbindung mit einem DIO oder DI hast du Eingänge.
Wo hast du deine Taster angeschlossen?
Wie du auf das Prozessabbild zugreifen kannst findest du zum Beispiel
hier.
Gruß
Eduard
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 23 Nov 2018, 09:10
by TheBlackBird
Guten Morgen,
ja, ich verwende ein DIO Modul zusätzlich zu meinem RevPi Core 3.
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 26 Nov 2018, 13:59
by TheBlackBird
Hallo,
leider werde ich aus dem Beispiel aus dem Prozessabbild nicht schlau.
Ich verwende das Core 3 mit einem DIO-Erweiterungsmodul
Vll können Sie mir ja weiterhelfen.
Gruß
Jörg
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 26 Nov 2018, 15:51
by dirk
Hi, schau dir einfach kurz mal das
Tutorial 12 – Ansteuerung der I/O-Module über die PiBridge an, dann wird alles klar.
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 26 Nov 2018, 20:29
by TheBlackBird
Leider hat mir bisher nichts weitergeholfen !!!
Ich habe oben mein bisheriges Programm vom Raspi mit Bash reingestellt. Dort funktuniert es.
Wie muss ich den für Das RevPi Änderungen vornehmen damit ich ohne Probleme in dieses laufende Programm meine Eingänge und Ausgänge einlesen/ausgeben kann?? Natürlich über das DIO-Modul.
Vll können Sie mir ja auch ein einfaches Bash oder Python Programm zukommen lassen für einen Eingang und Ausgang.
Damit ich sehen kann welche Bibs und sonstige Sachen einbinden muss.
Aus den Videos und den Beispielprogrammen werde ich bisher nicht schlau.
Vielen Dank
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 28 Nov 2018, 07:46
by dirk
Hallo,
du kannst das "piTest" Programm verwenden zum Lesen der Eingänge und Schreiben der Ausgänge. Bitte schau im PiCtory nach, wie die Ein- und Ausgänge deines DIOs benannt sind.
Ich habe hier "I_1" und "O_1" verwendet. Viel Erfolg.
Code: Select all
#!/bin/sh
# Version: 1.0
# Dauerschleife starten
while [ true ]
do
# GPIO abfragen
stoer=$(piTest -1 -q -r I_1)
gas=$(piTest -1 -q -r I_2)
echo $stoer
echo $gas
# Dauerschleife für GPIO abfrage
if [ $stoer = 0 ] && [ $gas = 0 ]
then
echo "kein Alarm"
# -----Hier soll: Betriebslampe Output_1 gleich 1!!!!!
piTest -w O_1,1
sleep 1
fi
# Störungsalarm schalten
if [ $stoer != 0 ]
then
echo "Störung"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1
fi
# CO²-Alarm schalten
if [ $gas != 0 ]
then
echo "Gasalarm"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1
fi
done
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 28 Nov 2018, 09:43
by Eduard
Hallo,
hier ist noch ein einfaches Python Programm. Das Programm fragt nach dem Eingang (I1) des DIOs und setzt den Ausgang (O1) wenn der Eingang(I1) „high“ ist.
In diesem Programm musst du noch die Offsets (INPUT und OUTPUT) anpassen.
Code: Select all
import struct
import time
class RevPiDIO():
# Central process iamge offset values...
INPUT = 0
OUTPUT = 70
f = None # piControl access device
def __init__(self):
self.f=open("/dev/piControl0","wb+",0)
return
#.-----------------------------------------------
def getInput(self):
self.f.seek(self.INPUT)
x = self.f.read(2)
s = struct.unpack('H',x)
i = s[0]
return i
def getOutput(self):
self.f.seek(self.OUTPUT)
x = self.f.read(2)
s = struct.unpack('H',x)
i = s[0]
return i
def setOutput(self, OUT):
self.f.seek(self.OUTPUT)
x = struct.pack('H', OUT)
self.f.write(x)
return
def run(self):
while True:
time.sleep(1)
input_temp = self.getInput()
input_temp = input_temp & 0x0001
if (input_temp==0x0001):
output_temp = self.getOutput()
output_temp = output_temp | 0x0001
self.setOutput(output_temp)
else:
output_temp = self.getOutput()
output_temp = output_temp & 0xFFFE
self.setOutput(output_temp)
RevPi = RevPiDIO()
RevPi.run()
Die Offsets kannst du mit „piTest –d“ abfragen siehe Bild.
- piTest -d.png (12.31 KiB) Viewed 12349 times
Den Python Script kannst du mit „ python3 scriptname“ ausführen.
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 30 Nov 2018, 15:35
by RevPiModIO
Na, wenn man auf Python geht, kann man es noch einfacher und weniger abschreckend machen
Man müsste nur eben die Namen der IOs aus piCtory im Code Ändern. Ich verwende I_1 + I_2 und als Ausgang O_1.
Und in der Funktion "zyklus" eben die Bedingungen, bei welchen Zuständen von I_1 + I_2 der Ausgang O_1 gesetzt oder zurückgesetzt werden soll:
Code: Select all
#!/usr/bin/python3
# -*- coding: utf-8 -*-
u"""Kleines Programm um zwei Eingänge zu prüfen und einen Ausgang zu sezten."""
import revpimodio2
# RevPiModIO instanziieren
rpi = revpimodio2.RevPiModIO(autorefresh=True)
rpi.handlesignalend()
def zyklus(ct):
u"""Zyklusfunktion für Steuerung."""
# Ausgang setzen wenn I_1 und nicht I_2
if rpi.io.I_1.value and not rpi.io.I_2.value:
rpi.io.O_1.value = True
# Ausgang rücksetzen wenn I_2 und nicht I_1
if rpi.io.I_2.value and not rpi.io.I_1.value:
rpi.io.O_1.value = False
print("gehe in loop")
rpi.cycleloop(zyklus)
print("programm ende")
Als einzige Abhängigkeit müsste das "python3-revpimodio2" Modul auf dem System installiert werden:
Code: Select all
pi@RevPi ~/ $ sudo apt-get update
# Installieren
pi@RevPi ~/ $ sudo apt-get install python3-revpimodio2
Möchte man bei der bash bleiben, ist das von Dirk schon ganz cool
Gruß, Sven
Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge
Posted: 10 Dec 2018, 14:45
by TheBlackBird
dirk wrote: ↑28 Nov 2018, 07:46
Hallo,
du kannst das "piTest" Programm verwenden zum Lesen der Eingänge und Schreiben der Ausgänge. Bitte schau im PiCtory nach, wie die Ein- und Ausgänge deines DIOs benannt sind.
Ich habe hier "I_1" und "O_1" verwendet. Viel Erfolg.
Code: Select all
#!/bin/sh
# Version: 1.0
# Dauerschleife starten
while [ true ]
do
# GPIO abfragen
stoer=$(piTest -1 -q -r I_1)
gas=$(piTest -1 -q -r I_2)
echo $stoer
echo $gas
# Dauerschleife für GPIO abfrage
if [ $stoer = 0 ] && [ $gas = 0 ]
then
echo "kein Alarm"
# -----Hier soll: Betriebslampe Output_1 gleich 1!!!!!
piTest -w O_1,1
sleep 1
fi
# Störungsalarm schalten
if [ $stoer != 0 ]
then
echo "Störung"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1
fi
# CO²-Alarm schalten
if [ $gas != 0 ]
then
echo "Gasalarm"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1
fi
done
Vielen Dank. So funktioniert es.