Sziaszok.
Egy RPI B-re próbálok felrakni egy buttont, tekintettel arra, hogy az adafruit tft-re szereltek közül egyiket sem sikerült egy év alatt beüzemelni.
a gpio17-re és az egyik GND-re kötöttem rá a gombot, majd lefuttattam ezt:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
input_state = GPIO.input(17)
if input_state == False:
print('Button Pressed')
time.sleep(0.2)
sajnálatos módon
sudo python gomb.py
indításával sem megy semmi, pedig kéne egy leírás szerint. (Raspberry Pi Cookbook)
Szerintetek mi lehet a baj?
- 3804 megtekintés
Hozzászólások
1. Ellenállásokat kötöttél-e be? (szükséges)
2. Kérlek a gombkezekő kódot pastebin-re felrakni (azt, am futtatsz, ne innen másold ki), mert az indentálás hiánya miatt elveszik a lényeg.
- A hozzászóláshoz be kell jelentkezni
1. Ellenállásokat kötöttél-e be? (szükséges)
+1, hatarozottan. az is lehet hogy utana rogton mukodni fog ;]
szerk: lehet hogy megsem kell. ha hardveresen van kapcsolhato es beepitett felhuzo-lehuzo, akkor az is hasznalhato. ha jol latom a kodban, az a PUD_UP az pont felhuzo lenne, ami jo is lehet ide, ha a gnd-vel kotjuk ossze.
- A hozzászóláshoz be kell jelentkezni
A leirasban nem szerepelt ellenallas.
http://cdn.oreillystatic.com/oreilly/booksamplers/9781449365226_sampler…
266.oldal.
Persze lemegyek hidba, ha felreertettem, de szerintem egyertelmu.
"
You will need to run the program as superuser:
pi@raspberrypi ~ $ sudo python switch.py
Button Pressed
Button Pressed
Button Pressed
Button Pressed
"
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Jól van bekötve az a gomb?
Tényleg kapcsol, ha nyomod, és bont, ha elengeded?
- A hozzászóláshoz be kell jelentkezni
igen, muszerrel ellenoriztem
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Hogyan? Méred a GPIO lábon a feszültséget, és Vcc/0V között változik a gomb nyomkodásakor?
- A hozzászóláshoz be kell jelentkezni
Nem, csupan azt, hogy amikor megnyomom a gombot, van-e a gpio17 es a gnd kozott szakadas vagy sem. Tehat ha benyomom a gombot, van kontakt, ha elengedem, nincs. Igy kell lennie.
A gond tehat szoftveres lehet
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Nem nézted el a lábat, tényleg a 17-esen vagy?
- A hozzászóláshoz be kell jelentkezni
Tenyleg azon vagyok, nem mertem elnezni.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
A kérdésem igazából felvetés volt, hogy "így kéne mérni"...
- A hozzászóláshoz be kell jelentkezni
Rosszul mérted, amit egyébként jeleztek is mások, de látom, nem nagyon hat meg.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Az általad linkelt sample nem tartalmazza a 266. oldalt.
- A hozzászóláshoz be kell jelentkezni
A letoltott pdf megjelenitett oldalan a bal also sarkaban levo oldalszam a 266.
Hmm. Erdekes. A pdf fajl viszont 282. oldalon mutatja a 266. oldalt.
Szoval fizikailag 282. oldal a pdf fajlban...
Mashol is megvan ugyanaz:
http://razzpisampler.oreilly.com/ch07.html
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Biztos van pullup ezen a pin-en?
http://elinux.org/RPi_Low-level_peripherals
P1 Header Pinout, bottom row: gpio0-3-ig ír belső pullup-ot. Ezeken is azért mert I2C miatt kell.
- A hozzászóláshoz be kell jelentkezni
Nem azt írja.
- A hozzászóláshoz be kell jelentkezni
Internal Pull-Ups & Pull-Downs
The GPIO ports include the ability to enable and disable internal pull-up or pull-down resistors (see below for code examples/support of this).
Pull-up is Min. 50K Ohm, Max 65 KOhm.
Pull-down is Min. 50K Ohm, Max 60 KOhm.
- A hozzászóláshoz be kell jelentkezni
Az I2C-hez ennél kisebb kell, azért van a NYÁK-on.
- A hozzászóláshoz be kell jelentkezni
Igaz, ugyanott a "Internal Pull-Ups & Pull-Downs" szekció.
- A hozzászóláshoz be kell jelentkezni
FYI: piface és a hozzáadott library működött nekem out of the box.
Mivel ez nagyrészt az alaplapi busz kivezetése külső csatlakozókra, érdemes megnézni. A nyákterv is letölthető emlékeim szerint.
(vagy az a gertboard?)
- A hozzászóláshoz be kell jelentkezni
Nekem meg a wiringpi2-python. Használtam is így gombokat régebben. Lényegében most is, csak a pikeyd-en keresztül.
- A hozzászóláshoz be kell jelentkezni
gpio18-on a GPS antenna PPS-e van.
Ha a python programot nem a gpio17-en veszem, akkor folyamatos keypressedet nyom ki terminalban, azaz a program fut.
gpio 17-en meg ezek szerint nem...?
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Valtozas.
Talaltam egy oldalt:
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_a…
atirtam kicsit az eredeti kodot, meg mindig a gpio 17-en van a gomb.
Ime a modositas:
import RPi.GPIO as GPIO
import time
import os
buttonPin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(buttonPin,GPIO.IN)
while True:
if (GPIO.input(buttonPin)):
print("Button Pressed")
time sleep(0.2)
-------
Szerintetek jol probalkoztam?
Ezzel a sorral nem vagyok tisztaban:
GPIO.setup(buttonPin,GPIO.IN)
Nem tudom miert megy, de fut.
Benyomom a gombot, elengedem, ketszer irja ki a keypressedet, ami nem baj, time sleep(1) atirassal mar szebb.
--------
azt hiszem ez fogja kikapcsolni az adafruit screent, ezzel standby-szeru aramfogyasztasa lesz a ketyeremnek.
A print sor utan kiadom a
os.system(sh kijelzo.sh)
parancsot, ott a kulso script kikapcsolja a kijelzot.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Szerintem ez nem lesz jó, ha a gomb földeli a gpio-t, akkor a pullup mindenképp kelleni fog, és a False lesz a lenyomott állapot. Ez meg pont fordítva: pulldown ellenállással és vcc-re kötött gombbal menne. Ha külső pullup/pulldown nélkül is ment, az csak szerencse, ez így totálisan kiszámíthatatlan lesz.
Nem lehet, hogy csak annyi a baj, hogy a GPIO.input() nem boolean-t ad vissza?
- A hozzászóláshoz be kell jelentkezni
Nem tudom mit ad vissza (homalyban mozgok), csak azt, hogy egyszer echozza a printtel kiirando stringet. Nincs lenyomott/felengedett allapotrol visszajelzes.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
print(GPIO.input(buttonPin))
Ha True/False akkor booleant ad vissza.
- A hozzászóláshoz be kell jelentkezni
Ezt a sort adta vissza:
1
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Kis utánajárás alapján a python booleanja az integerből származik, szóval mennie kellene autocasttal, de talán megér egy próbát a fenti kódban "if input_state == 0:"-át használni.
Őőő, most gondolkozok. Ezt megnyomott vagy nem megnyomott gombbal adja vissza?
- A hozzászóláshoz be kell jelentkezni
most mar csak azt nem ertem, hogy a python script az /etc/rc.local fajlba beirva miert nem fut.
Igy irtam be teljes eleresi utvonallal:
python /usr/local/bin/gomb.py
...es nem fut. Vagy fut, de hasztalan.
Terminalbol inditva mar megy, de igy meg nincs ertelme.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Sanszos, hogy már hardware-esen zöldség, amit csinálsz. Ha lebeg a bemenet a gomb elengedett állapotában, úgy ott bármi lehet. Véletlen működés, nemműködés, gombnyomástól független trigger. De nem szólok bele két oknál fogva: nem ismerem az R-Pi-t, nem tudom, van-e eleve felhúzó ellenállás ott, vagy esetleg olyan, amit programból be lehet kapcsolni. Ha ez utóbbi, akkor ezt kell tenned. Viszont ez mérhető. A másik, hogy egy nyamvadt hardware fejlesztő vagyok, hogy jövök én ahhoz, hogy beleszóljak a komoly programozók életébe. :P
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Rpin csak hobbi dolgokat csináltam, de eddig minden gpio-n, amin kellett működött az eredetileg írt kód elve, szerintem minden gpio-n van a prociban kapcsolható pullup (és azt hiszem pulldown is), olyan 50k körüli ellenállással.
Hogy amit lejjebb írt hogy működhet megbízhatóan azt nem értem, de erre már leírtam a kételyeimet, én nem kötözködök tovább :)
- A hozzászóláshoz be kell jelentkezni
szerintem minden gpio-n van a prociban kapcsolható pullup
Csak én érzem, hogy ennek nem hitbéli kérdésnek kellene lennie, hanem dokumentáción és mérésen alapuló meggyőződésnek?
Vagy ez is úgy van, hogy ha nagyon hiszünk benne, akkor igazzá válik?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
nyilván mikor csináltam utánanéztem, de most egy fórumhozzászólás kedvéért nem fogok doksit keresni/olvasgatni.
- A hozzászóláshoz be kell jelentkezni
Igaz. A kérdés felvetőjének hozzáállása fura inkább számomra.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mondjuk lehet én is csak méréssel ellenőriztem, hogy tényleg felhúzza-e. A raspihoz kicsit nehéz hiteles és tömör dokumentációt találni, nagyon laikusoknak készülnek, sokkal gyakrabban látni breadboard rajzot mint kapcsolásit.
Viszont az SDK-k elég jók, gyorsan ki lehet próbálni az ilyesmit.
De pont ezért én is nehezen értem meg ezt az egyik példa copy-paste-elve nem jó, akkor nézzük meg rögtön a másikat hozzáállást.
- A hozzászóláshoz be kell jelentkezni
Ezt nem ertem.
Hozzaallast ugy ertelmezed, hogy ha valaki olyannal foglalkozik amihez sosem ertett, reszben megis megold valamit, az "rossz hozzaallas"?
Valaszok kozt bevallom volt olyan, amihez vegkepp nem ertek, megsem valaszolok ugy, hogy a tuloldalt hatrahokoljenek.
Sebaj, nem varom hogy vegletekig lealacsonyodva a szintemre barki elmondjon barmit, azonban ha ide valamit leirok hogy "mukodik vegre, de nem tudom miert", az valosagot takar. De mindegy...
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
ha ide valamit leirok hogy "mukodik vegre, de nem tudom miert", az valosagot takar.
Engem ez zavar. Annyi ilyen kódot láttam már beágy környezetben, ami az ilyen, "mindegy, működik" hozzáállás miatt áttekinthetetlen és optimalizálhatatlan lett, és egyszerűbb volt újraírni az egészet... Pedig nem vagyok rég a pályán. Nem űrtechnika ez, ha semmiképp nem akarsz doksit olvasni, kikísérletezni se nehéz, hogy mi az a különbség, ami miatt az egyik nem ment, a másik viszont jó.
Próbálok konstruktív lenni, ha a lelkedbe gázoltam ezzel, bocsánat.
- A hozzászóláshoz be kell jelentkezni
Na igen, ha valaki nem érti, mitől működik a szerkezet, az bizony baj, mert lehet, hogy csak a működés látszatát kelti, azaz most éppen, véletlenül működött, de amúgy nem kéne. Mondok példát.
Legyen ez egy kétirányú port felhúzás nélkül. Emberünk azt tapasztalja, ha a kimenetet nagy impedanciás állapotba kapcsolja, akkor nem működik, de ha kifelé hajt, oda statikusan magas szintet küld, hogy, s hogy nem, működik a berendezés. Tehát a programot így hagyja, megoldva, hurrá!
Igen, csak ugye az a baj, hogy a kimeneti meghajtó a felhúzás, tehát a nyomógomb megnyomásakor az rövidzárral van terhelve, aminek következtében a kimeneti meghajtó tönkremehet, ráadásul a nyomógomb megnyomásakor néhány 10 mA-rel a fogyasztás is megnő.
Tehát abból, hogy valami látszólag működik, egy pillanatra sem következik, hogy az valóban működik. A fenti példámban természetesen egy felhúzó ellenállás és a kimenet nagy impedanciás állapotba kapcsolása a helyes megoldás.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Csak a moka kedveert:
(locsemege:)
"Na igen, ha valaki nem érti, mitől működik a szerkezet, az bizony baj, mert lehet, hogy csak a működés látszatát kelti, azaz most éppen, véletlenül működött, de amúgy nem kéne."
bzs alairasa:
"
---
--- A gond akkor van, ha látszólag minden működik. ---
---
"
Pl.: http://hup.hu/node/138290#comment-1830422
bzs, szerintem a kollegak erre utaltak, csak ugy tunik, Te ezt nem akarod elfogadni...
/sza2
- A hozzászóláshoz be kell jelentkezni
nem tudom honnan vetted hogy nem akarok doksit olvasni, hiszen fentebb pont egy doksit ideztem egy pdf-bol meg annak online verziojabol., Kesobb egy masik oldalon kozelebb kerultem a megoldasomhoz.
Ezenkivul mar egy ideje csak errol olvasok, csak tudod nem vagyok mernok, mar nem is lehetek az.
- A hozzászóláshoz be kell jelentkezni
Ez szerintem részletkérdés. Lényeg, hogy ha nem érted, hogy egy kód miért működik/miért nem működik, akkor az elég valószínű, hogy rossz minőségű kód lesz belőle.
A fenti kódváltásodon azért hűltem el, mert nagyon úgy fest, hogy nem egyforma hw-hez készültek, ezt írtam le fenn részletesebben.
- A hozzászóláshoz be kell jelentkezni
Nekem az volt a problémám, hogy mindenképp software-es megoldást kerestél, miközben nem nagyon törődtél azokkal, akik megemlítették a hardware-es feltételeket. Inkább megmagyaráztad azzal, mit olvastál egy leírásban. Aztán felvetődött, rendben van-e a nyomógomb, kiderült, mérted, meg az is, hogy rosszul. Ezt én jeleztem, de nem igazán érintett meg.
Amúgy azért mértél rosszul, mert abból kiderül ugyan, hogy maga a kapcsoló jó-e, épp csak az nem, hogy mi van akkor, ha szakadással zárod le azt a bemenetet. Vajon lebeg, vagy nem? Feszültséget kellett volna mérni, bár az sem feltétlenül lesz jó. Mondjuk jó akkor, ha a műszered belső ellenállása 10 MΩ, de nem lesz jó a mérés, ha ez végtelen.
Megoldás lenne még az, hogy a kapcsoló helyére árammérőt teszel, s megnézed, mekkora áram folyik rajta. Ha néhány 10, néhány 100 μA, akkor jó, ha nem, akkor hiába működik látszólag, az valószínűleg véletlen volt.
Most nem olvasom vissza, de mintha hivatkoztál volna olyasmire, hogy több trigger esemény volt egy gombnyomásra. Ez természetes, hiszen a kapcsoló pereg, a kontaktusok pattognak egymáson az érintkezést követően. Úgy szokás megoldani, hogy IT-ben fut pl. 50 - 100 Hz mintavételezéssel a billentyűzet olvasása. Ha zárt ciklusban gyakran mintavételezel, bizony hibás eredményre jutsz.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Jajj már, mit bonyolítod itt szegénynek, miért lenne végtelen ellenállású voltmétere?
Az esetek 99%-ában jó mérés, ha a gpio-n méred a feszültséget GND-hez képest, futó program mellett. Ha a gomb nincs megnyomva, vcc-t kell mérj, ha megnyomod, 0V-ot. (vagy fordítva, ha a gomb vcc-vel van összekötve és a pulldown resistor van bekapcsolva)
- A hozzászóláshoz be kell jelentkezni
Magam is ezt írtam. :) Csak azt a 99 %-ot másképp fogalmaztam meg. ;)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A tobb trigger esemenyt azzal oldottam meg, hogy a time.sleep-et 1/re allitottam. De irtam is...
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Ha jól látom, nem a pergés a baj, hanem az, hogy lenyomott állapot esetén írogatod, hogy lenyomták. Most is, csak ritkábban. Tárolnod kellene a korábbi állapotot, s ha ahhoz képest a változás olyan irányú, hogy a gombot lenyomták, akkor pressed. Szóval élt, változást nézz, ne szintet, tehát ne statikus állapotot.
Szóval az időzítéssel nem oldottál meg semmit, csak nem veszed észre a hibát, mert mire előjönne, elengeded a gombot.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ezt nem ertem.
Hozzaallast ugy ertelmezed, hogy ha valaki olyannal foglalkozik amihez sosem ertett, reszben megis megold valamit, az "rossz hozzaallas"?
Valaszok kozt bevallom volt olyan, amihez vegkepp nem ertek, megsem valaszolok ugy, hogy a tuloldalt hatrahokoljenek.
Sebaj, nem varom hogy vegletekig lealacsonyodva a szintemre barki elmondjon barmit, azonban ha ide valamit leirok hogy "mukodik vegre, de nem tudom miert", az valosagot takar. De mindegy...
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Én az P5-ös Headert használom erre...
Ez alapján csináltam:
http://spaceblogs.org/2013/06/03/shut-down-your-raspberry-pi-on-button-…
Oda tettem leéllítás gombot és a ventillátort is ide kötöttem be!
http://elinux.org/RPi_Low-level_peripherals#P5_header
Oykawa
- A hozzászóláshoz be kell jelentkezni
Koszi, ez nagyon hasznos, ki fogom hasznalni ezt is.
--------
ki is probaltam, 31-esen megy a shutdownscript is.
Most mar 2 gombom van :)
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Helló.
Próbáld ki a WiringPI-t. Én ezzel figyelem a gpio-ra kötött gomb állapotát (script-ből) és tökéletesen teszi a dolgát. Lehet, hogy nálad vmi python gond van ;).
<= Powered By Ubuntu & Gentoo Linux =>
'Software is like sex: It's better when it's free!'
By Linus Torvalds
- A hozzászóláshoz be kell jelentkezni
Mar gondolkodtam rajta, nezegettem korabban is.
Python gondom mar nincs, mint ahogy fentebb irtam, legfeljebb annyi, hogy a nyolc soros prg egyetlen sorat sem ertem, hogyan is fut, de sebaj, kiatkoztak mar emiatt.
Odovel majd rajovok mindenre, a gomb pl. csak fel ev volt.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Lock.
- A hozzászóláshoz be kell jelentkezni
rm -f /var/lock/*
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
rm: cannot remove `/var/lock/*': Permission denied
:-)
/sza2
- A hozzászóláshoz be kell jelentkezni
8=))))
- A hozzászóláshoz be kell jelentkezni