Tyilo'nun özel sorularını cevaplamak için:
analogRead(5)ve digitalRead(5)iki farklı yerden okuyacak. Eski bir analog kanal okuyacak 5ya A5ve ikinci pim 5 okuyacak durumda bir dijital pim olması. Yani evet, sizinle analog bir pin okumak digitalReadistiyorsanız kullanmalısınız A5.
Neden?
analogReaddahili olarak bir kanal numarası gerektirir ancak bu numaraya bir pin numarası vermenize de olanak tanır. Bir pin numarası verirseniz, karşılık gelen kanal numarasına dönüştürür. Anlayabildiğim kadarıyla analogRead, bir kanal numarasını dahili olarak kullanan tek işlevdir, bir kanal numarasına izin veren tek işlevdir ve bu belgesiz pin-kanal dönüşümü ile tek işlevdir. Bunu anlamak için bazı örneklerle başlayalım.
Kullanmak isterseniz analogReadilk analog pim üzerine A0yapabileceğiniz analogRead(0)kanal numarasını kullanan veya analogRead(A0)pin numarası kullanır. Eğer pin numarası varyantını kullanacak olursak, analogReadpin numarası dönüştürmek istiyorum A0onun uygun kanal numarasına 0.
Kullanmak isterseniz digitalWriteilk analog pim üzerine A0şunları yapabilirsiniz sadece yapmak digitalWrite(A0, x). digitalWriteanalog kanalları dahili olarak kullanmaz ve kanal numarası iletmenize izin vermez. Sana izin verecek ama yanlış pimi seçeceksin. Aynısı digitalReadve hatta geçerlidir analogWrite.
Tarafından yapılan pin-to-channel dönüşümleri ne olacak analogRead? Bu işlevin kaynağı hardware/arduino/avr/cores/arduino/wiring_analog.c, pano türüne bağlı olarak bazı basit çıkarma işlemlerinin yapıldığını göreceksiniz. A0/ A1/ A2/ Vb. sabitler analog kanalların pin numarasını temsil eder ve analog girişlere başvurmanız gereken her yerde kullanılabilir. Bu nedenle, Arduino kodunuzda kullanmak için en iyi seçenektir, çünkü farklı işlevleri kullanırken bile aynı fiziksel bağlantı noktasını kullandığınız çok açıktır. Bu sabitlerin tanımları tahtanıza bağlıdır.
Örneğin, burada Arduino Uno in için analog pin tanımlama kodu hardware/arduino/avr/variants/standard/pins_arduino.h
static const uint8_t A0 = 14;
static const uint8_t A1 = 15;
static const uint8_t A2 = 16;
static const uint8_t A3 = 17;
static const uint8_t A4 = 18;
static const uint8_t A5 = 19;
static const uint8_t A6 = 20;
static const uint8_t A7 = 21;
Karşılaştırma için burada Arduino Mega için analog pin tanımlama kodu:
static const uint8_t A0 = 54;
static const uint8_t A1 = 55;
static const uint8_t A2 = 56;
[...]
static const uint8_t A13 = 67;
static const uint8_t A14 = 68;
static const uint8_t A15 = 69;
Analog pinler hakkında daha fazla enerji verimliliği tartışması: Projem için Arduino'daki analog pinleri dijital olarak kullanabilir miyim?