Raspberry GPIOs

Fragen zu Raspberry, FritzBox, Microcontroller, UART, etc...
besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Mi 6. Feb 2019, 11:51

wiringpi braucht man nicht installieren, ist schon per default drauf. Sollte es nicht auf den neuen Raspbian-Image sein kann man es über den Paket-Manager apt installieren. Dann passt das auch zu deinen System. search suche nach Paket. Die Ausgabe zeigt dann alle die diesen Namen erhalten und dahinter eine Kurzbeschreibung. Mit policy zeigt er dir an ob das schon installiert mit der Versionsnummer oder nicht. Wenn du die Programme aus den Quellen baust und eine neue Version oder auch ältere nimmst kann das zu Problemen führen. Die erste Wahl ist immer die Pakete aus den Repo zu nehmen. Für Umsteiger und Anfänger auf alle Fälle. Hier meine Ausgabe.

Code: Alles auswählen

pi@raspberrypi:~ $ apt-cache search WiringPi
wiringpi - Raspberry Pi GPIO libraries, headers and gpio command
pi@raspberrypi:~ $ apt-cache policy wiringpi
wiringpi:
  Installiert:           2.46
  Installationskandidat: 2.46
  Versionstabelle:
 *** 2.46 500
        500 http://archive.raspberrypi.org/debian stretch/main armhf Packages
        100 /var/lib/dpkg/status
pi@raspberrypi:~ $ 
Falls nicht installiert ist geht das genauso wie bei anderen Programmen mit

Code: Alles auswählen

sudo apt-get install wiringpi
Viele Seiten im Netz sind nicht mehr aktuell. Deshalb dort noch die Anleitung wie man das aus den Quellen baut. Auch der Befehl gpio readall zeigt dir die aktuelle Belegung der GPIO von den Gerät an, an dem du gerade sitzt. Deshalb ist es egal was das Internet sagt.
Auch pigpio ist schon per default drauf, wenn man es möchte. Wenn nicht installiert man es mit apt.

Code: Alles auswählen

pi@raspberrypi:~ $ apt-cache policy pigpio
pigpio:
  Installiert:           1.64-1
  Installationskandidat: 1.64-1
  Versionstabelle:
 *** 1.64-1 500
        500 http://archive.raspberrypi.org/debian stretch/main armhf Packages
        100 /var/lib/dpkg/status
pi@raspberrypi:~ $ 
Ohne dir nahe zu treten du musst bei Linux umdencken. Oder du weisst was du machst wenn du fremde Pakete oder irgend eine Anleitung die nicht mehr aktuell ausführst.
zu fast jeden Programm kannst du dir mit der Option --help eine kurze Hilfe anzeigen lassen. Wie z. B. apt-get --help und auch apt --help
Für mehr Information kann man sich die manpage des jeweiligen Programm anzeigen lassen, z. B.

Code: Alles auswählen

man gpio
Mit der Maus scrollen oder mit der Leertaste seitenweise weiterbättern und mit Taste Q die manpage verlassen. Wenn du dies über die Konsole machst hast du die für die Version des Programm was installiert ist. Wenn du über das Internet danach suchst kann es sein du erhälst ein Ergebnis von einer älteren oder neueren Version. Was nicht zu deiner installierten Version passt.
Da du mit den Raspi auch ins Internet gehst, solltest du dein System auch aktualisieren. Da besteht kein Unterschied zu Windows. Am einfachsten geht es über die Konsole und läuft ohne Probleme wenn das System noch nicht vermurskt ist. Hier eine kurze Anleitung.
Mit den Befehl

Code: Alles auswählen

sudo apt-get update
werden die Listen neu eingelesen. Dort sind die Links mit den Repositories(abgekürzt auch Repo genann). Da liegen die Programme die zu deinen Sytem passen.
Mit den Befehl

Code: Alles auswählen

sudo apt-get dist-upgrade
wird dein System aktualiesiert. Es wird dann geschaut welche Programme installiert sind und wenn neuere verfügbar werden diese automatisch aktualisiert. Zur Sicherheit kannste mit Befehl

Code: Alles auswählen

sudo apt-get -f install
überprüfen, ob alle Abhängigkeiten gelöst sind. Wenn den so ist kannste die Installation-Pakete löschen, mit Befehl

Code: Alles auswählen

sudo apt-get clean
Der einzige Unterschied bei Linux ist, das wenn Sicherheitslücken bestehen und es einen Patch dafür gibt dann kommt der auch sofort rein. Das kann täglich geschehen und sorgar stündlich. Sowie der da kann man mit dist-upgrade ihn installieren.
Zuletzt geändert von besenmuckel am Mi 6. Feb 2019, 12:52, insgesamt 1-mal geändert.

Leopard
Foriker
Beiträge: 22
Registriert: Di 8. Jan 2019, 15:49
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von Leopard » Mi 6. Feb 2019, 12:39

Hallo Besenmuckel,

du hast recht. Ich habe mit

apt-cache policy pigpio bzw. wiringpi gecheckt. Ist bei mir beides vorhanden.

