raspberry pi 3b data aflezen van een pin

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Torac
  • Registratie: Maart 2017
  • Laatst online: 13-09 10:52
Mijn vraag
Ik heb een 8 kanaals relay aangesloten op de raspberry pi en bedien deze via de app: MyPi.
Ik wil dat als een pin aanstaat/op high er een commando uitgevoerd wordt.

Relevante software en hardware die ik gebruik
Raspberry pi 3b
8 kanaals relay

Wat ik al gevonden of geprobeerd heb
Google doorgezocht maar dan moet je eigenlijk 16 pinnen aansluiten.
1 voor de in en 1 voor de out-put. Dit is zeker een oplossing maar kost wel weer 8 gpio pinnen wat ik best zonde vind voor toekomstige uitbreidingen oid.

Alle reacties


Acties:
  • 0 Henk 'm!

  • memphis
  • Registratie: Oktober 2000
  • Laatst online: 14:48

memphis

48k was toen meer dan genoeg.

Kan je die pindata niet softwarematig uitlezen ipv hardwarematig?

Maar je kunt ook een decimal-> BCD encoder gebruiken
http://www.ti.com/lit/ds/symlink/sn74ls148.pdf

Er zijn mensen die mij een GOD vinden


Acties:
  • 0 Henk 'm!

  • Torac
  • Registratie: Maart 2017
  • Laatst online: 13-09 10:52
memphis schreef op maandag 5 maart 2018 @ 21:28:
Kan je die pindata niet softwarematig uitlezen ipv hardwarematig?

Maar je kunt ook een decimal-> BCD encoder gebruiken
http://www.ti.com/lit/ds/symlink/sn74ls148.pdf
Misschien had ik mijn vraag anders moeten formuleren.
Is er een mogelijkheid dit software matig te doen? _/-\o_

Acties:
  • 0 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
Waarom maak je niet gebruik van de SPI of I2C bus in combinatie met IO expanders? Met een printje als dit kom je al een heel eind. Meer I/O nodig? Tweede printje er aan en klaar.

Acties:
  • 0 Henk 'm!

  • Torac
  • Registratie: Maart 2017
  • Laatst online: 13-09 10:52
Ik heb nu dit en dit werkt half:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.warnings(False)
count = 0

while count <10:
if count < 10:
with open("/sys/class/gpio/gpio24/value") as pin:
status = pin.read(1)
time.sleep(1)
print(status)

En nu wil ik dat hij iets doet waarnee de variable (status) op 1 gaat.
Maar als ik dit doe door:

if status == 1:
print("test")

Hoe kan ik dit het beste doen?

[ Voor 3% gewijzigd door Torac op 07-03-2018 18:01 ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Zet je code even in [code]-tags, want nu is niet te zien waar je tabs staan ;)
Overigens mist er volgens mij voor je laatste vraag (Hoe kan ik dit het beste doen?) nog een stukje tekst :)

[ Voor 41% gewijzigd door Room42 op 07-03-2018 18:07 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Torac
  • Registratie: Maart 2017
  • Laatst online: 13-09 10:52
Room42 schreef op woensdag 7 maart 2018 @ 18:06:
Zet je code even in [code]-tags, want nu is niet te zien waar je tabs staan ;)
Overigens mist er volgens mij voor je laatste vraag (Hoe kan ik dit het beste doen?) nog een stukje tekst :)
Hoe doe ik dat in tabs?
Ik heb net gewoon 2 min lang op spatie gedrukt om alles goed te zitten. 8)7

Wat voor stukje tekst bedoel je precies? :X

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Tabs/spaties maken niet uit, als het maar uniform is. In [code=python]-tags ziet het er zo uit:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.warnings(False)
count = 0

while count <10:
    if count < 10:
        with open("/sys/class/gpio/gpio24/value") as pin:
        status = pin.read(1)
   time.sleep(1)
   print(status)
Torac schreef op woensdag 7 maart 2018 @ 18:01:
[...]
Maar als ik dit doe door:

if status == 1:
print("test")

Hoe kan ik dit het beste doen?
Hier begin je te vertellen dat er iets gebeurt als je die if...print doet, maar je maakt je verhaal niet af. Dus waar loop je tegenaan? En waarom initieer je wel de RPi.GPIO maar gebruik je die niet?

Overigens;
- zal je loop eindeloos zijn, omdat je count niet verhoogt.
- heeft die if count < 10 ook geen zin omdat die altijd True zal zijn.

[ Voor 8% gewijzigd door Room42 op 07-03-2018 18:20 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Torac
  • Registratie: Maart 2017
  • Laatst online: 13-09 10:52
Room42 schreef op woensdag 7 maart 2018 @ 18:17:
Tabs/spaties maken niet uit, als het maar uniform is. In [code=python]-tags ziet het er zo uit:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.warnings(False)
count = 0

while count <10:
    if count < 10:
        with open("/sys/class/gpio/gpio24/value") as pin:
        status = pin.read(1)
   time.sleep(1)
   print(status)



[...]
@Room42
Hier begin je te vertellen dat er iets gebeurt als je die if...print doet, maar je maakt je verhaal niet af. Dus waar loop je tegenaan? En waarom initieer je wel de RPi.GPIO maar gebruik je die niet?

Overigens;
- zal je loop eindeloos zijn, omdat je count niet verhoogt.
- heeft die if count < 10 ook geen zin omdat die altijd True zal zijn.
Bedankt dan zal ik dat voortaan zo doen. :)
Wat ik wil is dat als een variabele die gelezen wordt in een document continue gelezen en ververst wordt en dat als deze verander: van 1 naar 0 of van 0 naar 1 er iets gebeurt ik gebruik voor het gemak even een print("test") maar dit kan ook een andere functie zijn.

Ik heb eigenlijk geen idee waarom ik dat importeerde maar heb het er al uit gehaald. Dacht dat het misschien nodig zou zijn om het bestand te lezen.

Weet ik dat is ook de bedoeling. Wat ik aan het begin al zij is dat het continue moet worden gelezen en dan bij verandering een functie starten. Ik ben dus nog niet erg thuis in de python wereld en dit werkte naar behoren maar als het simpeler/effectiever kan ik sta open voor suggesties. :9

Wat mij dus niet lukt is het lezen van de status in een if statement als dit zou lukken denk ik dat ik eruit kom.

Edit:
Wat ik heb geprobeerd en niet werkt is:
if status == 1:
if status is True:
if status is 1:
if status == True:

[ Voor 6% gewijzigd door Torac op 07-03-2018 19:55 ]

Pagina: 1