Zdravím.
Tak ovládat GPIO už umím a používám na to WiringPi2.
http://raspi.tv/2013/how-to-us…..n-raspbian
Ovládat piny v čipu MCP23017 už také zvládám a používám také knihovnu WiringPi2.
http://raspi.tv/2013/using-the…..rts-part-3
Jak však ovládat ty pinu v čipu MCP23017 přes web rozhraní?
Poradí někdo?
Tady je návod jak použit knihovnu WiringPi-PHP pro GPIO
http://direct.raspberrypi.org/…..38;t=51265
Ma někdo nějake zkušeností s tou knihovnou WiringPi2?
Zdravím.
Dosud jsem na ovládaní tohoto čipu používal knihovnu WiringPi2.
Jak však na to bez ní? (nějak mi to nemyslí)
Nastaví celého portu GPA pro výstup
sudo i2cset -y 0 0x20 0x00 0x00
A zapínám GPA
sudo i2cset -y 0 0x20 0x12 0x01
sudo i2cset -y 0 0x20 0x12 0x02
sudo i2cset -y 0 0x20 0x12 0x04
Toto je jasné
01 00000001 zapne GPA0
02 00000010 zapne GPA1
04 00000100 zapne GPA2
Jak však zapnout třeba GPA1, tak aby ostatní piny zůstali ve stavu jak jsou?
sudo i2cset -y 0 0x20 0x12 0x01 zapnu GPA0
Takto zapnu GPA2 sudo i2cset -y 0 0x20 0x12 0x04.
Ale GPA0 se tím pádem vypne, to je jasné 00000100.
Jak na to?
A další věc, co jsem ještě nezkoušel, ale když už tu píšu tak se opitam.
Da se zpětně přečíst stav těchto pinu, když jsou nastavené na vystup?
stavpinu1=`sudo i2cset -y 0 0x20 0x12 0x01`
V příkazu i2cset je třeba použít parametr „maska“.
http://www.root.cz/man/8/i2cset/
Bity, které jsou v masce nulové se ignorují. Pracuje se jen s bity, které jsou v masce jedničkové.
Příklady (zkoušel jsem to RasPi rev2, proto je tam ta 1 jako označení I2C kanálu. V původním dotazu jsi to měl pro starší verzi RasPi.):
sudo i2cset -y 1 0x20 0x12 0x01 // klasika – rozsviti ledku na nultem bitu (GPA0), ostatni zhasne
sudo i2cset -y -m 0x02 1 0x20 0x12 0xFF // rozsviti ledku na prvnim bitu (GPA1) – ostatni nechava v tom stavu, v jakem jsou
sudo i2cset -y -m 0x04 1 0x20 0x12 0xFF // rozsviti pouze druhy bit (GPA2) – ostatni beze zmeny
sudo i2cset -y -m 0x01 1 0x20 0x12 0x00 // zhasne ledku na nultem bitu (GPA0) – vsechno ostatni beze zmeny
sudo i2cset -y -m 0xF0 1 0x20 0x12 0xFF // rozsviti 4 nejvyssi bity (GPA7,6,5,4) – zbyle 4 bity (GPA0,1,2,3) beze zmeny
sudo i2cset -y -m 0x0F 1 0x20 0x12 0x0A // nejvyssi 4 bity beze zmeny, nejnizsi 4 bity nastavi na 1010
Do proměnné se dá načíst stav libovolného registru takto:
stavregistru=`sudo i2cget -y 1 0x20 0x12`
Konkrétně tenhle příklad zjistí aktuální stav GPA (registr 0x12), ale stejně je možné zjišťovat třeba na kterých portech jsou připojené Pull-Upy, nebo jaký je směr vývodů…
Vypsání proměnné je pak:
echo $stavregistru
admin
1 Guest(s)