Bin bei dem Problem mit wiringPiISR() ein Stück weitergekommen. Das Projekt startet ohne Fehler. Wenn ich jedoch an den GPIO17 3,3V anlege kommt eine Fehlermeldung:

Gambas-Interpreter-Absturz

Das Programm wurde unvorhergesehen beendet!
Speicherzugriffsfehler (11)

Was habe ich falsch gemacht? Zur Analyse kann ich dir den Code zusenden, wenn du ihn brauchst.


Grüße von Leopard

besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Mi 6. Feb 2019, 12:57

ja kannste. Schick es mir per pm oder auch E-Mail. Habe aber mit wiringPiISR() keine Erfahrung, bin mir deshalb nicht sicher ob ich dir helfen kann. Heute komme ich aber nicht mehr dazu.

Leopard
Foriker
Beiträge: 22
Registriert: Di 8. Jan 2019, 15:49
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von Leopard » Mi 6. Feb 2019, 14:03

hallo,

1.) dumme Frage von mir: was ist pm?

2.) was ist besser, wiringPi oder Pigpio? Was empfiehlst du?

3.) Um den nachfolgenden Code auszführen brauchst du ein Form und zwei Label. Sonst die zwei Zeilen mit Label1 bzw. Label2 auskommentieren:

Library "/usr/local/lib/libwiringPi"

Public Extern wiringPiSetupGpio() As Integer
Public Extern pinMode(pin As Integer, pud As Integer)
Public Extern pullUpDnControl(pin As Integer, mode As Integer)
Public Extern digitalRead(pin As Integer) As Integer
Public Extern digitalWrite(pin As Integer, value As Integer)
Public Extern wiringPiISR(aa As Integer, bb As Integer, cc As Pointer)

Public Eingang22 As Integer '= Zustand an GPIO-Eingang22
Public Zustand27 As Integer '= Zustand an GPIO-Ausgang27
Public a As Integer
Public b As String

Public TestZaehler_ProzedurAufruf As Integer
Public TestZaehler_FunktionAufruf As Integer

Public Sub Form_Open()

TestZaehler_ProzedurAufruf = 0
TestZaehler_FunktionAufruf = 0

wiringPiSetupGpio()

pinMode(17, 0) 'GPIO17 soll ein Eingang sein

TestProzedur1()
'ruft zu Testzwecken die Sub TestProzedur1 auf
'diese ist eine Sub und keine Function

TestFunktion1()
'ruft zu Testzwecken die Function TestFuktion1 auf

wiringPiISR(17, 1, TestFunktion1)


Public Sub TestProzedur1()
'Diese Sub (ungleich Function) wird aufgerufen,wenn am GPIO ein Ereignis aufgetreten ist: steigende, fallende Flanke oder bei beiden
'aktualisiert die Label1

TestZaehler_ProzedurAufruf = TestZaehler_ProzedurAufruf + 1

Label1.Text = "Die Sub TestProzedur1 wurde " & TestZaehler_ProzedurAufruf & " Mal aufgerufen"

End

Public Function TestFunktion1()
' 'Diese Function (ungleich Prozedur oder Sub) wird aufgerufen,wenn am GPIO ein Ereignis aufgetreten ist: steigende, fallende Flanke oder bei beiden

TestZaehler_FunktionAufruf = TestZaehler_FunktionAufruf + 1

Label2.Text = "Die Function Testfunktion1 wurde " & TestZaehler_ProzedurAufruf & " Mal aufgerufen"

End


Viele Grüße von Leopard

Leopard
Foriker
Beiträge: 22
Registriert: Di 8. Jan 2019, 15:49
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von Leopard » Do 7. Feb 2019, 20:12

Hallo Besenmuckel,

vielen Dank für die Hilfe zum Erstellen eies Screenshots - hat prima funktioniert! Ich wollte dir auch einen Screenshots von der Fehlermeldung schicken, die erscheint, wenn ich auf dem Raspi den GPIO17 (Pin11) mit 3,3V (Pin1) verbinde. Aber ein Bild einzufügen geht wohl nur wenn ich es vorher auf eiem öffentlich zugängl. Server hinterlege (wenn ich das unter FAQ richtig verstande habe). Ich hab keine Ahnung wie ich das machen könnte. Werd bei Gelegenheit mal nachforschen. Hab inzwischen mal ein 'sudo apt-get update' und ein '...upgrade' gemacht, aber die Fehlermeldung bleibt, aber nur an dem Pin, den ich mit wiringPiISR() dazu bestimmt hab auf die steigende oder fallende Flanke zu reagieren. Hab noch keine Idee, wie ich da weiterkommen kann, weil ich noch nichts dazu gefunden habe.

besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Fr 8. Feb 2019, 03:35

