Untuk menjawab pertanyaan spesifik Tyilo:
analogRead(5)dan digitalRead(5)akan membaca dari dua tempat yang berbeda. Yang pertama akan membaca dari saluran analog 5atau A5dan yang terakhir akan membaca dari pin 5 yang kebetulan merupakan pin digital. Jadi ya, jika Anda ingin membaca pin analog dengan digitalReadAnda harus menggunakan A5.
Mengapa?
analogReadmembutuhkan nomor saluran secara internal tetapi itu akan memungkinkan Anda untuk memberikan nomor pin juga. Jika Anda memberikan nomor pin, itu akan mengubahnya menjadi nomor saluran yang sesuai. Sejauh yang saya tahu analogReadadalah satu-satunya fungsi yang menggunakan nomor saluran secara internal, adalah satu-satunya yang mengizinkan nomor saluran, dan merupakan satu-satunya fungsi dengan konversi pin-to-channel yang tidak berdokumen ini. Untuk memahami ini, mari kita mulai dengan beberapa contoh.
Jika Anda ingin menggunakan analogReadpin analog pertama, A0Anda dapat melakukan analogRead(0)yang menggunakan nomor saluran atau analogRead(A0)yang menggunakan nomor pin. Jika Anda menggunakan varian nomor pin, analogReadakan mengonversi nomor pin A0ke nomor saluran yang tepat 0.
Jika Anda ingin menggunakan digitalWritepin analog pertama, A0Anda hanya bisa melakukannya digitalWrite(A0, x). digitalWritetidak menggunakan saluran analog secara internal dan tidak membiarkan Anda memberikan nomor saluran. Yah, itu akan membiarkan Anda tetapi Anda akan memilih pin yang salah. Hal yang sama berlaku untuk digitalReaddan bahkan analogWrite.
Bagaimana dengan konversi pin-to-channel yang dilakukan oleh analogRead? Sumber untuk fungsi itu dapat ditemukan di hardware/arduino/avr/cores/arduino/wiring_analog.cAnda akan melihat bahwa ia melakukan pengurangan sederhana berdasarkan pada tipe papan. The A0/ A1/ A2/ etc. konstanta mewakili nomor pin saluran analog dan dapat digunakan di mana pun Anda perlu merujuk ke input analog. Karena alasan itu mereka adalah opsi terbaik untuk digunakan dalam kode Arduino Anda karena sangat jelas bahwa Anda menggunakan port fisik yang sama bahkan ketika Anda menggunakan fungsi yang berbeda. Definisi konstanta-konstanta itu bergantung pada papan Anda.
Misalnya, inilah kode definisi pin analog untuk Arduino Uno di 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;
Untuk perbandingan di sini adalah kode definisi pin analog untuk Arduino Mega:
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;
Diskusi EE lebih lanjut tentang pin analog: Dapatkah saya menggunakan pin analog pada Arduino untuk proyek saya sebagai digital?