Các chân analog I/O trong Arduino có tác dụng gì? Ứng dụng các chân analog của arduino như thế nào. Trong bài này chúng ta cùng tìm hiểu nhé.
Mục lục
analogRead()
Description
Hàm analogRead() có tác dụng đọc giá trị analog từ một chân Analog (ADC) được chỉ định. Bảng Arduino chứa bộ chuyển đổi tín hiệu tương tự sang kỹ thuật số đa kênh, 10-bit. Điều này có nghĩa là nó sẽ ánh xạ điện áp đầu vào giữa 0V và điện áp hoạt động (5V hoặc 3,3V) thành các giá trị nguyên từ 0 đến 1023.
Phạm vi đầu vào có thể được thay đổi bằng cách sử dụng analogReference(), trong khi độ phân giải có thể được thay đổi (chỉ đối với board Zero, Due và MKR) bằng cách sử dụng analogReadResolution().
Hàm analogRead() cần 100 micro giây để thực hiện.
Khi người ta nói “đọc tín hiệu analog”, bạn có thể hiểu đó chính là việc đọc giá trị điện áp.
BOARD | OPERATING VOLTAGE | USABLE PINS | MAX RESOLUTION |
---|---|---|---|
Uno | 5 Volts | A0 to A5 | 10 bits |
Mini, Nano | 5 Volts | A0 to A7 | 10 bits |
Mega, Mega2560, MegaADK | 5 Volts | A0 to A14 | 10 bits |
Micro | 5 Volts | A0 to A11* | 10 bits |
Leonardo | 5 Volts | A0 to A11* | 10 bits |
Zero | 3.3 Volts | A0 to A5 | 12 bits** |
Due | 3.3 Volts | A0 to A11 | 12 bits** |
MKR Family boards | 3.3 Volts | A0 to A6 | 12 bits** |
*A0 đến A5 được gắn nhãn trên board, A6 đến A11 tương ứng có sẵn trên các chân 4, 6, 8, 9, 10 và 12
** analogRead()
Độ phân giải mặc định cho các board này là 10 bit, để tương thích. Bạn cần sử dụng analogReadResolution () để thay đổi nó thành 12 bit.
Syntax
analogRead(pin)
Parameters
pin
: tên của chân đầu vào tương tự để đọc (A0 đến A5 trên hầu hết các board, A0 đến A6 trên MKR, A0 đến A7 trên Mini và Nano, A0 đến A15 trên Mega).
Returns
Đọc analog trên pin được chỉ định. Bị giới hạn ở độ phân giải của bộ chuyển đổi analog to digital (0-1023 cho 10 bit hoặc 0-4095 cho 12 bit). Kiểu dữ liệu: int
.
Example Code
Code đọc điện áp trên analogPin và print ra serial.
int analogPin = A3; // potentiometer wiper (middle terminal) connected to analog pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read
void setup() {
Serial.begin(9600); // setup serial
}
void loop() {
val = analogRead(analogPin); // read the input pin
Serial.println(val); // debug value
}
Notes and Warnings
Nếu chân đầu vào analog không được kết nối với bất kỳ thứ gì, giá trị được trả về analogRead()
sẽ dao động dựa trên một số yếu tố (ví dụ: giá trị của các đầu vào tương tự khác, mức độ gần của bàn tay bạn với mạch, v.v.).