Hier ein Bild. Vorgehensweise wie schon mal beschrieben.
antwort_gambas.png
antwort_gambas.png (25.34 KiB) 9286 mal betrachtet
Der Code in deiner Antwort sieht wil und chaotisch aus. Auch weiss man nicht wo Anfang und Ende ist. Zum Testen kann man das so machen, mache ich auch nicht anderst. Man braucht bei Gambas nicht beim testen aufpassen ob alles richtig eingerückt ist. Spätestens wenn du aber hier dein Code einstellst musst du ihn auch das Code-Format nehmen auf einer Webseite bringt das nichts. Ich habe auch schon Code in einen doc-Format bekommen. Auch sollstest du vorher deinen Code formatieren. Es gibt unter Gambas da eine Funktion, suchen musst du selber.
Unter Gambas gibt es auch den Print-Befehl. Brauchst evtl. die Ansicht-Konsole. suchen wie musst du selber. In der Gambas-IDE gibt es ein Menü. :roll:
Du versuchst ohne Kenntnisse von Gambas und Linux ein grösseres Projekt zu starten. Arbeite dich erst einmal ein, es lohnt sich auf alle Fälle. Muss nur etwas Geduld und Ausdauer haben. Viele haben schnell wieder das Handtuch geworfen. Du schaffst das aber. Dieses ...upgrade macht nix anderes als dein System zu aktualisieren hatte das auch beschrieben und hat nix mit deinen Programm zu tun. Wenn das...upgrade schon mal ohne Fehlermeldungen durchlief dann ist das doch schon mal gut.
Hier noch mal kurz ein paar Unterschiede zwischen Linux und Windows.
Empfiehlt dir irgeneiner im Netz das Programm xyz, dann holt man sich nicht die neuste Entwickler-Version oder alte links aus den Netz. Sondern schaut mit search ob es für dein System verfügbat ist. Wenn ja installiert man diese wenn noch nicht installiert. Dann passt das auch zu deinen System. Ausser du weisst was du machst. Als Anfänger mit Linux wird sonst dein System unbrauchbar und du kannst es nicht reparieren. Der Unterschied zwischen einer Installations-Datei unter Windows und Linux ist ähnlich nur nicht das selbe. Windows installiert z. B. das Programm nach C->Programme->usw. In diesen Orner liegen dann die ausführende Datei, Icon, Hilfen un evtl. noch zusätzliche Bibliotheken. Unter Linux läuft das anderst. In der Regel kommt die auszuführende Datei nach /usr/bin/. Deshalb kannst du auch in der Konsole nur das Programm eingeben und es startet. Unter Windows musst du in der Konsole den kompletten Pfad zu der ...exe-Datei eingeben. Die Icons liegen dann unter /usr/share/icons/. Die Dokumentation unter /usr/share/doc/. Die Bibliotheken unter /usr/lib/, usw. Wenn du dann versuchst ein neueres Paket zu installieren oder aus den Quellen baust ändern sich unter Umständen auch die Funktionen, Dokumentationen, Bibliotheken usw. Da wir hier im Gambas-Forum sind werde ich hier jetzt auch nichts mehr weiter dazu schreiben. Es gibt dafür entsprechende andere Foren. Hab seit der Schulzeit nicht mehr soviel geschrieben und bin jetzt über 60. :roll:
Eine Empfehlung ob du wiringPi oder Pigpio nehmen musst, gebe ich dir nicht um deine GPIO zu steuern. Ich weiss auch aus deinen Beitrag auf welcher Seite du vermutlich warst. Da wird empfohlen statt gpio lieber pigpio zu nehmen. Auch steht dort das man es installieren muss usw. Also ist die Anleitung schon mindesdenst 2 Jahre oder noch viel älter. Auch steht dort das man den Dienst(Dämon) starten soll. Es fehlen dann aber die Hinweise wie ich den Teufel stopen, anhalten oder in die Wüste schicken kann und auch wieder rückgängig machen kann. . Auch werden die Sachen mit Admin-Rechten gestartet. Ansonsten haben die Seiten aber ihre Berechtigung, es ist sehr gut die Sachen mit der Hardware(Taster, Relais, usw.) beschrieben.
Dein Programm werde ich nicht testen, denn ich habe keine Erfahrung mit wiringPiISR und wahrscheinlich hast du eine ganz andere Version durch deine wilde Installation. Auch hängt mein Raspi wieder an der Wand wo der VDR läuft. Habe keinen Fernseher und während der Bastelei den DVB-C Stick abgezogen. Falls was schief gegangen wäre der Schaden begrenzt. Ich warte immer noch auf den Raspi von meinen Bekannten der im Keller liegt. Wenn ich den bekomme bastele ich weiter. Deshalb wirst du hier auch keine Antwort erhalten. Es gibt eh nur eine Handvoll hier die Raspi und Gambas benutzen. Auch weiss ich nicht ob sie nur zur Laufzeit oder schon beim Start gesetzt sind und wie ich das wieder rückgängig mache. Am besten du suchst dir was wo du keine Root-Rechte brauchst. Denn in den zukünftigen Debian gibt es auch kein gksu mehr. Du kannst aber trotzdem hier deine Sachen posten, sei aber nicht enttäuscht wenn du keine Antwort erhälst. Bleib dran es lohnt sich wenn du die ersten Hürden übersprungen hast. Ja die Anleitung werde ich bei Gelegenheit mal kürzen und überarbeiten.

