Neden bazı pimlerin numaralarının yanında `~` işaretleri var?


32

Arduino Uno'ma bakıyordum ve bu sembolü dijital pimlerle fark ettim. 11 , 10, 9, 6, 5, ve 3. Bunlar ne anlama geliyor? Bu, çalışma şeklini etkiler mi? Bu pinleri belirli durumlar için kullanamaz mıyım?


19
Yaklaşık sembolü, "yaklaşık" anlamına gelir. "Bu, yaklaşık 11 numaralı pim" gibi. MFG işlemi sırasında pimler bir miktar kayabilir. Nadiren 11 pimi tam 11 olacaktır. Genellikle, 11'den biraz daha fazla veya biraz daha küçüktür. :)

6
@AnonomusPerson David, ustaca davranıyor; bu durum pinout'lara ve beğenilere aşina değilseniz hemen hemen belli değil.
Shamtam

7
@ Shamtam: Ya da David ile aşina değilseniz :)
Chris Laplante

Yanıtlar:


31

Rahatlayın. Endişelenme. Bu pinler denirPWM ve "ilave bonus" almaları dışında diğer pinlerle aynıdır.


Arduino'nun Web sitesinden bazı kullanımlar :

  • LED'i Karartma
  • Bir analog çıkışı simüle eder. Çıkış hala dijital olarak 0V ile 5V arasında değişiyor. Bununla birlikte, düşük voltajlı filtre (kapasitör ve direnç) analog voltajları simüle eder.
  • Ses sinyalleri üretiliyor.
  • Motorlar için değişken hız kontrolü sağlamak.
  • Örneğin, uzaktan kumanda için kızılötesi bir LED sürmek için modüle edilmiş bir sinyal üretmek.

Nasıl çalışır:

PWM pimleri, pimleri yaklaşık 490Hz hızında otomatik olarak değiştiren çip üzerindeki zamanlayıcılar tarafından kontrol edilir. "Darbe Genişliği Modülasyonu" (PWM), pimin bu frekansın tek bir çevrimi için ne kadar süre açık veya kapalı kalacağıdır. Bu, çok hızlı bir şekilde yanıp söndüğü, önceki gibi parlaklığın yarısı olduğu yanılsamasını vererek bir LED'i kısabilir. Image of different duty cycles.

% 25 görev döngüsü olduğunda, zamanın beşte biri üzerindedir. Bir LED için kullandıysanız, parlaklığın [ver veya al] yaklaşık 1 / 4'ü gibi görünür. (Not: Bazılarının belirttiği gibi, bu gerçekten değil orantılı ancak sadeliği bu şekilde bırakalım. EX:% 25 her zaman parlaklığın 1 / 4'ü değildir.)

(Gerçekten anlayışlıysanız, muhtemelen bir analog çıkış yapmak için bir kapasitör ekleyebilirsiniz.)


Bu pinleri çıktı olarak kullanmak nasıl:

Öncelikle, pimi çıktı olarak tanımlamanız gerekir. Sonra analogWrite(ledPin, 128); başlatmak için kullanın . ledPinEğer PWM başlatmak istiyor ve bu PWM pimi olan 128arasında bir sayı ile değiştirilmelidir 0ve 255; 0: 0% duty cycle(pimi tamamen kapatır) ve 255:100% duty cycle . (pimi tamamen açar)

Kaynak: http://www.arduino-tutorials.com/arduino-pwm/


Neden kodumda ışığı gerçekten açıp kapatamıyorum ?:

Teknik olarak, ancak, bazı sorunlar vardır:

  • Arduino ile kablolu devrelerin kullanılması kadar hassas olmayabilir
  • Sadece "if" ifadelerinin birçoğuna sahip olmak yerine, talimat yazmak çok kolaydır

