Otázka:
Použít všechny piny jako digitální I / O
cocco
2015-08-21 16:36:00 UTC
view on stackexchange narkive permalink

Zvyšte počet digitálních pinů

Existuje mnoho příspěvků, které vysvětlují, jak používat více než jen standardní piny na různých arduinech, ale žádný z nich nevysvětluje omezení a proplémy správně.

enter image description here

Arduino Uno:

1. Můžete použít analogové piny

  Pin 14 = Analogový v 0Pin 15 = Analogový v 1Pin 16 = Analogový v 2Pin 17 = Analogový v 3Pin 18 = Analogový v 4Pin 19 = Analogový v 5digitalWrite (14, HIGH); ordigitalWrite (A0, HIGH);  

2. Nemůžete použít oba SDA, SCL & A4, A5, protože jsou v zásadě stejné (18,19 ).

3. Můžete také použít TX / RX.

„Nedělejte to, přerušíte sériovou komunikaci ...“

„Nikdy nepoužívejte piny 0 a 1“

„vy nemůžete použít piny TX / Rx "

Můžete ... ale musíte přijmout preventivní opatření. Které?

Mělo by to mít softwarové sériové rozhraní přes USB, že?

Nebo rozbiji sériové USB?

Existují problémy s vnitřními čipy, když používám TX / RX?

Jak používám tyto piny TX / RX v kód, který bych pravděpodobně neměl používat Serial.print()?

Co se stane, když po nahrání kódu zapomenu odstranit Serial.print () které používají piny 0,1?

Jak hardwarově resetovat arduino / bootloader, pokud se něco pokazí?

Jelikož existují různá další Arduina, která používají různé čipy, platí výše uvedené pro všechny čipy Atmel?

Takže, co znám před použitím těchto TX / RX nebo také možná další analogové piny?

K rozšíření I / O existují levné řadiče registru, ovladače pwm, ovladače led, spi, i2c a další IC


Pokud však nedojde k velkým problémům, znamená to, že arduino má 20 I / O pinů ...

Teoreticky můžete ovládat:

  17x3 = 51 = 17 RGB LED (multiplexování, pwm sourcing&sinking); 14x6 = 84 LED (multiplexování, pwm na 6 řadách / sloupcích);
10x10 = 100 LED (multiplexování, vysoká nízká); 20x (20-1) = 380 LED (charlieplexing, vysoká nízká); // ano, bliká  

Opravte mě, pokud jsem špatně. To znamená, že můžete ovládat 380 „cokoli“ pomocí diod a jednoho arduina.

Tři odpovědi:
Majenko
2015-08-21 19:33:27 UTC
view on stackexchange narkive permalink

Hlavní problém je s kolíky 0 a 1.

Mnoho kolíků má přiřazeno více funkcí, například A4 a A5 jsou také kolíky I2C, kolíky 10/11/12/13 jsou také piny SPI atd. Ale piny 0 a 1 jsou jediné multifunkční piny, ke kterým je na desce skutečně něco připojeno.

Všechny ostatní piny, i když jsou multifunkční, mají svoji funkci definováno v podstatě tím, co k nim připojíte. Vzhledem k tomu, že piny 0 a 1 jsou již na desce připojeny k čipu rozhraní USB, jsou možnosti jejich použití poněkud omezenější.

  • Jakmile ve svém náčrtu povolíte Serial ( Serial. begin () ) tyto dva piny již nelze spolehlivě použít pro digitální IO.

To znamená, že můžete buď použít hardwarový sériový port nebo můžete použít piny pro digitální IO, ale ne obojí.

  • Zařízení připojená k piny 0 a 1 mohou interferovat se sériovým připojením

To zahrnuje nahrávání skic. Máte sériová data přicházející z počítače, zatímco stejné piny jsou ovlivňovány jinými věcmi, které jsou k nim připojeny. Nejběžnějším z nich jsou věci, jako jsou GPS moduly, které se k těmto pinům připojují a neustále odesílají sériová data. Tato sériová data budou v konfliktu se sériovými daty počítače a ani jedna nepřijde správně.

  • Jak nahrajete náčrtky, pokud je sériový snímek narušen náčrtem? Jak „resetujete“ desku?

