Zwiększ liczbę pinów cyfrowych
Istnieje wiele postów, które wyjaśniają, jak używać więcej niż standardowych pinów na różnych arduinos, ale żaden z nich nie wyjaśnia poprawnie ograniczeń i problemów.
Arduino Uno:
1.Możesz użyć pinów analogowych
Pin 14 = Analog in 0
Pin 15 = Analog in 1
Pin 16 = Analog in 2
Pin 17 = Analog in 3
Pin 18 = Analog in 4
Pin 19 = Analog in 5
digitalWrite(14,HIGH);
or
digitalWrite(A0,HIGH);
2.Nie można używać zarówno SDA, SCL, jak i A4, A5, ponieważ są one zasadniczo takie same (18,19).
3. Możesz także użyć TX / RX.
„Nie rób tego, zrywasz komunikację szeregową ...”
„Nigdy nie używaj pinów 0 i 1”
„nie można użyć pinów TX / Rx”
Możesz ... ale musisz podjąć środki ostrożności. Które?
Powinien mieć oprogramowanie szeregowe przez USB, prawda?
Czy mogę zepsuć port szeregowy USB?
Czy występują problemy z wewnętrznym układem, jeśli używam TX / RX?
Kiedy korzystam z tych pinów TX / RX w kodzie, których prawdopodobnie nie powinienem używać Serial.print()
?
Co się stanie, jeśli zapomnę usunąć Serial.print()
po przesłaniu kodu używającego pinów 0,1?
Jak zresetować sprzęt arduino / bootloader, jeśli coś pójdzie nie tak?
Ponieważ istnieją różne inne Arduino, które używają różnych żetonów, czy powyższe dotyczy wszystkich żetonów Atmel?
Więc jaki shuold wiem przed użyciem tych TX / RX, a może także innych pinów analogowych?
Istnieją tanie rejestry zmiany biegów, sterowniki PWM, sterowniki LED, SPI, i2C i więcej IC, aby rozszerzyć swoje I / O
Ale jeśli nie ma dużych problemów, oznacza to, że arduino ma 20 pinów I / O ...
Możesz teoretycznie kontrolować:
17x3 = 51 = 17 RGB leds (multiplexing, pwm sourcing&sinking);
14x6 = 84 leds (multiplexing, pwm on 6 rows/colums );
10x10 = 100 leds (multiplexing, high low);
20x(20-1) = 380 leds (charlieplexing, high low);
// yes it would flicker
Popraw mnie, jeśli się mylę. Oznacza to, że możesz kontrolować 380 „Czegokolwiek” za pomocą diod i jednego arduino.
źródło
Nie mogę komentować z powodu niewystarczającej reputacji, ale chcę zauważyć, że pinout OP ma co najmniej jeden pin niewłaściwy!
PB6 powinien być PB5
Spędziłem sporo czasu próbując dowiedzieć się, dlaczego nie widziałem SCK na lunecie (magistrali SPI). Pracowałem na niskim poziomie, nie z IDE.
Ponieważ jest to pierwsze zdjęcie, które pojawia się w Google, chciałem uniknąć tych samych problemów dla innych ...
źródło
Po pierwsze, liczba 380 jest poprawna dla 20 pinów (20 2 - 20), jednak piny 0 i 1 są podłączone do rezystorów pull-up w Atmega16U2, więc nigdy tak naprawdę nie mają 0V. Jeśli załadujesz pusty szkic, zmierzysz 5 V na pinach 0 i 1.
Po drugie, nie możesz prowadzić 380 „ wielorybników ”, możesz prowadzić 380 diod LED za pomocą Charlieplexing. Właściwość diody LED, polegającej na tym, że prąd przepływa przez nią tylko w jedną stronę, jest ważna dla sposobu jej działania.
Powiązane pytanie Czy istnieje sposób, aby mieć więcej niż 14 pinów wyjściowych na arduino?
źródło