Link zur Hauptseite des Forums

LotharGehlhaar - Teichbauforum

DAS informative Forum der Koi-Szene
Link zur Enzyklopaedie
Aktuelle Zeit: Di 20.Mai 2025 7:03

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1114 Beiträge ]  Gehe zu Seite Vorherige  1 ... 63, 64, 65, 66, 67, 68, 69 ... 112  Nächste
Autor Nachricht
BeitragVerfasst: Mo 27.Apr 2015 21:36 

Cash on hand: Locked
Servus Bernhard,
ja ich denke daran.

Nur momentan sind meine Pi´s alle außer betrieb, da ich meine gesteckten Breadboards auseinander gerissen habe und zur Zeit alles in Aufsteck-Platinen übertrage.
Die Löterei mit Lupe und fehlender Dritter Hand dauert noch ein bisschen, in meiner Ausbildung ging es besser :shock:


Nach oben
  
 
BeitragVerfasst: Di 28.Apr 2015 11:53 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hallo Bernhard,

hoeneß2 hat geschrieben:
Hallo Paul,

denkst Du an das Script und die Skizzen für Gunter zum Thema einfacher Schwimmerschalter.

Dann könnten wir unserem Raspi eine neue Funktion hinzukommen lassen.

Schon mal vielen Dank im voraus :hallo: :1st: :1st:

Gruß
Bernhard


ich habe das bei mir schon auf der Platine hardwareseitig realisiert.
Dateianhang:
PI_Schalter_Layout.png
PI_Schalter_Layout.png [ 584.64 KiB | 2171-mal betrachtet ]

Dateianhang:
PI_Schalter_Klemmleistenbelegung.png
PI_Schalter_Klemmleistenbelegung.png [ 334.55 KiB | 2171-mal betrachtet ]


Ich wollte mir selbst auch schon eine Lib schreiben. Kann ich ja heute oder morgen mal schnell machen.

Dazu benötige ich aber von euch und Pfiffikus noch folgende Angaben (Schnittstellenbeschreibung)

Soll die Schaltung auf eine Flanke reagieren?
Inputparameter: GPIOIN
Outputparameter: 'trigger'

Soll die Schaltung nach einer bestimmten Zeit den Status abfragen?
Inputparameter: GPIOIN
Outputparameter: '0' oder '1'

Was würde ecuh reichen? Das z.B jede Minute der Status des Schwimmerschlters abgefragt wird? Das wäre einfach umzusetzen.

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Di 28.Apr 2015 12:37 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
So hab es eben mal schnell gemacht, ohne zu testen. Müsste so funktionieren

Code:
#-----------------------------#
#      Author: Dennis         #
#-----------------------------#
import RPi.GPIO as GPIO
import sys

#GPIO PINs deklariren
GPIOin = int(sys.argv[1])

#Warnings ausschalten um fehlerhafte Logausgaben zu vermeiden
GPIO.setwarnings(False)

#set GPIO PINS
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIOin, GPIO.IN)

def Measure(GPIOin):
   #Read input Pin
   Status = GPIO.input(GPIOin)
   return Status

Status = Measure(GPIOin)
print Status

GPIO.cleanup()


EDIT: Warnings früher ausgeschaltet

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Di 28.Apr 2015 15:18 

Cash on hand: Locked
Hallo zusammen,
da war der Dennis wohl schneller!¯\_(ツ)_/¯

Hier mein Skript pegelschalter.py : An z.B GPIO 16

#!/usr/bin/python2.7
#================================================================================================================================================
#Title : Pegelschalter an GPIO 16 auslesen
#Author : Paul Fischkopf
#Datum : 28.04.2015
#Version : 03
#Anwendung :Starte Script mit ./pegelschalter.py -d
#Notizen :Um einen GPIO zu exportieren muessen wir jedoch Root sein (was ein bisschen nervt). Entweder wechselt man vorher zum Root-Benutzer,
# oder man aendert die Rechte der export-Datei: pi@raspberrypi ~ $ sudo chmod 222 /sys/class/gpio/export /sys/class/gpio/unexport
# pi@raspberrypi ~ $ gpio export 16 in
#================================================================================================================================================

import RPi.GPIO as GPIO
import time

# Variable Pegelsch definieren
Pegelsch=1

# SoC als Pinreferenz waehlen
GPIO.setmode(GPIO.BCM)

# Pin 16 vom SoC als Input deklarieren und Pull-Down Widerstand aktivieren
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

# ISR "Interrupt"
def Interrupt(channel):
# Zugriff auf globale Variablen
global Pegelsch