To ne. Není to váš náčrt, který ruší seriál, je to to, co je fyzicky spojeno s těmi dvěma IO piny, které ruší. Stačí odpojit tyto dva piny od všeho, co je připojeno, a budete moci znovu nahrát náčrtky. Mnoho štítů nyní začíná přidávat malý přepínač k odpojení těchto pinů, takže můžete nahrát náčrtky bez odpojení štítu. Stejný trik můžete také použít s dalšími zařízeními, která k těmto pinům připojíte - přidáním dvojpólu s jedním házením nebo dvojpólu s dvojitým házením (a nepoužívejte jednu pozici), abyste snadno izolovali oba piny od zbytku váš hardware, když potřebujete.

  • Ovlivní to všechny desky Arduino?

Ne, pouze ty, které používají můstek USB na sériový most - to jsou věci jako desky Uno, Due, Mega atd. Desky, které mají přímé připojení USB, nepoužívají k nahrávání náčrtů kolíky TX a RX - používají vyhrazené kolíky USB D + a D-. To jsou desky jako Leonardo, některé menší (mini? Mikro? Zapomněl jsem, jaké) desky atd.

„Mnoho štítů nyní začíná přidávat malý vypínač“ super. Micro má „USB na sériový můstkový čip“? Znamená to, že mohu použít piny 0,1 na uno, ale ne na micro?
Můžete je použít na všech zařízeních, která nemají most USB na Serial. Uno má jeden, Mega má jeden, Mini žádný nemá, ale k jeho naprogramování je třeba jeden připojit externě k pinům TX / RX. Všichni jsou venku. Micro a Leonardo žádný nemají, takže je můžete použít.
O tom mluví @Nick Gammon? Uno a ostatní, které jste si zapsali, mají pullup rezistory, které vám neumožňují správně použít pin 0 a 1, ale Micro nemá žádný pullup rezistor, takže piny 0 a 1 fungují správně a také usb pro nahrávání nových skic?
Nick se v tomto bodě jednou mýlí. Neexistují žádné pullup odpory. K dispozici je pár malých inline rezistorů, které zabraňují problémům, pokud se hlavní MCU a USB čip pokusí současně řídit stejnou linku na opačné úrovně. Na schématu Uno je můžete vidět jako RN4A a RN4B.
Pokud se USB čip pokusí připojit pin RX (máte zapojený USB port a otevřete sériové připojení [nebo možná je jen zapojený, nejste si jisti]), pak to může ovlivnit napětí na RX pinu nezávisle na čemkoli děláte ve svém náčrtu, takže nemusí být bezpečné použít tento kolík pro věci, jako je charlieplexing.
takže můžu charlieplex 380leds nebo přepne s Uno, pokud nepoužívám serial, i2c, spi. pokud USB není použito jako sériové. pak, když chci přidat nový náčrtek, stačí odpojit věci z pinů 0 a 1. Na druhé straně s mikro nepotřebuji ani odpojovat piny 0,1, protože nejsou připojeny k USB?
To je téměř správné. Možná * budete moci použít 0 a 1 pro charlieplexing, ale USB čip * může * i přes vaše nejlepší úsilí stále překážet. Různé USB čipy fungují různými způsoby a záleží na tom, jaký firmware je načten na USB čip u těch, které používají MCU místo vyhrazeného čipu jako FT232 atd.
I když USB není připojeno, ale používám pouze vin nebo vyhrazené napájení? Jakmile je naprogramováno, používám externí napájení USB není připojeno. pro změnu náčrtků odstraňte pin0,1stuff
To není otázka, na kterou lze odpovědět jednoduchým „ano“ nebo „ne“. Zcela záleží na tom, * co USB čip dělá * a to záleží na * tom, co je USB čip *, který závisí na * jaké je deska, odkud jste ji koupili, kdo ji navrhl a postavil * atd. Nejlepší je předpokládat nejhorší a nepoužívat tyto piny pro tento druh operace.
Je to nejasné ... nebo fungují nebo nefungují ... pokud je to něco jako ano, funguje to s charlieplexingem, protože interference jsou nízké, aby měly vizuální dopad na led diody, při použití přepínačů to není vhodné mnoho špatných údajů. Mimochodem, mluvím o originálních Arduinech .. Uno rev 3 a také nejnovější ... „skutečná“ arduinos. Možná to znamená, že se také změní firmware čipu, a tak mohl na tyto piny zapsat nějaká náhodná data? jak jsem řekl, že USB není po programování připojeno. má čip nějakou smyčku na těchto pinech, aby zkontroloval, zda je připojen nebo co?
co se stane, když na piny 0 a 1 vložím 2 diody invertované (s rezistory), nastavím pin 0 high pin 1 nízké zpoždění 1 sekundu a nastavím pin 0 low a pin 1 vysoké zpoždění 1sec? stejná otázka, kterou jsem položil Nickovi.
Pojďme [pokračovat v této diskusi v chatu] (http://chat.stackexchange.com/rooms/27266/discussion-b Between-cocco-and-majenko).
Zkusil jsi to? Pokud to uděláte, nezpůsobíte žádnou škodu. Ano, firmware se může (a pravděpodobně i bude) časem měnit.
zkusím zveřejnit aktualizace později .. doufám, že moji arduinos nevybuchnou.
Testováno na Arduino Uno, 2 invertované LED diody na kolíku 0,1 blikají správně, žádné viditelné interference, i když jsou napájeny z USB z počítače. náčrtky se načítají normálně také s připojenými LED diodami. tx rx jsou pravděpodobně zapojeny přesně jako test, jak vidíte dovnitř a ven tx rx komunikace ... takže pokud to funguje uno ... arduino micro by nemělo mít úplně žádný problém.
Petrus
2017-02-17 16:59:18 UTC
view on stackexchange narkive permalink

Nemohu komentovat kvůli nedostatečné pověsti, ale chci poukázat na to, že OP pinout má alespoň jeden pin špatně!

PB6 by měl být PB5

Strávil jsem dost času zkoušením přijít na to, proč jsem neviděl SCK v oboru (sběrnice SPI). Pracoval jsem na nízké úrovni, ne s IDE.

Jelikož se jedná o první obrázek, který se objeví při googlování, chtěl jsem se vyhnout stejným problémům jako ostatní ...

Nick Gammon
2015-08-22 02:58:23 UTC
view on stackexchange narkive permalink

20x (20-1) = 380 LED (charlieplexing, high low); Oprav mě pokud nemám pravdu. To znamená, že jste schopni ovládat 380 „Whatever“ pomocí diod a jednoho Arduina.

Za prvé, hodnota 380 je správná pro 20 pinů (20 2 - 20) piny 0 a 1 jsou však připojeny k pull-up rezistorům na Atmega16U2, takže nikdy nejsou skutečně na 0V. Pokud načtete prázdnou skicu, budete měřit 5 V na pinech 0 a 1.

Zadruhé, nemůžete řídit 380 „cokoli“, můžete řídit 380 LED diod přes Charlieplexing . Vlastnost diody LED, která protéká pouze jedním směrem, je důležitá pro její fungování.

Související otázka Existuje způsob, jak mít na arduinu více než 14 výstupních pinů?

Za prvé: Co se stane, když na piny 0 a 1 vložím 2 diody invertované (s rezistory), nastavím pin 0 high pin 1 nízké zpoždění 1 sekundu a nastavím pin 0 low a pin 1 vysoké zpoždění 1sec?
Zadruhé: „Whatevers“ mám na mysli přepínače ... cvakávací spínače, jazýčkové spínače, senzory nebo všechny typy kombinací vstupních výstupů, které podporují vysokou nízkou úroveň. Http://electronicdesign.com/site-files/electronicdesign.com/files/ archive / electronicdesign.com / files / 29/18652 / fig_02.jpg hotové s diodami.
No ne tak úplně. Charlieplexing je forma multiplexování, takže pokud nechcete, aby vaše přepínače klikaly jako šílené, ve skutečnosti to nebude fungovat. A je to výstupní situace, takže nebudete dělat vstupy, jak si myslíte. Doporučuji vám přečíst si další odkazy. Posuvné registry nebo rozšiřovače portů jsou praktičtější než Charlieplexing zde.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...