PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] No access to /dev/mem



pinsel120866
15.12.2012, 11:09
Hallo,

ich möchte eine LED zum leuchte bringen und habe mir zum ersten Mal ein Python Programm in SPE geschrieben. Wenn ich das Programm ausführen will, kriege ich folgende Fehlermeldung:


File "/home/pi/LED 01.py", line 1, in <module>
import RPi.GPIO as GPIO
RPi.GPIO.SetupException: No access to /dev/mem. Try running as root!

Was tun?

Kampi
15.12.2012, 11:40
Hey,

hast du das Programm als "root" ausgeführt?
Um auf Hardwarekomponenten wie GPIO, I²C usw. zugreifen zu dürfen brauchst du Root-Rechte.

pinsel120866
15.12.2012, 11:49
Hallo Kampi,

Wie führe ich das Programm als root aus? Ich starte SPE von der grafischen Oberläche und klicke dann aud "Run"

Ich gebe in der Console sudo python program.py ein und erhalte:

Traceback (most recent call last):
File "python001.py", line 4, in <module>
GPIO.setup(26, GPIO.OUT)
RPi.GPIO.ModeNotSetException: Please set mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)

Kampi
15.12.2012, 12:08
Ich mache sowas immer mittels Konsole.
Du meldest dich als Root an und wechselst in den Ordner wo dein Pythonfile liegt.
Anschließend tippst du "python Programmname" ein. Dann führt er das Programm aus.

Edit:
Zeig mal dein Programm bitte.

pinsel120866
15.12.2012, 12:39
ch gebe in der Console sudo python program.py ein und erhalte:

Traceback (most recent call last):
File "python001.py", line 4, in <module>
GPIO.setup(26, GPIO.OUT)
RPi.GPIO.ModeNotSetException: Please set mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)

Hier mein kleines Programm:


import RPi.GPIO as GPIO
import time

GPIO.setup(26, GPIO.OUT)

while True:
GPIO.output(26, True)
time.sleep(1)
GPIO.output(26, False)
time.sleep(1)

Kampi
15.12.2012, 13:07
Hey,

also bei mir klappt es.
Hast du auch RPi.GPIO installiert?

$ wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.1.0.tar.gz
$ tar zxf RPi.GPIO-0.1.0.tar.gz
$ cd RPi.GPIO-0.1.0
$ sudo python setup.py install

pinsel120866
15.12.2012, 13:22
ja, hab ich. RPi.GPIO-0.4.1a.tar.gz

Kampi
15.12.2012, 13:34
Hast du es auch installiert (sprich die anderen drei Schritte ausgeführt)? Weil das ist nur das Verzeichnis.
Also bei mir läuft dein Programm problemlos (sowohl direkt in der Konsole als auch als LED.py)

pinsel120866
15.12.2012, 14:54
Jetzt habe ich alle Programme und die Lib nochmals neu installiert und kann den Code trotzdem nicht kompilieren.

Traceback (most recent call last):
File "python001.py", line 4, in <module>
GPIO.setup(26, GPIO.OUT)
RPi.GPIO.ModeNotSetException: Please set mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)

Professor Google kann mir auch nicht weiterhelfen :-(
So'n sch... aber auch.

Kampi
15.12.2012, 15:06
mmh dann fällt mir auch nichts mehr ein....

Edit:
Schau dir mal das hier an:
http://openmicros.org/index.php/articles/94-ciseco-product-documentation/raspberry-pi/217-getting-started-with-raspberry-pi-gpio-and-python

pinsel120866
15.12.2012, 15:38
Hi Kampi,

ich habe es nun mit der LIB deines Links versucht und es geht!!!

Die vorher von mir verwendete RPi.GPIO-0.4.1a.tar.gz ist SCHROTT

Danke für deine Hilfe

Kampi
15.12.2012, 15:39
Ahh ok :)
Dann bin ich ja beruhigt :)

Klebwax
15.12.2012, 20:33
Hallo Pinsel,

wenn ich so etwas lese, kriege ich immer einen dicken Hals:


Die vorher von mir verwendete RPi.GPIO-0.4.1a.tar.gz ist SCHROTT

Woher nimst du eigentlich die Kompetenz, die Arbeit anderer Programmierer so zu beurteilen?

Um dir mal gleiches widerfahren zu lassen:


ich gebe in der Console sudo python program.py ein und erhalte:

Traceback (most recent call last):
File "python001.py", line 4, in <module>
GPIO.setup(26, GPIO.OUT)
RPi.GPIO.ModeNotSetException: Please set mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)

Hier mein kleines Programm:


import RPi.GPIO as GPIO
import time

GPIO.setup(26, GPIO.OUT)

while True:
GPIO.output(26, True)
time.sleep(1)
GPIO.output(26, False)
time.sleep(1)

Du kannst offensichtlich nicht lesen. In der Fehlermeldung steht: Please set mode using GPIO.setmode. Bevor du also rumtrötest, lern lesen und programmieren.

MfG Klebwax

pinsel120866
16.12.2012, 08:29
hallo klebwax,

du hast recht, ich hätte mich nicht so scharf äussern dürfen. natürlich habe ich die meldung gelesen, aber keine möglichkeit gefunden das programm so zu ändern dass es läuft.

tatsache ist, dass das programm mit der LIB nicht gelaufen ist. wenn du dich schon äusserst, wäre es auch angemessen die lösung dieses problems zu präsentieren, um mir, der programmieren lernen will, zu helfen.

Kampi
16.12.2012, 09:07
Hallo ihr beiden,

die genauere Beschreibung der Lib ist hier zu finden:

http://pypi.python.org/pypi/RPi.GPIO

Du hast anscheinend einfach nur ein "GPIO.Setmode" vergessen, was auch den Fehler verursacht (siehe am Anfang des Programmes). Probier das nochmal so aus und dann sollte es denk ich mal auch mit der anderen funktionieren :)

pinsel120866
16.12.2012, 10:25
Hallo,

habe ich gestern schon probiert (ich kann ja lesen :-)) , geht leider nicht.

Fehlermeldung: GPIO.Setmode(GPIO.BOARD)
AttributeError: 'module' object has no attribute 'Setmode'

Egal, mit der anderen Lib funktioniert es ja.

Klebwax
16.12.2012, 11:30
Hallo,

habe ich gestern schon probiert (ich kann ja lesen :-)) , geht leider nicht.

Fehlermeldung: GPIO.Setmode(GPIO.BOARD)
AttributeError: 'module' object has no attribute 'Setmode'

Egal, mit der anderen Lib funktioniert es ja.

Wenn du lesen würdest, wäre dir klar, daß du keine andere Library sondern eine ältere Verion der gleichen Library verwendest. Du könntest dann auch rausbekommen, welche Bugs in der neueren Version beseitigt sind. Und wenn du wirklich lesen könntest, wüsstest du, wo dein Fehler liegt:


Please set mode using GPIO.setmode(GPIO.BOARD) or GPIO.setmode(GPIO.BCM)

MfG Klebwax

pinsel120866
16.12.2012, 12:32
Die vorher von mir verwendete RPi.GPIO-0.4.1a.tar.gz ist SCHROTT

Stimmt nicht!!! Ich nehme alles zurück und behaupte das Gegenteil!

Nun habe ich es fehlerfrei hinbekommen:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)

GPIO.setup(26, GPIO.OUT)

while True:
GPIO.output(26, True)
time.sleep(1)
GPIO.output(26, False)
time.sleep(1)

Danke allen Mitwirkenden.