หากต้องการตอบคำถามเฉพาะของ Tyilo:
analogRead(5)
และdigitalRead(5)
จะอ่านจากสองแห่ง อดีตจะอ่านจากช่องสัญญาณอะนาล็อก5
หรือA5
และหลังจะอ่านจากขา 5 ซึ่งเกิดขึ้นเป็นขาดิจิตอล ดังนั้นใช่ถ้าคุณต้องการที่จะอ่านขาอะนาล็อกกับคุณควรจะใช้digitalRead
A5
ทำไม?
analogRead
ต้องใช้หมายเลขช่องสัญญาณภายใน แต่จะอนุญาตให้คุณระบุหมายเลข PIN ได้เช่นกัน หากคุณให้หมายเลขพินมันจะแปลงเป็นหมายเลขช่องที่สอดคล้องกัน เท่าที่ฉันสามารถบอกได้ว่าanalogRead
เป็นฟังก์ชั่นเดียวที่ใช้หมายเลขช่องสัญญาณภายในเป็นฟังก์ชั่นเดียวที่อนุญาตหมายเลขช่องสัญญาณและเป็นฟังก์ชั่นเดียวที่มีการแปลง pin-to-channel ที่ไม่มีเอกสารนี้ เพื่อให้เข้าใจสิ่งนี้เรามาเริ่มด้วยตัวอย่าง
หากคุณต้องการใช้analogRead
กับหมุดอะนาล็อกแรกA0
คุณสามารถทำได้analogRead(0)
โดยใช้หมายเลขช่องสัญญาณหรือanalogRead(A0)
ใช้หมายเลขพิน หากคุณกำลังจะใช้ตัวแปรจำนวนขาanalogRead
จะเปลี่ยนหมายเลข PIN กับจำนวนช่องทางที่เหมาะสมA0
0
หากคุณต้องการที่จะใช้digitalWrite
ในเข็มอนาล็อกเป็นครั้งแรกA0
ที่คุณสามารถเพียงdigitalWrite(A0, x)
ทำ digitalWrite
ไม่ใช้ช่องอนาล็อกภายในและไม่อนุญาตให้คุณส่งผ่านหมายเลขช่อง มันจะช่วยให้คุณ แต่คุณจะเลือกพินผิด เช่นเดียวกับและแม้กระทั่งdigitalRead
analogWrite
สิ่งที่เกี่ยวกับการแปลง pin-to-channel ทำโดยanalogRead
? แหล่งที่มาของฟังก์ชั่นนั้นสามารถพบได้ในhardware/arduino/avr/cores/arduino/wiring_analog.c
คุณจะเห็นว่ามันจะทำการลบง่าย ๆ ตามประเภทของบอร์ด A0
/ A1
/ A2
/ ฯลฯ ค่าคงที่แสดงถึงหมายเลขพินของช่องอะนาล็อกและสามารถใช้ได้ทุกที่ที่คุณต้องการอ้างถึงอินพุตแบบอะนาล็อก ด้วยเหตุนี้จึงเป็นตัวเลือกที่ดีที่สุดที่จะใช้ในรหัส Arduino ของคุณเพราะเห็นได้ชัดว่าคุณกำลังใช้พอร์ตทางกายภาพเดียวกันแม้ว่าคุณจะใช้ฟังก์ชั่นที่แตกต่างกัน คำจำกัดความของค่าคงที่เหล่านั้นขึ้นอยู่กับบอร์ดของคุณ
ตัวอย่างเช่นนี่คือรหัสนิยามขาอะนาล็อกสำหรับ Arduino Uno 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;
สำหรับการเปรียบเทียบที่นี่คือรหัสนิยามขาอะนาล็อกสำหรับ 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;
การอภิปราย EE เพิ่มเติมเกี่ยวกับหมุดอะนาล็อก: ฉันสามารถใช้หมุดอะนาล็อกบน Arduino สำหรับโครงการของฉันเป็นดิจิตอลได้หรือไม่?