Leopard
Foriker
Beiträge: 22
Registriert: Di 8. Jan 2019, 15:49
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von Leopard » Fr 8. Feb 2019, 15:18

Ich versuche deine Anleitung zum Darstellen von Code umzusetzen und nehme dazu exakt den Code, den du zuletzt als "wil und chaotisch bezeichnet hast.

Am Ende werde ich versuchen (zum Testen) noch ein Bild anzuhängen. Ich hoffe die Umsetzung gelingt mir.

Code: Alles auswählen

Library "/usr/local/lib/libwiringPi"

Public Extern wiringPiSetupGpio() As Integer
Public Extern pinMode(pin As Integer, pud As Integer)
Public Extern pullUpDnControl(pin As Integer, mode As Integer)
Public Extern digitalRead(pin As Integer) As Integer
Public Extern digitalWrite(pin As Integer, value As Integer)
Public Extern wiringPiISR(aa As Integer, bb As Integer, cc As Pointer)

Public Eingang22 As Integer '= Zustand an GPIO-Eingang22
Public Zustand27 As Integer '= Zustand an GPIO-Ausgang27
Public a As Integer
Public b As String

Public TestZaehler_ProzedurAufruf As Integer
Public TestZaehler_FunktionAufruf As Integer

Dieser erste Teil beinhaltet die aus meiner Sicht nötigen Deklarationen. Es folgt nun eine Sub, an deren Ende ich das "End Sub" vergessen habe (SORRY):

Code: Alles auswählen

Public Sub Form_Open()

TestZaehler_ProzedurAufruf = 0
TestZaehler_FunktionAufruf = 0

wiringPiSetupGpio()

pinMode(17, 0) 'GPIO17 soll ein Eingang sein

TestProzedur1()
'ruft zu Testzwecken die Sub TestProzedur1 auf
'diese ist eine Sub und keine Function

TestFunktion1()
'ruft zu Testzwecken die Function TestFuktion1 auf

wiringPiISR(17, 1, TestFunktion1)

End Sub     'HATTE ICH VERGESSEN
Es folgen nun noch eine (sehr kurze) Prozedur und eine (sehr kurze) Function:

Code: Alles auswählen

Public Sub TestProzedur1()
'Diese Sub (ungleich Function) wird aufgerufen,wenn am GPIO ein Ereignis aufgetreten ist: steigende, fallende Flanke oder bei beiden
'aktualisiert die Label1

TestZaehler_ProzedurAufruf = TestZaehler_ProzedurAufruf + 1

Label1.Text = "Die Sub TestProzedur1 wurde " & TestZaehler_ProzedurAufruf & " Mal aufgerufen"

End

Public Function TestFunktion1()
' 'Diese Function (ungleich Prozedur oder Sub) wird aufgerufen,wenn am GPIO ein Ereignis aufgetreten ist: steigende, fallende Flanke oder bei beiden

TestZaehler_FunktionAufruf = TestZaehler_FunktionAufruf + 1

Label2.Text = "Die Function Testfunktion1 wurde " & TestZaehler_ProzedurAufruf & " Mal aufgerufen"

End
Ich verstehe nicht, was daran wild oder chaotisch sein soll.


Ich versuche es jetzt mal mit dem Einfügen eines Bildes:
Bildschirmfoto vom 2019-02-07 19-13-19.png
Fehlermeldung, die kommt, wenn ich an GPIO17 3,3V anlege.
Bildschirmfoto vom 2019-02-07 19-13-19.png (83.52 KiB) 9273 mal betrachtet

Ich habe den Eindruck, dass du von mir genervt oder über mich verärgert bist. Kann sein, dass ich dazu Anlass gegeben habe, aber ganz gewiss nicht leichtfertig. Wenn ich deine Anweisungen nicht oder nicht richtig oder nicht vollständig befolge, so liegt das auch daran, dass diese - zu mindest für mich - micht immer verständlich und nachvollziehbar sind und ich auch nicht immer weiß, ob es ein Tip, ein Rat oder ein Nebenbemerkung ist. Nimm mal folgendes Beispiel:
Auch sollstest du vorher deinen Code formatieren. Es gibt unter Gambas da eine Funktion, suchen musst du selber. Unter Gambas gibt es auch den Print-Befehl. Brauchst evtl. die Ansicht-Konsole. suchen wie musst du selber. In der Gambas-IDE gibt es ein Menü.
Dieser Hinweis hilft mir nicht weiter sondern wirft nur Fragen auf:

Was meinst du mit formatieren? Wozu dient dieses Formatieren? Wie wird Code formatiert (für mich heißt formatieren u.a. die Syntax einhalten)?
Was für eine Funktion, eine zum Formatieren?
Wozu soll ich hier den Print-Befehl nutzen? Wozu die Ansicht-Konsole? Was meinst du mit Menü vielleicht die Menü-Leiste? Wozu soll ich das Menü nutzen, besonders bei dieser Problemstellung (Felermeldung beim Ansteuern von GPIO17!!)

