Використовуйте всі штифти як цифрові введення / виведення


11

Збільшити кількість цифрових штифтів

Існує багато публікацій, які пояснюють, як використовувати більше, ніж просто стандартні шпильки на різних ардуїнах, але жоден з них не пояснює обмеження та проплементи належним чином.

введіть тут опис зображення

Ардуїно Уно:

1.Ви можете використовувати аналогові штифти

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.Ви не можете використовувати обидва SDA, SCL та A4, A5, оскільки вони в основному однакові (18,19).

3.Ви також можете використовувати TX / RX.

"Не робіть цього, ви порушуєте послідовний зв'язок ..."

"Ніколи не використовуйте шпильки 0 і 1"

"ви не можете використовувати штифти TX / Rx"

Можна… але потрібно вжити заходів обережності. Котрий?

Це повинно мати серійне програмне забезпечення через USB, правда?

Або я зламаю USB-серійний?

Чи є внутрішні проблеми з чіпами, якщо я використовую TX / RX?

Як я використовую ці TX / RX шпильки в коді, я, ймовірно, не повинен використовувати Serial.print()?

Що станеться, якщо я забуду видалити Serial.print()після завантаження коду, що використовує штифти 0,1?

Як апаратно скинути ардуїно / завантажувач, якщо щось піде не так?

Оскільки є різні інші Arduino, які використовують різні мікросхеми, чи вищезазначене справедливо для всіх фішок Atmel?

Отже, що я маю знати, перш ніж використовувати ці TX / RX або, можливо, інші аналогові штифти?

Для розширення вводу / виводу існують дешеві регістри shift, Pwm-драйвери, керовані драйвери, spi, i2c та інші


Але якщо великих проблем не виникає, це означає, що у arduino є 20 штифтів вводу / виводу ...

Ви теоретично можете контролювати:

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

Виправте мене, якщо я помиляюся. Це означає, що ви можете керувати 380 "Що б там не було", використовуючи діоди та один ардуїно.

Відповіді:


8

Основне питання - із шпильками 0 та 1.

Багато штифтів мають декілька призначених їм функцій, такі як A4 та A5 - це також шпильки I2C, шпильки 10/11/12/13 - це також шпильки SPI тощо. Але шпильки 0 і 1 - єдині багатофункціональні шпильки мати щось прикріплене до них на дошці.

Усі інші штифти, будучи багатофункціональними, мають свою функцію, визначальну в основному тим, що ви додаєте до них. Оскільки штирі 0 і 1 вже прикріплені на платі до мікросхеми інтерфейсу USB, можливості їх використання дещо обмежені.

  • Як тільки ви увімкнете Serial у своїй ескізі ( Serial.begin()), ці два штифти вже не можна надійно використовувати для цифрового вводу-виводу.

Це означає, що ви можете або використовувати апаратний послідовний порт, або ви можете використовувати штифти для цифрового вводу-виводу, але не обидва.

  • Пристрої, підключені до штифтів 0 і 1, можуть перешкоджати послідовному з'єднанню

Це включає завантаження ескізів. У вас є серійні дані, які надходять з ПК, тоді як на ті ж штифти впливають інші речі, пов'язані з ними. Найпоширеніший - такі речі, як GPS-модулі, які підключаються до цих штифтів і постійно надсилають послідовні дані. Ці послідовні дані суперечать серійним даним ПК, і жоден з них не стане правильним.

  • Як ви завантажуєте ескізи, якщо серіал перешкоджає вашому ескізу? Як ви "скидаєте" плату?

Ви цього не робите. Це не ваш ескіз, який заважає серійному, це те, що фізично пов'язане з тими двома штифтами вводу-виводу, які заважають. Просто від'єднайте ці два штифта від того, що підключено, і ви зможете знову завантажити ескізи. Зараз багато щитів починають додавати на них невеликий перемикач, щоб від'єднати ці шпильки, щоб ви могли завантажувати ескізи, не відключаючи щит. Ви можете також використовувати той самий трюк і з іншими пристроями, якими ви підключаєте ці штифти - додайте двополюсний один кидок або двополюсний двомісний кидок (і не використовуйте одну позицію), щоб легко ізолювати обидва шпильки від решти ваше обладнання, коли вам потрібно.

  • Це впливає на всі дошки Arduino?

