Vraag:
Hoe lees ik een knop via de GPIO?
Michael
2012-08-21 04:30:11 UTC
view on stackexchange narkive permalink

Ik heb mezelf lang geleden beschouwd als een soort van beginnersniveau, maar ik denk dat ik niet zo slim ben als ik dacht, omdat ik er buitengewoon veel moeite mee heb!

Dus ik ben eindelijk klaar met examens en kan spelen met mijn nieuwe speeltje, dus het eerste wat ik deed was een LCD-personendisplay boven UART plaatsen. Ik heb dat geen probleem, dus ik vind het heel moeilijk om erachter te komen waarom ik het zo moeilijk heb met deze knop!

Dus ik heb een knop ingesteld die lijkt op de manier waarop je dat zou doen met een arduino; met een 1k-weerstand die op aarde is aangesloten. Ik heb mijn multimeter gebruikt om ervoor te zorgen dat de knop werkte en de juiste hoeveelheid stroom leverde, wat het ook is. Ik SSH in mijn shell, plug de knop in GPIO pin 7 en ging in python. Dit is wat ik heb geprobeerd:

  GPIO.pinout (GPIO.BOARD) GPIO.setup (7, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) terwijl 1 == 1: inputval = GPIO.input (7) print inputval  

Dit geeft me een eindeloze lus van False ongeacht hoe ik op de knop druk. Ik probeerde het ook met GPIO.PUD_UP en kreeg in plaats daarvan een eindeloze lus van True . Ik heb het ook geprobeerd met GPIO.PUD_OFF en kreeg meer False.

Mis ik hier iets?

Dus je hebt de schakelaar in serie met de 1k-weerstand naar GND? Dat zou moeten werken met `GPIO.PUD_UP`. Welk voltage zie je met `GPIO.PUD_UP` aan en de knop ingedrukt?
Enigszins in de war; waar is de schakelaar op aangesloten?
Hallo Michael en welkom bij [raspberrypi.se]! Ik heb de vrijheid genomen om uw twee rekeningen samen te voegen. Bedankt!
Twee antwoorden:
John La Rooy
2012-08-21 15:00:11 UTC
view on stackexchange narkive permalink

Mijn GPIO heeft geen pinout , ik moest het wijzigen naar setmode

  importtijd van RPi import GPIOGPIO.setmode ( GPIO.BOARD) GPIO.setup (7, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) terwijl True: inputval = GPIO.input (7) print inputval time.sleep (1)  

Aangezien u GPIO.BOARD gebruikt, is pin 7 degene met het label GPIO 4 (GPCLK0) . Als u GPIO 7 (CE1) wilde gebruiken, moet u in plaats daarvan GPIO.setmode (GPIO.BCM) gebruiken

enter image description here

Ik heb de code getest door een weerstand van 1k aan te raken van 3V3 Power naar GPIO 4 (GPCLK0)

Ik ben er bijna zeker van dat je gelijk hebt over waarom het niet werkte. Ik had de indruk dat 'GPIO.BOARD' bedoeld was voor de pinout van het bord zelf, zoals op de foto's te zien is, niet voor het fysieke pennummeringsschema. Als ik thuiskom van mijn werk, zal ik het uitproberen en ik weet zeker dat het zal werken.
Matthew
2013-08-03 20:57:10 UTC
view on stackexchange narkive permalink

Ik gebruik nooit "pull_up_down = GPIO.PUD_DOWN" bij het instellen van de pin. Probeer dit:

  GPIO.setmode (GPIO.BCM) GPIO.setup (PinNum, GPIO.IN) terwijl 1 == 1: if GPIO.input (PinNum) == 1: print " True "else: print" False " 

Zoals gnibbler zei, zorg ervoor dat PinNum voor de BCM GPIO is.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...