Tüm pinleri dijital G / Ç olarak kullan


11

Dijital pin sayısını artırın

Çeşitli arduinolardaki standart pinlerden daha fazlasını nasıl kullanacağını açıklayan birçok yazı var, ancak bunların hiçbiri sınırlamaları ve proplemleri düzgün bir şekilde açıklamıyor.

resim açıklamasını buraya girin

Arduino Uno:

1. analog pimleri kullanabilirsiniz

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.Temel olarak aynı oldukları için hem SDA, SCL & A4, A5 kullanamazsınız (18,19).

3.TX / RX'i de kullanabilirsiniz.

"Yapma, seri iletişimi bozuyorsun ..."

"Asla 0 ve 1 pinlerini kullanmayın"

"TX / Rx Pinlerini kullanamazsınız"

Yapabilirsin ... ama önlem almalısın. Hangileri?

USB üzerinden yazılım seri olmalı, değil mi?

Yoksa USB dizisini bozabilir miyim?

TX / RX kullanırsam dahili Chip sorunları var mı?

Koddaki bu TX / RX pinlerini kullandığım için muhtemelen kullanmamalıyım Serial.print()?

Serial.print()0,1 pimlerini kullanan kodu yükledikten sonra kaldırmayı unutursam ne olur ?

Bir şeyler ters giderse arduino / bootloader donanımını nasıl sıfırlayabilirim?

Farklı yongalar kullanan çeşitli Arduino'lar olduğu için, yukarıdaki tüm Atmel yongaları için geçerli mi?

Peki, bu TX / RX'i veya belki de diğer analog pinleri kullanmadan önce ne biliyorum?

I / O'nuzu genişletmek için ucuz shiftregisters, pwm sürücüleri, led sürücüler, spi, i2c ve daha fazla IC'ler var


Ancak büyük problemler yoksa, arduino'nun 20 I / O pinine sahip olduğu anlamına gelir ...

Teorik olarak şunları kontrol edebilirsiniz:

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

Yanlışsam düzelt. Bu, diyotları ve bir arduino kullanarak 380 "Ne olursa olsun" kontrol edebileceğiniz anlamına gelir.

Yanıtlar:


8

Ana sorun 0 ve 1 pinleri ile ilgilidir.

A4 ve A5 gibi birçok pimin kendilerine atanmış birden fazla işlevi vardır, ayrıca I2C pimleri, 10/11/12/13 pimleri de SPI pimleri vb .'dir. Ancak 0 ve 1 pimleri, aslında tek çok işlevli pimlerdir. tahtaya bağlı bir şey var.

Diğer tüm pimler, çok işlevli olmakla birlikte, işlevlerine temel olarak onlara eklediğiniz şeyle tanımlanır. 0 ve 1 pinleri zaten kartta USB arabirim yongasına takıldığından, kullanım olanakları biraz daha sınırlıdır.

  • Çiziminizde ( Serial.begin()) Seri'yi etkinleştirir etkinleştirmez bu iki pim artık dijital IO için güvenilir bir şekilde kullanılamaz.

Bu , donanım seri bağlantı noktasını kullanabileceğiniz veya dijital IO için pimleri kullanabileceğiniz, ancak her ikisini birden kullanamayacağınız anlamına gelir .

  • 0 ve 1 pinlerine bağlı cihazlar seri bağlantıyı engelleyebilir

Buna eskizlerin yüklenmesi de dahildir. Aynı pimler kendilerine bağlı olan diğer şeylerden etkilenirken, PC'den gelen seri verileriniz var. En yaygın olanı, bu pinlere bağlanan ve sürekli seri veri gönderen GPS modülleri gibi şeylerdir. Bu seri veriler bilgisayarın seri verileriyle çakışacak ve ikisi de doğru şekilde gelmeyecektir.

  • Seriye çiziminizle müdahale ediliyorsa, çizimleri nasıl yüklersiniz? Tahtayı nasıl "sıfırlarsınız"?

Yapmazsın. Seriye müdahale eden çiziminiz değil, müdahale eden iki IO pinine fiziksel olarak bağlı olan şey budur. Sadece bu iki pimin bağlı olanla olan bağlantısını kesin ve eskizleri tekrar yükleyebileceksiniz. Artık birçok kalkan, bu pimlerin bağlantısını kesmek için üzerlerine küçük bir anahtar eklemeye başlıyor, böylece kalkanı çıkarmadan çizimler yükleyebilirsiniz. Aynı hileyi bu pimlere bağladığınız diğer cihazlarla da kullanabilirsiniz - her iki pimi de diğerlerinden kolayca izole etmek için çift kutuplu tek atış veya çift kutuplu çift atış ekleyin (ve bir konum kullanmayın) ihtiyacınız olduğunda donanımınızı.

  • Bu tüm Arduino kartlarını etkiler mi?

