Hallo,
ich möchte für ein Jugend Forscht Projekt Ventile nach Sensoren und einer Zeitschaltung ansteuern so das ich aus einer Kammer luft rein und raus lassen kan bzw. gar nichts passiert. Die Ansteuerung passiert über einen Raspberry pi mit dem modul pi face ansteuern. Ich habe leider nur ahnung von Html, Labview und Lego Mindstorms(ist eigentlich auch lab view). Eigentlich wollte Ich es mit Lab view machen aber ich habe im internet erfahren das sowas leider noch nicht möglich ist. Ich möchte daher mit der Programmierung klein anfangen und erst einmal was programmieren wo ich per Eingabe sagen kann ob luft rein/raus oder gar keine Luft sich bewegt. Könnte mir jemand erklären wie ich das hinbekomme?Welches python brauche ich 2 oder 3 oder ist es egal?
Sobald Diese Frage gestellt ist werde ich mir ein Python tutorial durchlesen
Raspberry pi model b
Raspberry pi
-
- User
- Beiträge: 97
- Registriert: Donnerstag 2. Mai 2013, 19:11
Vorab Python 2 oder 3 .. Einige benutzten 2 die andern 3. Aber so wie ich das mitbekommen habe benutzen die Leute die mit Python 2 groß geworden sind es immernoch, andere wiederrum sind umgestiegen auf Python 3
Ich als Neuling benutzte Python3. Du wirst hier im Forum hilfe zu beiden Versionen bekommen, falls du sie benötigst. Einige Module existieren nur für Python 2 und daher nicht in python 3 ausführbar. Allerdings ist hier die Frage ob du sie brauchst
Hier mal ein Thered der das schon mal besprochen hat
mfg
Trayser
Ich als Neuling benutzte Python3. Du wirst hier im Forum hilfe zu beiden Versionen bekommen, falls du sie benötigst. Einige Module existieren nur für Python 2 und daher nicht in python 3 ausführbar. Allerdings ist hier die Frage ob du sie brauchst
Hier mal ein Thered der das schon mal besprochen hat
mfg
Trayser
- diesch
- User
- Beiträge: 80
- Registriert: Dienstag 14. April 2009, 13:36
- Wohnort: Brandenburg a.d. Havel
- Kontaktdaten:
Die Python-Bibliothek für das PiFace gibt es für Python 2 und Python 3, dafür ist es also egal.
Für Python 2.x spricht, dass es mehr Bibliotheken gibt, die nur mir 2.x funktionieren, als solche, die nur mit 3.x funktionieren. Ob das für dich relevant ist, kommt darauf an, was du genau vor hast.
Für Python 3.x spricht, dass da ganz klar die Zukunft liegt und da manche Sachen einfacher oder eleganter gelöst sind, z.B. die Zeichenkodierung in Strings.
Die Unterschiede zwischen den beiden sind aber nicht sehr groß, so dass es kein ernsthaftes Problem sein sollte, wenn du später mal wechseln willst.
Die Doku zu pifacedigitalio hat ein paar einfache Beispiele, wie du damit die Schalter, Relays und LEDs ansprechen kannst.
Für Python 2.x spricht, dass es mehr Bibliotheken gibt, die nur mir 2.x funktionieren, als solche, die nur mit 3.x funktionieren. Ob das für dich relevant ist, kommt darauf an, was du genau vor hast.
Für Python 3.x spricht, dass da ganz klar die Zukunft liegt und da manche Sachen einfacher oder eleganter gelöst sind, z.B. die Zeichenkodierung in Strings.
Die Unterschiede zwischen den beiden sind aber nicht sehr groß, so dass es kein ernsthaftes Problem sein sollte, wenn du später mal wechseln willst.
Die Doku zu pifacedigitalio hat ein paar einfache Beispiele, wie du damit die Schalter, Relays und LEDs ansprechen kannst.
http://www.florian-diesch.de
ich bin jetzt ein Stück weiter und wollte Mir ein Hauptprogramm schreiben von dem ich alle anderen Programme sarte und koordiniere. Ich habe dabei eine Fragen bevor ich anfange:
Wie startet man ein python Programm durch ein (Haupt)Python Programm so das das (Haupt)Python Programm angehalten ist und wie das es weiterläuft?
Wie startet man ein python Programm durch ein (Haupt)Python Programm so das das (Haupt)Python Programm angehalten ist und wie das es weiterläuft?
@b.grosse: Externe Programm startet man mit dem `subprocess`-Modul.
Die Frage ist ob man wirklich verschiedene Programme schreiben sollte wenn alles in Python umgesetzt wird und die nicht besser so schreibt, dass man die Funktionen und Klassen in den Modulen auch von anderen Modulen aus benutzen kann.
Die Frage ist ob man wirklich verschiedene Programme schreiben sollte wenn alles in Python umgesetzt wird und die nicht besser so schreibt, dass man die Funktionen und Klassen in den Modulen auch von anderen Modulen aus benutzen kann.
So hab jetzt mein Programm ohne subprocess fertig und hab aber einen Fehler.
wenn ich 1 2 oder 3 eingebe passiert nichts und er Fragt mich nochmal, also folgere ich das er 1 2 oder 3 nicht erkennt.
kann das sein das ich die Keyboard eingabe noch in umerisch umwandeln muss?
Das ist das Programm:
wenn ich 1 2 oder 3 eingebe passiert nichts und er Fragt mich nochmal, also folgere ich das er 1 2 oder 3 nicht erkennt.
kann das sein das ich die Keyboard eingabe noch in umerisch umwandeln muss?
Das ist das Programm:
Code: Alles auswählen
from time import sleep
import pifacedigitalio as pfio
import sys
pfio.init()
pfio.digital_write( 0, 1, 0)
sleep(0.50)
pfio.digital_write( 1, 1, 0)
sleep(0.50)
pfio.digital_write( 2, 1, 0)
pfio.digital_write( 0, 0, 0)
sleep(0.50)
pfio.digital_write( 3, 1, 0)
pfio.digital_write( 1, 0, 0)
sleep(0.50)
pfio.digital_write( 4, 1, 0)
pfio.digital_write( 2, 0, 0)
sleep(0.50)
pfio.digital_write( 5, 1, 0)
pfio.digital_write( 3, 0, 0)
sleep(0.50)
pfio.digital_write( 6, 1, 0)
pfio.digital_write( 4, 0, 0)
sleep(0.50)
pfio.digital_write( 7, 1, 0)
pfio.digital_write( 5, 0, 0)
sleep(0.50)
pfio.digital_write( 6, 0, 0)
sleep(0.50)
pfio.digital_write( 7, 0, 0)
sleep(0.50)
while True:
e = input("Programm 1,2 oder 3?: ")
s = input ()
if s == 1:
print("beende...")
pfio.deinit()
raise SystemExit
else:
u = 0
if e == 1:
while u <= 10:
print ("1 Variante")
print (u + " mal")
u + 1
elif e == 2:
while u <= 10:
print ("2 Variante")
print (u + " mal")
u + 1
elif e == 3:
while u <= 10:
print ("3 Variante")
print (u + " mal")
u + 1
@b.grosse: genau, »input« liest Strings ein, und ein Vergleich mit Zahlen ist immer falsch. Warum machst Du eigentlich zwei Inputs?
Gib Deinen Variablen sinnvolle Namen. Du solltest auch Dein Programm noch in Funktionen packen, es wird solangsam zu lang:
Gib Deinen Variablen sinnvolle Namen. Du solltest auch Dein Programm noch in Funktionen packen, es wird solangsam zu lang:
Code: Alles auswählen
from time import sleep
import pifacedigitalio as pfio
def initialize():
pfio.init()
ports = list(range(8))
for port_an, port_aus in zip(ports + [None,None], [None,None] + ports):
if port_an is not None:
pfio.digital_write(port_an, 1, 0)
if port_aus is not None:
pfio.digital_write(port_aus, 0, 0)
sleep(0.5)
def run_program(variant):
if variant == 1:
for u in range(11):
print ("1 Variante")
print (u + " mal")
elif variant == 2:
for u in range(11):
print ("2 Variante")
print (u + " mal")
elif variant == 3:
for u in range(11):
print ("3 Variante")
print (u + " mal")
def main():
try:
initialize()
while True:
variant = input("Programm x, 1,2 oder 3?: ")
if variant == 'x':
print("beende...")
break
run_program(int(variant))
finally:
pfio.deinit()
if __name__ == '__main__':
main()
Hallo Leute Ich habe ein Programm ausgefüllt es wäre dann bis auf weiteres fertig. Ich habe Leider einen Fehler, den ich nicht finde. :K
Wenn ich versuche Programm 1 zu starten "versucht " er das Programm zu beenden und scheitert daran
Bitte nicht sauer sein das ich es nicht in eine Funktion gepackt habe , da ich mich damit zum einen unzureichend auskenne und die möglichkeiten nicht überblicke(ich habe nur noch zwei Wochen stressige Schule Zeit) und zum anderen ich keine wirklichen "Rythmus" dahinter habe wie ich die Kammern auf und ablasse (ich glaube es legt eher am ersten Grund )
Hier ist das Programm:
Hier ist der Fehlercode:
Wenn ich versuche Programm 1 zu starten "versucht " er das Programm zu beenden und scheitert daran
Bitte nicht sauer sein das ich es nicht in eine Funktion gepackt habe , da ich mich damit zum einen unzureichend auskenne und die möglichkeiten nicht überblicke(ich habe nur noch zwei Wochen stressige Schule Zeit) und zum anderen ich keine wirklichen "Rythmus" dahinter habe wie ich die Kammern auf und ablasse (ich glaube es legt eher am ersten Grund )
Hier ist das Programm:
Code: Alles auswählen
from time import sleep
import pifacedigitalio as pfio
Delay = 1
Sleep = 5
antwort1 ="Auffüllen (1/3)"
antwort2 ="Auffüllen (2/3)"
antwort3 ="Auffüllen (3/3)"
antwort4 ="Ruhestellung"
antwort5 ="Ablassen"
Auslassen = 30
def initialize():
pfio.init()
ports = list(range(8))
for port_an, port_aus in zip(ports + [None,None], [None,None] + ports):
if port_an is not None:
pfio.digital_write(port_an, 1, 0)
if port_aus is not None:
pfio.digital_write(port_aus, 0, 0)
sleep(0.225)
def run_program(variant):
if variant == 1:
for u in range(2):
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,0,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,0,1)
print (antwort4)
sleep(Sleep)
pfio.digital_write(0,1,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,1,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,1,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,0,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,0,1)
print (antwort1)
sleep(Delay)
pfio.digital_write(0,1,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,1,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,0,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,0,1)
print (antwort2)
sleep(Delay)
pfio.digital_write(0,1,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,0,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,0,1)
print (antwort3)
sleep(Delay)
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,0,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,0,1)
print (antwort4)
sleep(Sleep)
pfio.digital_write(0,0,0)
pfio.digital_write(1,1,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,1,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,1,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,1,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,1,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,1,1)
print (antwort5)
sleep(Auslassen)
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,1,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,1,1)
pfio.digital_write(4,0,1)
pfio.digital_write(5,1,1)
pfio.digital_write(6,0,1)
print (antwort4)
sleep(Sleep)
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,1,1)
pfio.digital_write(4,0,1)
pfio.digital_write(5,1,1)
pfio.digital_write(6,0,1)
print (antwort1)
sleep(Delay)
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(4,0,1)
pfio.digital_write(5,1,1)
pfio.digital_write(6,0,1)
print (antwort2)
sleep(Delay)
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,0,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,0,1)
print (antwort3)
sleep(Delay)
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,0,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,0,1)
print (antwort4)
sleep(Sleep)
pfio.digital_write(0,0,0)
pfio.digital_write(1,1,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,1,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,1,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,1,0)
pfio.digital_write(0,0,1)
pfio.digital_write(1,1,1)
pfio.digital_write(2,0,1)
pfio.digital_write(3,1,1)
print (antwort5)
sleep(Auslassen)
print ("1 Variante")
print (u)
elif variant == 2:
for u in range(11):
print ("2 Variante")
print (u)
elif variant == 3:
for u in range(11):
print ("3 Variante")
print (u)
def main():
try:
initialize()
while True:
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
variant = input("Programm x, 1,2 oder 3?: ")
if variant == 'x':
print("beende...")
break
run_program(int(variant))
finally:
pfio.digital_write(0,0,0)
pfio.digital_write(1,0,0)
pfio.digital_write(2,0,0)
pfio.digital_write(3,0,0)
pfio.digital_write(4,0,0)
pfio.digital_write(5,0,0)
pfio.digital_write(6,0,0)
pfio.digital_write(7,0,0)
pfio.deinit()
print("fertig!")
input("zum Schließen beliebige taste drücken")
if __name__ == '__main__':
main()
Code: Alles auswählen
Python 3.2.3 (default, Mar 1 2013, 11:53:50)
[GCC 4.6.3] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
Programm x, 1,2 oder 3?: 2
2 Variante
0
2 Variante
1
2 Variante
2
2 Variante
3
2 Variante
4
2 Variante
5
2 Variante
6
2 Variante
7
2 Variante
8
2 Variante
9
2 Variante
10
Programm x, 1,2 oder 3?: 3
3 Variante
0
3 Variante
1
3 Variante
2
3 Variante
3
3 Variante
4
3 Variante
5
3 Variante
6
3 Variante
7
3 Variante
8
3 Variante
9
3 Variante
10
Programm x, 1,2 oder 3?: 1
Traceback (most recent call last):
File "/home/pi/Desktop/Wechsel mit test.py", line 237, in <module>
main()
File "/home/pi/Desktop/Wechsel mit test.py", line 233, in main
pfio.deinit()
File "/usr/lib/python3/dist-packages/pifacedigitalio/core.py", line 183, in deinit
pfd.deinit_board()
File "/usr/lib/python3/dist-packages/pifacedigitalio/core.py", line 118, in deinit_board
self.disable_interrupts()
File "/usr/lib/python3/dist-packages/pifacedigitalio/core.py", line 90, in disable_interrupts
self.gpio_interrupts_disable()
File "/usr/lib/python3/dist-packages/pifacecommon/interrupts.py", line 221, in gpio_interrupts_disable
deactivate_gpio_interrupt()
File "/usr/lib/python3/dist-packages/pifacecommon/interrupts.py", line 376, in deactivate_gpio_interrupt
unexport_file.write(str(GPIO_INTERRUPT_PIN))
IOError: [Errno 22] Invalid argument
So das ist jetzt eine weile her das ich die Erste Frage gestellt habe und mit Python begonnen hab.
Ich wollte das Programm jetzt so erweitern das ich wenn der Raspberry pi nicht am Internet und nicht an der Tastatur hängt über am Raspberry pi angebaute gesteuert werden kann.
Dazu hsbe ich das um die Internetverbindung zu erkennen:
Leider habe ich nichts anständiges gefunden um die Tastatur zu erkennen habt ihr da ne idee? :K
Ich wollte das Programm jetzt so erweitern das ich wenn der Raspberry pi nicht am Internet und nicht an der Tastatur hängt über am Raspberry pi angebaute gesteuert werden kann.
Dazu hsbe ich das um die Internetverbindung zu erkennen:
Code: Alles auswählen
import socket
REMOTE_SERVER = "www.google.com"
def is_connected():
try:
# see if we can resolve the host name -- tells us if there is
# a DNS listening
host = socket.gethostbyname(REMOTE_SERVER)
# connect to the host -- tells us if the host is actually
# reachable
s = socket.create_connection((host, 80), 2)
return True
except:
pass
return False
@b.grosse: Man könnte per `pyudev`-Modul nach Tastaturen suchen. Zum Beispiel nach Geräten mit dem Attribut ID_INPUT_KEYBOARD.