analogReference()
Description
Cấu hình điện áp tham chiếu được sử dụng cho đầu vào analog (tức là giá trị được sử dụng làm đỉnh của dải đầu vào). Các tùy chọn là:
Arduino AVR Boards (Uno, Mega, Leonardo, etc.)
- DEFAULT: tham chiếu analog mặc định là 5V (trên board Arduino 5V) hoặc 3,3V (trên board Arduino 3.3V)
- INTERNAL: tham chiếu tích hợp sẵn, bằng 1,1V trên ATmega168 hoặc ATmega328P và 2,56V trên ATmega32U4 và ATmega8 (không khả dụng trên Arduino Mega)
- INTERNAL1V1: tham chiếu 1.1V tích hợp sẵn (chỉ Arduino Mega)
- INTERNAL2V56: tham chiếu 2,56V tích hợp sẵn (chỉ Arduino Mega)
- EXTERNAL: điện áp đặt vào chân AREF (0 đến 5V) được sử dụng làm tham chiếu.
Arduino SAMD (Zero, v.v.)
- AR_DEFAULT: tham chiếu analog mặc định 3.3V
- AR_INTERNAL: tham chiếu 2,23V tích hợp sẵn
- AR_INTERNAL1V0: tham chiếu 1.0V tích hợp
- AR_INTERNAL1V65: tham chiếu 1,65V tích hợp sẵn
- AR_INTERNAL2V23: tham chiếu 2,23V tích hợp sẵn
- AR_EXTERNAL: điện áp đặt vào chân AREF được sử dụng làm tham chiếu
Arduino megaAVR (Uno WiFi Rev2)
- DEFAULT: tham chiếu 0,55V tích hợp
- INTERNAL: tham chiếu 0,55V tích hợp sẵn
- VDD: Vdd của ATmega4809. 5V trên Uno WiFi Rev2
- INTERNAL0V55: tham chiếu 0,55V tích hợp
- INTERNAL1V1: tham chiếu 1.1V tích hợp sẵn
- INTERNAL1V5: tham chiếu 1.5V tích hợp
- INTERNAL2V5: tham chiếu 2,5V tích hợp
- INTERNAL4V3: tham chiếu 4.3V tích hợp
- EXTERNAL: điện áp được áp dụng cho chân AREF (chỉ 0 đến 5V) được sử dụng làm tham chiếu
Arduino SAM
- AR_DEFAULT: tham chiếu tương tự mặc định của 3.3V.
Syntax
analogReference(type)
Parameters
type
: loại tham chiếu nào sẽ sử dụng (xem danh sách các tùy chọn trong description).
Returns
Nothing
Notes and Warnings
Sau khi thay đổi analog reference, một vài số đọc đầu tiên analogRead()
có thể không chính xác.
Không sử dụng điện áp nhỏ hơn 0V hoặc hơn 5V cho điện áp tham chiếu bên ngoài trên chân AREF! Nếu bạn đang sử dụng tham chiếu bên ngoài trên chân AREF, bạn phải đặt tham chiếu tương tự thành EXTERNAL trước khi gọi analogRead()
. Nếu không, bạn sẽ nối tắt điện áp tham chiếu hoạt động (được tạo bên trong) và chân AREF, có thể làm hỏng vi điều khiển trên bảng Arduino của bạn.
analogWrite()
Description
Ghi một giá trị analog ( xung PWM ) vào một chân. Có thể được sử dụng để thắp sáng đèn LED ở các độ sáng khác nhau hoặc điều khiển động cơ ở nhiều tốc độ khác nhau.
BOARD | PWM PINS | PWM FREQUENCY |
---|---|---|
Uno, Nano, Mini | 3, 5, 6, 9, 10, 11 | 490 Hz (pins 5 and 6: 980 Hz) |
Mega | 2 – 13, 44 – 46 | 490 Hz (pins 4 and 13: 980 Hz) |
Leonardo, Micro, Yún | 3, 5, 6, 9, 10, 11, 13 | 490 Hz (pins 3 and 11: 980 Hz) |
Uno WiFi Rev2, Nano Every | 3, 5, 6, 9, 10 | 976 Hz |
MKR boards * | 0 – 8, 10, A3, A4 | 732 Hz |
MKR1000 WiFi * | 0 – 8, 10, 11, A3, A4 | 732 Hz |
Zero * | 3 – 13, A0, A1 | 732 Hz |
Nano 33 IoT * | 2, 3, 5, 6, 9 – 12, A2, A3, A5 | 732 Hz |
Nano 33 BLE/BLE Sense | 1 – 13, A0 – A7 | 500 Hz |
Due ** | 2-13 | 1000 Hz |
101 | 3, 5, 6, 9 | pins 3 and 9: 490 Hz, pins 5 and 6: 980 Hz |
Syntax
analogWrite(pin, value)
Parameters
pin
: chân Arduino analog cần điều khiển. Kiểu dữ liệu: int
.value
: duty cycle: từ 0 (always off) đến 255 (always on). Kiểu dữ liệu: int
.
Return
nothing
Example Code
Code điều khiển độ sáng của bóng đèn:
int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}
void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}