# Pegel ausgeben
Pegelsch = Pegelsch
# print "Pegelschalter " + str(Pegelsch)

# Interrupt Event hinzufuegen.GPIO Pin 16, auf steigende (RISING) Flanke reagieren und ISR "Interrupt" deklarieren
GPIO.add_event_detect(16, GPIO.RISING, callback=Interrupt, bouncetime=300)



# Definition der Hauptfunktion
def main():
try:
while True:
fobj = open("/sys/class/gpio/gpio16/value", "r")
for line in fobj:
print line.rstrip()
fobj.close()

# Abfrageintervall des Pegelschalters in sec.
time.sleep(60)

# zuruecksetzen der GPIO Einstellungen wenn der Benutzer Tastaturabbruch nutzt "Ctrl+C"
except KeyboardInterrupt:
print(" PEGELSCHALTER halt durch Benutzer")
GPIO.cleanup()

if __name__ == '__main__':
# GPIO Pinreferenz waehlen (GPIO.BCM)
GPIO.setmode(GPIO.BCM)


# Aufruf der Hauptfunktion
main()

[/code]


Ausgabe getestet mit Putty:
Code:
root@raspberrypi1:/var/www/teichmonitor# ./pegelschalter.py -d
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
^C PEGELSCHALTER halt durch Benutzer
root@raspberrypi1:/var/www/teichmonitor#


Für die Ausgabe und weiter Verarbeitung gibt es mehre Möglichkeiten:
1. als Variable
2. als Datei
3. cat /sys/class/gpio/gpio3/value

Das Abfrageintervall des Pegelschalters steht hier auf 60 sec. zum testen auf 1sec. bitte stellen.
# Abfrageintervall des Pegelschalters in sec.
time.sleep(60)

Meine Verschaltung, ein bisschen anders als bei Dennis, da Spannungsteiler nicht benötigt wird.
Dateianhang:
Pegel 1.jpg

Dateianhang:
Pegel_2.jpg


Zuletzt geändert von Fischkopf am Di 28.Apr 2015 16:31, insgesamt 1-mal geändert.

Nach oben
  
 
BeitragVerfasst: Di 28.Apr 2015 15:49 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hi Paul,

ja ist etwas eleganter es per Software als Pulldown oder Pullup zu deklarieren. Ich wollte damit nur evtl entstehende Spannungsspitzen durch lange parallele Leitungen eliminieren. Werden aber warschinlich in der Praxis nie benötigt. Naja ich hatte ein paar Widerstände übrig. ;)

Ich habe es eben in einer Kaffeepause mal als Flankensteuerung geschrieben.

Das Problem dabei ist, dass nachdem das Skript aufgerufen wurde man nur eine Ausgabe erhält, wenn auch ein Schalter betätigt wurde. Solange bleibt es stehen.
@ Pfiffikus: Stellt das ein Problem für deine Steuerung dar?

Inputparameter: GPIOIN
Outputparameter: 'rising' oder 'falling'

Code ist nicht getestet: Mache ich mal irgendwann nach dem Pokalspiel :)
Code:
#-----------------------------#
#      Author: Dennis         #
#-----------------------------#
import RPi.GPIO as GPIO
import sys

#GPIO PINs deklariren
GPIOin = int(sys.argv[1])

#Warnings ausschalten um fehlerhafte Logausgaben zu vermeiden
GPIO.setwarnings(False)

#set GPIO PINS
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIOin, GPIO.IN)

def Measure(GPIOin):
   #Read input Pin, if Input is HIGH wait for falling edge and if the inpit is low wait for rising edge
   if GPIO.input(GPIOin):
      GPIO.wait_for_edge(GPIOin, GPIO.FALLING)
      Status = "falling"
   else:
      GPIO.wait_for_edge(GPIOin, GPIO.RISING)
      Status = "rising"
   return Status

#Read if a falling or rising edge is detected
Status = Measure(GPIOin)
print Status

GPIO.cleanup()

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Di 28.Apr 2015 16:05 

Cash on hand: Locked
schnuffi hat geschrieben:
So hab es eben mal schnell gemacht, ohne zu testen. Müsste so funktionieren

Code:
#-----------------------------#
#      Author: Dennis         #
#-----------------------------#
import RPi.GPIO as GPIO
import sys

#GPIO PINs deklariren
GPIOin = int(sys.argv[1])

#Warnings ausschalten um fehlerhafte Logausgaben zu vermeiden
GPIO.setwarnings(False)

#set GPIO PINS
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIOin, GPIO.IN)

def Measure(GPIOin):
   #Read input Pin
   Status = GPIO.input(GPIOin)
   return Status