Arduino'nun tek amacı PWM sinyalleri üretmekse, bu gerçekten bir fark yaratmayacak. Ancak, ana döngüde 50 MS'den daha uzun gecikmeler varsa, zamanlamayı bozar. Yazılım yaklaşımıyla, Arduino yalnızca bir iş parçacığı üzerinde çalıştığı için herhangi bir "gecikme" işlevini ortadan kaldırmak istersiniz (bir seferde sadece bir şey yapabilir). Ne yaptığınızı biliyorsanız, ışığı karartmak çok fazla bir fark yaratmaz, ancak PWM ile ekstra bir bağlantıya sahipseniz, zamanınızı sadece bir yazılım yaklaşımıyla harcarsınız.


Diğerlerinin dediği gibi:

Akım ve gerilimi sınırlamak için devreleriniz için hala bir direnç gerekir. Bunu geçemezsin.


1
"İşlem gücü" derken ne demek istediğinizi anlamadım (veya bu cümlenin ne anlama geldiği). PWM çalışır çünkü çalışan koddan bağımsız olarak çalışan zamanlayıcılar tarafından tetiklenir.
baldengineer

@ JamesC4S Gecikmeyi eklerseniz "Genel" kodunu yavaşlatır ve "Açık" ve "Kapalı" olur. İşlemci, saniyede yalnızca fazla ısınmadan önce çok fazla şey yapabilir, böylece ne kadar hızlı gittiğini kontrol eder.
Anonim Penguen,

@AnonomusPerson Verdiğiniz cevaplarda çok daha net olmanız gerekir. Açıklamanızın "işlem gücü" ile ne yapması gerektiğini hala göremiyorum. Örneğin, örneğin millis () kullanarak delay () kullanmayan PWM yordamları yazabilirsiniz;
baldengineer

1
@AnnonomusPerson: PWM'yi kodda uygulamanın iki yolu olduğunu söyleyebilirim: ya işlemciden biri PWM'yi ne zaman çıkacağına karar vermekten başka bir şey yapmayan bir döngüde gerçekleştirebilir ya da bir zamanlayıcı-kene kesmesine sahip olabilir. PWM'yi gerçekleştirin. Eski durumda, PWM olurken işlemci başka bir şey yapamaz; sonuncusunda, PWM zamanlamasının doğruluğu ve kesinliği ile ilgili sınırlamalar olacaktır. Donanım PWM devreleri, bir çipin diğer şeyleri yaparken mikrosaniye hizasında doğru olan temiz PWM dalga formları oluşturmasına izin verir.
supercat

Vizyonun nasıl çalıştığı sayesinde 1/4 DC (veya başka bir orana sahip) bir LED'in mutlaka tam parlaklığın fraksiyonunu göstermeyeceğini unutmayın.
Ignacio Vazquez-Abrams,

7

PWM pinleri hakkında yaygın bir yanılgı, PWM kullanırken akım sınırlayıcı dirençlerin (örneğin LED'lerle) kullanılması gerekmediğidir.

Bu doğru değil. PWM pinleri, otomatik olarak açılan ve açılan dijital pinler olarak düşünülmelidir. Bu, diğer pimlerin herhangi biri ile aynı YÜKSEK voltajına gittikleri anlamına gelir.

LED'leri PWM ile kullanırken, hala akım sınırlayıcı dirençleri kullanmanız gerekir. Motorları PWM ile kullanırken, (neredeyse her zaman) bir transistör kullanıyor olmalısınız.


2
@AnnonomusPerson Hayır, doğru değil. Gerçek analog çıkışlarınız olsa bile, LED'ler için akım sınırlayıcılara ihtiyacınız olacaktır. LED'ler sabit voltaj kaynaklarına değil sabit akım kaynağına ihtiyaç duyar.
baldengineer

3
İçinde akım sınırlayıcı bir direnç bulunan LED'leri alabilirsiniz. Maplin'de bir LED ve doğrudan 12V'dan koşturanlar olduğunu söylediğinde 12V'u çalıştırmak için uygun bir direnç istediğimde çok hayal kırıklığına uğradım. Heh, bir AND geçidi yapmak için bir paket transistörü bir pakette paketlemeye çalışıncaya kadar bekleyin.
Andrew Morton,
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.