Ні, лише ті, що використовують мікросхему USB до послідовного мосту - ось такі речі, як плата Uno, Due, Mega тощо. Плати, які мають пряме з'єднання USB, не використовують штифти TX і RX для завантаження ескізів - вони використовують виділений USB D + і D- шпильки. Це дошки на кшталт Леонардо, деякі менші (міні? Мікро? Я забуваю, які) дошки тощо.


"Багато екранів зараз починають додавати невеликий перемикач" круто. Micro має "чіп USB для послідовного мосту"? Це означає, що я можу використовувати штифти 0,1 на uno, але не на мікро?
кокко

Ви можете використовувати їх на будь-яких, у яких немає USB-послідовного моста. У Uno є один, у Mega є його, у Mini немає, проте вам потрібно підключити його зовнішньо до штифтів TX / RX, щоб запрограмувати його. Всі вони поза. Мікро та Леонардо не мають жодного, тому ви можете використовувати ці.
Majenko

Це те, про що говорить @Nick Gammon? Уно та інші, які ви записали, мають підтягуючі резистори, які не дозволяють вам належним чином використовувати штифт 0 і 1, але Micro не має резистора підключення і тому штифти 0 і 1 працюють у власних умовах, а також usb для завантаження нових ескізів?
кокко

Одного разу Нік помиляється з цього приводу. Немає ніяких резисторів. Що там є пару невеликих вбудованих резисторів, щоб запобігти проблемам, якщо основний MCU та USB чіп намагаються одночасно провести ту саму лінію до протилежних рівнів. Ви можете бачити їх на схемі Uno як RN4A та RN4B.
Majenko

Якщо USB-мікросхема спробує керувати штифтом RX (у вас підключений USB-порт і ви відкриваєте послідовне з'єднання [або, можливо, він просто підключений, не впевнений]), це може вплинути на напругу на штифті RX незалежно від того, що ви робите у своєму ескізі, тому, можливо, не безпечно використовувати цю шпильку для таких речей, як charlieplexing.
Majenko

1

Я не можу коментувати через недостатню репутацію, але хочу зазначити, що розпізнавання OP має принаймні один штифт неправильно!

PB6 повинен бути PB5

Я витратив досить багато часу, намагаючись з’ясувати, чому я не міг бачити SCK на області дії (шина SPI). Я працював на низькому рівні, не з IDE.

Оскільки це перша картина, яка з’являється під час гуглінгу, я хотів уникнути таких же неприємностей для інших ...


0

20x (20-1) = 380 світлодіодів (charlieplexing, high low); Виправте мене, якщо я помиляюся. Це означає, що ви можете керувати 380 "Що б там не було", використовуючи діоди та один Arduino.

По-перше, цифра 380 є правильною для 20 контактів (20 2 - 20), однак штирі 0 і 1 підключаються до підтягуючих резисторів на Atmega16U2, тому вони ніколи не знаходяться на 0В. Якщо ви завантажите порожній ескіз, ви вимірюєте 5 В на штифтах 0 і 1.

По-друге, ви не можете керувати 380 "whatevers", ви можете керувати 380 світлодіодами через Charlieplexing. Властивість світлодіода, що струм протікає лише одним шляхом через нього, є важливим для способу його роботи.

Супутнє запитання Чи є спосіб мати більше 14 вихідних штифтів на arduino?


По-перше: що трапиться, якщо я покладу на 2 контактні інвертовані (з резисторами) на штирі 0 і 1, встановіть штифт 0 високий штифт 1 низький затримку 1 секунду і встановіть штифт 0 низький і контакт 1 високий затримки 1сек?
кокко

По-друге: Під "whatevers" я маю на увазі перемикачі ... клавіші перемикання, тростинні перемикачі, датчики або кожен тип комбінації входів виходів, які підтримують високий низький. electronicdesign.com/site-files/electronicdesign.com/files/… зроблено з діодами.
кокко

Ну не дуже. Charlieplexing - це форма мультиплексування, тому, якщо ви не хочете, щоб ваші перемикачі клацали як божевільні, це не спрацює для них. І це вихідна ситуація, тому ви не будете робити введення, як здається, думаєте. Я пропоную вам прочитати інші посилання. Регістри зсуву або розширювачі портів тут більш практичні, ніж Charlieplexing.
Нік Гаммон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.