Hayır, sadece USB'den Seri köprü çipine sahip olanlar - bu Uno, Due, Mega, vb. D + ve D- pimleri. Bu Leonardo gibi tahtalar, bazı küçük (mini? Mikro? Hangisini unuttum) tahtalar, vb.


"Birçok kalkan şimdi küçük bir anahtar eklemeye başlıyor" serin. Micro'nun "USB'den Seri köprü çipine" var mı? Bu, uno'da 0,1 pinlerini kullanabileceğim, ancak mikroda kullanamayacağım anlamına mı geliyor?
cocco

Bunları USB'den Seri köprüye sahip olmayan herhangi bir cihazda kullanabilirsiniz. Uno'da bir tane var, Mega'da bir tane var, Mini'de bir tane yok, ancak programlamak için TX / RX pinlerine harici olarak bağlamanız gerekiyor. Bunların hepsi dışarıda. Mikro ve Leonardo'nun bir tane yok, böylece bunları kullanabilirsiniz.
Majenko

@Nick Gammon ne hakkında konuşuyor? Uno ve yazdığınız diğerlerinin pin 0 ve 1'i düzgün bir şekilde kullanmanıza izin vermeyen çekme dirençleri vardır, ancak Micro'nun çekme direnci yoktur ve bu nedenle 0 ve 1 pinleri düzgün çalışır ve ayrıca yeni çizimler yüklemek için usb?
cocco

Bir keresinde Nick bu noktada yanılıyor. Herhangi bir çekme direnci yoktur. Ana MCU ve USB yongasının her ikisi de aynı hattı aynı anda zıt seviyelere sürmeyi denerse, sorunları önlemek için bir çift küçük sıralı direnç vardır. Bunları Uno şemasında RN4A ve RN4B olarak görebilirsiniz.
Majenko

USB yongası RX pinini sürmeyi denerse (USB bağlantı noktasını taktınız ve seri bağlantıyı açtınız [veya belki de takılı, emin değilsiniz)), RX pinindeki voltajı ne olursa olsun etkileyebilir eskizinde yapıyorsun, bu pimi charlieplexing gibi şeyler için kullanmak güvenli olmayabilir.
Majenko

1

Yetersiz itibar nedeniyle yorum yapamam ama OP pinout en az bir pim yanlış olduğunu işaret etmek istiyorum!

PB6, PB5 olmalıdır

SCK'yı neden kapsamda (SPI veri yolu) göremediğimi anlamaya çalışmak için oldukça fazla zaman harcadım. IDE ile değil, düşük seviyede çalışıyordum.

Bu googling sırasında ortaya çıkan ilk resim olduğu için aynı sorunu başkalarına önlemek istedim ...


0

20x (20-1) = 380 led (charlieplexing, yüksek düşük); Yanlışsam düzelt. Bu, diyotları ve bir Arduino kullanarak 380 "Ne olursa olsun" kontrol edebileceğiniz anlamına gelir.

İlk olarak, 380 rakamı 20 pim (20 2 - 20) için doğrudur, ancak 0 ve 1 pimleri Atmega16U2'deki çekme dirençlerine bağlanır, bu yüzden asla gerçekten 0V'da değildirler. Boş bir çizim yüklerseniz, 0 ve 1 pinlerinde 5 V ölçersiniz.

İkincisi, 380 "whatevers" ı kullanamazsınız, 380 LED'i Charlieplexing üzerinden sürebilirsin . Akımın içinden sadece bir şekilde aktığı LED'in özelliği, çalışma şekli için önemlidir.

İlgili soru Arduino'da 14'ten fazla Çıkış pinine sahip olmanın bir yolu var mı?


İlk olarak, pim 0 ve 1 üzerine 2 led ters (dirençli) koyarsam, pim 0 yüksek pim 1 düşük gecikme 1 saniyeyi ve pim 0 düşük ve pim 1 yüksek gecikme 1sn'i ayarlarsam ne olur?
koko

İkincisi: "Whatevers" derken anahtarlar ... tıklama anahtarları, kamış anahtarlar, sensörler veya yüksek düşük destekleyen her türlü giriş çıkış kombinasyonu. diyotlar ile yapılan electronicdesign.com/site-files/electronicdesign.com/files/… .
cocco

Pek değil. Charlieplexing bir çoklama biçimidir, bu nedenle anahtarlarınızın deli gibi tıklanmasını istemiyorsanız, onlar için gerçekten işe yaramaz. Ve bu bir çıktı durumudur, bu yüzden düşündüğünüz gibi girdi yapmayacaksınız. Diğer bağlantıları okumanızı tavsiye ederim. Vardiya kayıtları veya port genişleticiler, burada Charlieplexing'den daha pratiktir.
Nick Gammon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.