Status = Measure(GPIOin)
print Status

GPIO.cleanup()


EDIT: Warnings früher ausgeschaltet


Hallo Dennis,
Dein Skript funktioniert auch :hallo:
Ist schön klein und übersichtlich.

root@raspberrypi1:/var/www/teichmonitor/Test_skripts# ./testpegel.py 16
1
root@raspberrypi1:/var/www/teichmonitor/Test_skripts#
root@raspberrypi1:/var/www/teichmonitor/Test_skripts# ./testpegel.py 16
1
root@raspberrypi1:/var/www/teichmonitor/Test_skripts# ./testpegel.py 16
1
root@raspberrypi1:/var/www/teichmonitor/Test_skripts# ./testpegel.py 16
0
root@raspberrypi1:/var/www/teichmonitor/Test_skripts#


Aber warum verwendest Du den Spannungsteiler 3Volt am GPIO Eingang ist doch in Ordnung und dann nur definiert gegen GND. das er nicht in der Luft hängt.


Nach oben
  
 
BeitragVerfasst: Di 28.Apr 2015 16:46 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hey Paul.

Danke für das probieren.

Ich habe irgendwo mal gelesen das es bei direktem Anschluss an die 3,3V bei hohen Leitungslängen mal Probleme gab. Hab es aber eben nicht wieder gefunden.

Dafür war der kleine Begrenzungswiderstand. Nimmt bei mir auf der Platiene nicht so viel ein.
Dateianhang:
uploadfromtaptalk1430235966223.jpg
uploadfromtaptalk1430235966223.jpg [ 71.46 KiB | 2124-mal betrachtet ]



Gesendet von meinem GT-I9305 mit Tapatalk 2

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
 Betreff des Beitrags: Werbung, um Taler einzunehmen
Verfasst: Di 20.Mai 2025 7:03 
Online
Expertin
Benutzeravatar

Registriert: Mo 05.Dez 2005 19:01
Cash on hand:
immer zu wenige Taler

Beiträge: nur ein paar
Wohnort: Koi-Schnack
Anzeige:

_________________
Wenn du einen Monat lang ein werbefreies Forum willst, klicke hier und überweise mir 100 Taler!
Wenn du mich im Koi-Schnack etwas fragen möchtest, klicke hier!


Nach oben
 Profil Private Nachricht senden  
 
BeitragVerfasst: Di 28.Apr 2015 17:07 

Cash on hand: Locked
schnuffi hat geschrieben:
Hey Paul.

Danke für das probieren.

Ich habe irgendwo mal gelesen das es bei direktem Anschluss an die 3,3V bei hohen Leitungslängen mal Probleme gab. Hab es aber eben nicht wieder gefunden.


Hey Dennis,
ich habe mal eine andere Erfahrung gemacht und des halb den Widerstand weggelassen danach wahr alles gut.

Wenn ich doch zwischen High und Low auswerte wobei High max. 3,3 Volt sind geht es doch nicht Higher.

Dennis weis Du wie ich eine Variable in ein Verzeichnispfad einbinden kann?
GPIOin = int(sys.argv[1])
fobj = open("/sys/class/gpio/gpio + str(GPIOin)/value", "r")

Ist mir gerade so aufgefallen :hallo:


Nach oben
  
 
BeitragVerfasst: Di 28.Apr 2015 18:16 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hi Paul. Schau ich mir mal morgen an.

:grin:

Gesendet von meinem GT-I9305 mit Tapatalk 2

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Mi 29.Apr 2015 14:35 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hallo Paul,

ich habe mir das eben angeschaut. Was möchtest du genau machen?

Fischkopf hat geschrieben:
Dennis weis Du wie ich eine Variable in ein Verzeichnispfad einbinden kann?
GPIOin = int(sys.argv[1])
fobj = open("/sys/class/gpio/gpio + str(GPIOin)/value", "r")

Ist mir gerade so aufgefallen :hallo:


Willst du einfach nur eine Datei im Pfad /sys/class/gpio/gpio16/value lesen und in fobj ablegen?

Das hätte ich so gemacht:

Code:
sGPIOin = str(GPIOin)
PFAD = "/sys/class/gpio/gpio" + sGPIOin + "/value"
fobj = open(PFAD, "r")

_________________
____________________
Viele Grüße
Dennis
____________________


Zuletzt geändert von schnuffi am Mi 29.Apr 2015 14:55, insgesamt 1-mal geändert.

Nach oben
 Profil userposition on geomap  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1114 Beiträge ]  Gehe zu Seite Vorherige  1 ... 63, 64, 65, 66, 67, 68, 69 ... 112  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de