Deine weiteren Äußerungen unterstreichen meine Befürchtungen bezüglich einer gewissen Verärgerung deinerseits:
Dein Programm werde ich nicht testen, denn ich habe keine Erfahrung mit wiringPiISR und wahrscheinlich hast du eine ganz andere Version durch deine wilde Installation.
Wenn du gleich gesagt hättest, dass du dich mit wiringPiISR nicht auskennst (was ja nicht schlimm ist, man kann ja nicht alles kennen, schon gar nicht wenn man es nicht braucht, weil man es halt anders macht), hätten wir uns einiges an Korrespondenz ersparen können.

Zum Thema meiner "wilden Installation" möchte ich bemerken, dass ich mir sehr wohl bewusst bin, was man mit unsachgemäßen Installationen anrichten kann. Deshalb lass ich da die Finger davon. Das einzige was ich überhaupt auf meinem Raspi installiert habe war Gambas (und auch nur mit deiner freundlichen Unterstützung), dann gnome-screenshot (ebenfalls mit deiner freundlichen Unterstützung) und dann noch wiringpi (weil es im Netz so angesagt war und ich nicht wusste, dass es standardmäßig vorhanden ist). Ich kann da keine "wilde Installation" erkennen.

Mit der Bemerkung
Auch hängt mein Raspi wieder an der Wand wo der VDR läuft. Habe keinen Fernseher und während der Bastelei den DVB-C Stick abgezogen. Falls was schief gegangen wäre der Schaden begrenzt.
und einigen anderen kann ich nichts anfangen.

Lieber besenmuckel!

Versteh mich bitte nicht falsch. Ich bin dir sehr dankbar für deine Hilfe und du hast mir auch schon richtig gut weitergeholfen. Du verweist immer wieder darauf, dass ich selber suchen muss. Da hast du vollkommen recht. Aber wenn ich hier in Forum frage, dann habe ich in der Regel schon sehr intensiv im Netz gesucht und nichts gefunden, oder ich weiß nicht, wie ich bei einer bestimmten Problemstellung Hilfe über Google a.ä. finden soll / kann:

Ich hatte in meinem Code folgende Zeile:

Code: Alles auswählen

wiringPiISR(17, 1, Ereignis2_am_GPIO(a As Integer))


und beim Debuggen wurde mir folgende unsinnige Fehlermeldung angezeigt:

Fehlermeldung: fehlende "," oder ")" in FMain .....
Ich habe im Netz versucht herauszufinden, was diese Fehlermeldung bedeuten soll, denn wörtlich kann man sie nun mal nicht nehmen, denn es fehlt weder ein Komma, noch eine Klammer. Im Netz war natürlich nichts zu finden, hab ich auch nicht anders erwartet. Ich kenne solche nichts sagende oder falsche oder irreführende Fehlermeldungen auch von VB. Der Erfahrende kennt die dann oft schon und weiß, dass ein ganz anderer Fehler gemeint ist (z.B. "unzureichende Anzahl an Parametern").

Da kann dann nur der Erfahrende in der Community oder im Forum helfen. Dein wirklich nicht hilfreicher Kommentar war:
Er gibt dir ja schon Vorschläge.
Eine wichtige Frage für mich ist - und vielleicht habe ich ja gerade das bisher falsch gemacht - WIE UND WO SOLL ICH SUCHEN?

