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?
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?
Yanıtlar:
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.
% 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
. ledPin
Eğer PWM başlatmak istiyor ve bu PWM pimi olan 128
arasında bir sayı ile değiştirilmelidir 0
ve 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'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.
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.