Krótka odpowiedź
Nie, ty (prawie) nie. W rzeczywistości jest na odwrót - musisz skonfigurować je tak, aby nie były GPIO, ale aby spełniały swoje specjalne zadanie. Jedynym wyjątkiem są piny UART. Także i szpilki I²C są w jakiś sposób wyjątkowe.
Piny UART
Piny UART są używane przez jądro konsoli. Będziesz musiał skonfigurować system, aby ich nie używał, jeśli chcesz, aby były dostępne do użytku:
Teraz szpilki nie powinny być używane przez system i możesz ich używać
Piny I²C
Piny I²C mają zainstalowane rezystory podciągające 1,8k. Nie można ich wyłączyć. Ogranicza to użycie pinów w niektórych sytuacjach (ale może być przydatne w innych).
Dodatkowe rozwiązania
Jeśli brakuje pinów GPIO, czasem możesz łatwo zwiększyć jego liczbę, używając dodatkowego (ale prostego) sprzętu. Na przykład, możesz użyć shift registers
lub I²C I/O expanders
(zwanego także ekspanderem magistrali I²C), które można łatwo kupić i użyć. Przykład jego użycia można znaleźć tutaj .
PFC8574
(lub podobne z tej rodziny) są tak popularne, że istnieje gotowy do użycia moduł jądra, który obsługuje całą komunikację za Ciebie ( nie jest włączony w oficjalnym jądrze RaspberryPi, musisz skompilować własne jądro, aby z niego korzystać ). Moduł jest wywoływany gpio_pcf857x
, pod warunkiem, że załadowałeś go modprobe
(wraz ze sterownikami I²C) i że masz układ podłączony do I²C
magistrali, możesz go aktywować w następujący sposób:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
gdzie pcf8574
jest twoja rzeczywista nazwa układu (ten moduł może obsłużyć kilka różnych układów takich jak pca967x
i max732x
) i 0x27
jego adres jest włączony I²C
(możesz skonfigurować adres układu podczas jego okablowania).
Spowoduje to utworzenie wpisów w /sys/class/gpio/
katalogu, które umożliwią korzystanie z nich w taki sam sposób, jak innych portów GPIO w RaspberryPi, pod warunkiem, że korzystasz z sys
interfejsu (na przykład wiringPiSetupSys()
w wiringPi). Niestety RPi.GPIO
moduł Pythona nie obsługuje tego trybu, więc nie będzie mógł używać tych pinów z tą biblioteką. Piny będą miały pewne wysokie liczby, takie jak 248-255 lub podobne.
Uwaga: PCF8574
jest sinking current
- może dać odchylenie napędu (akceptacja w stanie niskim) aż do 20 mA, ale może uzyskać tylko 0,1 mA w stanie wysokim. Oznacza to, że zwykle będziesz używać go w odwrotnej logice, tj +3.3V -> LED -> RESISTOR -> PCF8574_PIN
.