Wenn ich hier im Gambas-Club unter "Suchen" den Suchbegriff "GPIO ansteuern" oder was ähnliches eingebe, dann bin ich ganz schnell auf irgendeiner anderen Site (z.B. https://duckduckgo.com, günstigstenfalls auf https://tutorials-raspberrypi.de) wo ich sehr wohl Hilfe zu meinem Suchbegriff "GPIO ansteuern" bekomme, aber die haben dann nichts mehr mit Gambas zu tun.

Das Gambas-Buch ist ja gar nicht so schlecht, aber da ist nichts über GPIO und ganz wenig über Shell.

Ansonsten kommt man ganz schnell vom Hundertsten ins Tausendste und verzettelt sich unendlich von
https://forum-raspberrypi über
http://www.netzmafia.de/skripten/hardwa ... O_int.html und viele andere bis
www.elektronik-kompendium.de/sites/raspberry-pi usw.

Deshalb nochmals: WIE UND WO SOLL ICH SUCHEN?

Noch was wichtiges zum Schluss:

Unter http://gambaswiki.org/wiki/ide/crash habe ich auch einen interessanten Hinweis zu der eingangs dargestellten Fehlermeldung gefunden.

Da bin ich wohl endgültig in einer Sackgasse? An wen geht geht der "Automatischer Bericht per E-Mail" und was geschieht dann.



Viele Grüße von Leopard

besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Fr 8. Feb 2019, 19:38

Nein bin noch nicht genervt. Nur schreiben hat nie zu meinen Lieblingsfach gehört. Ich habe auch so viel geschrieben, weil ich ziemlich sicher bin das du nicht das Handtuch wirfst. Bin kein Gambas-Experte oder Raspi-Experte. Bevor ich mich hier angemeldet habe, habe ich sehr viel aus den Forum gesaugt. Natürlich bekommt man keine 1 zu 1 Anleitung. Wenn man es aber versteht, kann man es seinen Bedürfnissen anpassen. Einiges ist mir leichter gefallen da ich als Betribssystem Debian verwende. Deshalb kam ich auf den Raspi nach eine Woche klar. Mein Nachteil habe nie Englisch gelernt und meine jetzigen Kenntnisse sind minimal. Morgen fange ich an es zu lernen, weiss nur noch nicht welchen. :lol:
wil und chaotisch
Ok Rechtschreibfehler. Tip, Rat oder Nebenbemerkung, ja von allen was. Du kannst z. B. den kompletten Quell-Text markieren und dann mit Tastenkombination(siehe Bild) den formatieren.
Screenshot_20190208_173730.png
Screenshot_20190208_173730.png (53.67 KiB) 9269 mal betrachtet
Damit werden u. a. unnötige Leerzeilen entfernt und die Sachen passend eingerückt. Unter Menü->Werkzeuge->Kurzbefehle siehste die Tastenkombi. Das schöne an Gambas ist das man beim testen nicht schon aufpassen muss ob richtig eingerückt. Über Menü->Ansicht->Konsole öffnet sich unten ein Konsolen-Fenster. Warum dazu später mehr. Über die Fehlermeldung kann ich dir auch nix sagen. Vermutlich ist in der 1. Zeile schon ein Fehler.
Ansonsten kommt man ganz schnell vom Hundertsten ins Tausendste und verzettelt sich unendlich von
Ja kann deinen Frust gut verstehen.
Auch hängt mein Raspi wieder an der Wand wo der VDR läuft.
Der Raspi ist im Gehäuse und zugeschraubt.
http://www.besenmuckel.de/raspi/Raspberry-VDR.html
Auf meiner Webseite habe ich dazu eine Beschreibung. Wegen der besseren Übersicht habe ich den Code-Text mit schwarzen Hintergrund und weisser Schrift gemacht. Nur dieser Teil ist Code-Text-Format und man kann ihn kopieren und z. B. in der Konsole einfügen. Alles andere ist in HTML-Format. Also wie du siehst gibt es Unterschiede.
Kurze Erklärung zu den Rechten. Öffne eine Konsole und erstelle mit sudo eine leere Text-Datei mit Endung txt. Mit Befehl

Code: Alles auswählen

sudo touch meinrechtetest.txt
Jetzt versuch mal die über den Datei-Manager diese zu bearbeiten oder zu löschen. Dann wirst du sehen das das nicht geht. Deshalb habe ich in meiner Anleitung auch kein fertiges Projekt zum anklicken und ausführen rein gestellt. Das wäre dann vergleichbar wenn ich mit sudo unter /sys/class........ eine erstellt habe und beim Start wird dann automatisch die Mode und der Schaltzustand festgelegt. Dann kann ich als Benutzer nix dran ändern, den diese Datei gehört root. Es hoffe meine Erklärung war nicht so wirr.
So nun Print. Mit Dim wird die Variable festgelegt. Mit Shell "xxxxxxx", in den Anführungszeichen ist der Shell-Befehl drin. Mit dem Befehl gpio -g wird die BCM-Nummer genommen. Im Internet findest du einmal mit -g und einmal ohne. Das sind 2 verschiedene Dinge. Mit read liest er den schalterzustand aus und speichert ihn in der Variable. Mit Print gibt er mir unten auf der Konsole die Variable aus.

Code: Alles auswählen

Public Sub Button1_Click()

  Dim schalterzustand As String
  
  Shell "gpio -g mode 17 out"
  Shell "gpio -g write 17 0"
  Shell "gpio -g read 17" Wait To schalterzustand
  Print schalterzustand
  
End
Dies sind auch die Befehle wie in der Anleitung. Wenn du es vorher testen möchtest öffne eine Kosole und gebe die Befehle ein. Jede Zeile ist ein Befehl

Code: Alles auswählen

gpio -g mode 17 out
Shell "gpio -g write 17 0
gpio -g read 17
Du kannst auch einen anderen GPIO nehmen. Musst nur die Befehle anpassen. Wenn du es nicht verstanden hast wie man shell-Befehle in Gambas ausführt, frag einfach nochmal.
Zuletzt geändert von besenmuckel am Fr 8. Feb 2019, 21:48, insgesamt 2-mal geändert.

Benutzeravatar
tionov
Site Admin
Beiträge: 540
Registriert: So 18. Mai 2014, 23:40
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von tionov » Fr 8. Feb 2019, 21:07

Code formatieren kann man auch in der Gambas3 IDE einstellen. Bei mir macht sie das automatisch, das ist sehr bequem.

Werkzeuge->Einstellungen->Code-Formatierung.
Alles Gute,

tionov

besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Fr 8. Feb 2019, 21:33

Danke - ich sollte wohl auch mal ins Menü schauen.

Leopard
Foriker
Beiträge: 22
Registriert: Di 8. Jan 2019, 15:49
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von Leopard » Mo 11. Feb 2019, 09:42

Hallo,

da bin ich wieder. Ich hab das ausprobiert und es hat funktioniert. Wie geht das aber, wenn durch die Zustandsänderung von Low nach High oder umgekehrt (steigende oder fallende Flanke) ein Ereignis ausgelöst werden soll. Das ganze soll auch bei eiem ruhenden System funktionieren (in Art eines Interrupt). Es soll nicht so realisiert sein, dass ich in einem (zeitgesteuerten) Überwachungscode ständig der Eingangszustand eingelesen wird.

Leopard
Foriker
Beiträge: 22
Registriert: Di 8. Jan 2019, 15:49
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von Leopard » Mo 11. Feb 2019, 22:11

Hallo besenmuckel,

wie schon berichtet habe ich (am 27.01.2019) wiringPi auf meinem Raspi installiert, weil ich nicht wusste, dass wiringPi standardmäßig auf dem System vorhanden ist. Damit ist wiringPi wohl zweimal vorhanden. Ich hab mal den Dateimanager meines Raspi bemüht und mit "Dateiordner suchen" tatsächlich auch zwei entsprechende Ordner gefunden:

Bildschirmfoto vom 2019-02-11 21-48-58.png
Bildschirmfoto vom 2019-02-11 21-48-58.png (69.01 KiB) 9250 mal betrachtet

Ich möchte diese Installation vom 27.01.2019 rückgängig machen, damit ich wieder ein "sauberes" System habe. Kannst du mir sagen, wie ich das machen kann mit dem Deinstallieren? Oder rätst du mir da eher ab?

Grüsse vo Leopard
Zuletzt geändert von Leopard am Di 19. Feb 2019, 14:46, insgesamt 1-mal geändert.

besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Di 12. Feb 2019, 01:44

Kommt darauf an wie du es installiert hast. Wenn du es installierst hast von dort das Verzeichnis nicht löschen. Angnommen du hast es von dort mit sudo make install oder irgendein install-script installiert. auch wenn installiert mit Fehler. Dann ist es im System. In den Verzeichnis sind auch Dateien wie readme oder install die du mit den Text-Editor öffnen kannst. Dort bekommst du mehr Info. Meist ist es dann so es gibt eine versteckte Datei .uninstall. Die kann man dann starten und es entfernt dann sie Sachen mit den Pfaden die bei der install angelegt worden. Erst einmal so lassen. Wenn du noch weist wie du es installiert hast, kannst du es ja nochmal posten. Wenn du ein deb-Paket gebautst hast, was ich nicht glaube wäre es einfacher. Evtl. ist dann eine neu- bzw. reinstall des Paket über apt notwendig. Nicht gleich in Panik verfallen..
Prima das du wieder da bist. So richtig habe ich nicht mehr dran geglaubt.
Solange haben die wenigsten durchgehalten die von Windows kamen. Andere brauchen länger es zu begreifen das mit den Paket-Manager und Repo. Da Raspian auf Debian basiert verwendet es apt und die deb-Pakete. Andere Linuxe haben einen anderen Paket-Manager und ein anderes Paket-Format. Alle machen aber irgendwie das selbe - die Welt ist verrückt. Auch bei Gambas gibt es die Option ein deb-Paket zu erstellen, was man dann sauber installieren kann oder auch wieder entfernen.
Ich hoffe ich hab dich nicht genervt mit meinen Erklärungen. Natürlich kann man mit ein paar Sätzen nicht ein komplettes Betriebssystem erklären. Auch wenn es den Eindruck hatte, sollte es nicht oberlehrerhaft rüberkommen. :roll:
Hier mal ein Bild von meinen Bewegungsmelder die Plastik-Prismen-Haube entfernt.
bw.png
bw.png (317.64 KiB) 9247 mal betrachtet
Ich habe den bekommen weil angeblich defekt. Nach Anleitung im Internet einen Kondensator weggekniffen. Ich glaube das war unnötig. Auch andere machen Fehler. Auf dieser Platine sieht man deutlich die Anschlüsse beschriftet. Habe aber bei meinen Bekannten gesehen das es Bewegungsmelder auch ohne die Beschriftung gibt. Bei manchen lag ein Schaltplan bei, bei anderen nicht mal der. Haupsache billig. Die Trimmer einstellen ist schon etwas fummelig. Auch bei Einstellung der Empfindlichkeit. Das Modul reagiert auch sehr empfindlich wenn z. B. die Sonne voll draufknallt. Bin aber erst beim raumbasteln darauf gekommen. Wie man die anschliesst auch bei den Relais habe ich vergessen, müsste mich da erst wieder einlesen. Deshalb kann ich die Frage was Eingang betrifft dir nicht beantworten. Ich weis nur noch das eine 1 am Eingang lag solange noch der Timer vom Bewegungsmelder lief. Bei den Relais kommt darauf an wie man sie schaltet(Master oder Slave).
Solltest du mal weiter einsteigen mit den Sachen, wäre eine Kiste mit verschiedenen Sachen(Relais, Bewegungsmelder, LED, Widerstände, Steckbrett usw.) vielleicht sehr hilfreich. Da du dich auskennst mit Schaltplänen und so, sollte das ja kein Problem sein. Habe hier mal ein paar Links rausgesucht ohne zu schauen nach besten Preis oder beste Ware.
link1
link2
link3
Hier mal das Beispiel(LED) als Umschalter. Brauchst einen Button und ein Label, Quell-Code hier.

Code: Alles auswählen

' Gambas class file

Public Sub Form_Open()
  
  ' Lege den GPIO 17 = Pin 11 als Ausgang fest.
  Shell "gpio -g mode 17 out"
  
End

Public Sub Form_Close()
  
  ' Beim schliessen - schalte aus.
  Shell "gpio -g write 17 0"
  
End

Public Sub Button1_Click()
  
  Dim zustand As String
  
  ' Ist Zustand = 0 dann schalte ein.
  Shell "gpio -g read 17" Wait To zustand
  If Trim(zustand) = "0" Then
    Shell "gpio -g write 17 1"
    Label1.Background = Color.Yellow
  Else
    ' Ist Zustand = 1 dann schalte aus.
    Shell "gpio -g write 17 0"
    Label1.Background = Color.Default
  Endif
  
End
Wenn du auf der Konsole den selben Befehl nochmal ausführen willst. Brauchst du es nicht neu reinschreiben. Es gibt dort eine History. Geht mit Pfeiltaste nach oben, dann kommt der letzte Befehl.
(zeitgesteuerten) Überwachungscode
Das war gut - klingt wie Spionage-Programm. :lol:
Ist aber wahrscheinlich nicht ganz was du meinst mit den Interupt. Wenn man aus Gambas, Handy oder anderen Rechner startet kann man es machen ohne (zeitgesteuerten) Überwachungscode. Das heist schaue ob und wenn nicht mache das. Wie aber ein Relais, Bewegungsmelder oder anderes das selbstständig ohne Überwachungscode das machen soll weiss ich nicht. Kann dir da nicht weiter helfen. Bei meinen Bekanten haben wir es so gemacht, das die Schleife 2x die Sekunde(hat gerreicht) die Anschlüsse abfragt und entsprechent schaltet.

besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Di 12. Feb 2019, 04:52

Hab mir noch mal dein Suchergebnis von wiringPi angeschaut. Wenn es beim System aktualisieren keine Probleme gibt lass es drauf. Bin mir da nicht sicher ob das wiringPi daselbe ist wie wiringpi oder ob die das selbe machen nur mit anderen lib. Denn er hat die Sachen unter "/usr/local/lib/libwiringPi" abgelegt. Ich werde es nicht installieren. Wenn du mit Gambas ein deb-Paket zur Instalation baust , aber spätestens beim starten geht es nicht weil das entsprechende Verzeichnis nicht existiert. Wenn das wiringPi nicht installiert. Hab mir auch noch mal deine Code angeschaut. Für dich persönlich kannste es aber machen. Du kannst dann aber einen anderen nicht das deb-Paket. Weil die Abhängigkeiten nicht automatisch aufgelöst werden. Entwerder irgendwie in den Abhängigkeiten beim Bau mit einbauen, oder beim Start des Programms, wenn "/usr/local/lib/libwiringPi" nicht existiert gebe Message aus und schliesse. Ich persönlich baue nur Pakete die voll konvertibel sind mit den jeweiligen System. Das heist als Abhängigkeit kommen nur Pakete rein aus den Standard-Repo. Meine Pakete werden dann signiert und kommen in mein Repo. Wenn ein anderer Nutzer dann mein Repo in der Liste mit einträgt. wenn mein Schlüssel noch nicht installiert muss der noch herunter geladen werden und in der apt-key-liste eingetragen werden. Habe ich dann eine neue Version gebaut brauche ich die nur in mein Repo packen und wenn der andere Nutzer mein Programm installiert hat. Wird es dann automatisch beim upgrade auch aktualisiert. Ich weiss nicht wie man es besser erklären kann. Hört sich kompliziert an ist es aber nicht.

besenmuckel
Foriker
Beiträge: 189
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: Raspberry GPIOs

Beitrag von besenmuckel » Do 14. Feb 2019, 00:36

Hallo Leopard,
Ist nicht viel was beschrieben ist darüber, aber vielleicht hilft es dir weiter. Schaue in den Link unter "wiringPi - gpio utility"
https://elinux.org/RPi_GPIO_Code_Sample ... io_utility
Das mit den "You need the wiringPi library from" kannste ignorien, da ja wiringpi auf den Raspbian schon per default drauf ist. Die Befehle gehen ohne Root-Rechte.
Ich hab dort auch keine neuere Version gefunden, als die schon drauf ist.
nur lesen http://wiringpi.com/download-and-install/
https://git.drogon.net/?p=wiringPi;a=summary
Vielleicht einfacher als mit den libraries

Antworten

Wer ist online?

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