Câu trả lời:
digitalWrite sẽ đặt chân được chỉ định thành một trong hai trạng thái - CAO / THẤP, tương đương với 5v (3,3v trên một số bảng) và mặt đất tương ứng.
analogWrite có thể thay đổi theo loại đầu ra được sử dụng.
Nếu được áp dụng cho chân PWM - nó sẽ đặt chân thành tín hiệu cao / thấp định kỳ, trong đó tỷ lệ phần trăm của tín hiệu chi tiêu cao tỷ lệ thuận với giá trị được ghi. ví dụ -
analogWrite(PWMpin,255)
Sẽ CAO 100% thời gian, trong khi
analogWrite(PWMpin,127)
Sẽ CAO 50% thời gian và THẤP 50% thời gian
Khi áp dụng analogWrite cho chân DAC (có sẵn trên một số bo mạch, như DUE hoặc MEGA ), analogWrite thực sự sẽ khiến chân được chỉ định tạo ra mức điện áp tỷ lệ với giá trị tương tự đã chỉ định
Ví dụ: trên Do, với điện áp tối đa 3,3v và độ phân giải tương tự mặc định là 8 bit - [0: 255]
analogWrite(DACpin,255)
Sẽ khiến chân được chỉ định xuất ra 3.3v và-
analogWrite(DACpin,127)
Sẽ làm cho pin được chỉ định để xuất 1.35v
analogWrite (): Phương thức analogWrite () đặt giá trị của chân đầu ra PWM. AnalogWrite () ở thang điểm 0 - 255, sao cho analogWrite (255) yêu cầu chu kỳ nhiệm vụ 100% (luôn bật) và analogWrite (127) là chu kỳ nhiệm vụ 50% (trong một nửa thời gian).
Cú pháp : analogWrite (pin, val)
Ở đâu,
pin: số chân đầu ra PWM.
val: giá trị int của chu kỳ nhiệm vụ từ 0 (luôn tắt) đến 255 (luôn bật)
Mã ví dụ:
int outLed = 10; //LED connected to digital pin 10
int value = 0; //variable to store the read value
int analogIN = 3; //input pin
void setup()
{
pinMode(outLed, OUTPUT); // set the PWM pin as OUTPUT
}
void loop()
{
value = analogRead(analogIN); // read the value of analogIN (values between from 0 to 1023)
analogWrite(outLed, value/4); // sets the read value on outLed (values between from 0 to 255)
}
digitalWrite: Phương thức digitalWrite () đặt giá trị của pin kỹ thuật số là CAO hoặc THẤP. Ở đây, 5V (hoặc 3,3V trên bảng 3,3V) cho CAO, 0V (mặt đất) cho THẤP.
Cú pháp: digitalWrite (pin, val)
Ở đâu,
pin: số pin
val: CAO hoặc THẤP
Mã ví dụ:
int ledPin = 13; // LED connected to digital pin 13
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
digitalWrite
đặt chân đầu ra thành THẤP hoặc CAO (trong đó các điện áp đó phụ thuộc vào V cc của bộ xử lý. Đối với Uno hoặc Mega sẽ là 0V hoặc 5V (hoặc gần với nó).
Dưới đây là ảnh chụp màn hình của DigitalWrite (THẤP):
Đó là, pin đầu ra là 0V.
Bây giờ cho digitalWrite (CAO):
Điện áp đầu ra là 5V.
analogWrite
thực sự nên được đặt tên là PWMwrite vì nó cấu hình bộ định thời của bộ xử lý thành đầu ra PWM (điều chế độ rộng xung).
Hãy thử analogWrite (1):
Bạn có thể thấy rằng mức điện áp là 0V trong hầu hết thời gian và sẽ chuyển sang 5V trong thời gian ngắn. Bạn cũng thấy rằng tần số là 490 Hz, đó là những gì trang tham chiếu cho analogWrite nói rằng nó sẽ là.
Phóng to:
Sản lượng cao cho 8 Lời, chính xác là 1/256 trong số 2048 lượt, đó là khoảng thời gian của bộ đếm thời gian. Vì vậy, chúng tôi có chu kỳ thuế là 1/256 (0,39%).
Hãy thử analogWrite (127) - nửa chừng từ 0 đến 255:
Bây giờ bạn có thể thấy rằng đầu ra CAO chính xác bằng một nửa thời gian và THẤP thời gian còn lại.
Hãy thử analogWrite (254):
Điều này ngược lại với analogWrite (1). Đầu ra luôn luôn CAO trừ một khoảng thời gian ngắn. Phóng to:
Bây giờ đầu ra đã tắt cho 8 Lời nói - so với hình ảnh trước đó, nó được bật cho 8 Lời nói.
analogWrite (0)
cũng giống như digitalWrite (LOW)
.
analogWrite (255)
cũng giống như digitalWrite (HIGH)
.
Điều này được chứng minh bằng mã có liên quan trong hệ thống dây điện_analog.c:
if (val == 0)
{
digitalWrite(pin, LOW);
}
else if (val == 255)
{
digitalWrite(pin, HIGH);
}
analogWrite
về cơ bản cấu hình bộ định thời phần cứng để đầu ra PWM. Khi bạn làm điều đó, phần cứng bộ đếm thời gian sẽ xuất ra chu kỳ nhiệm vụ được yêu cầu (từ 0 đến 255) trong đó 0 luôn tắt, 255 luôn bật và một số giá trị ở giữa cung cấp cho bạn PWM (đầu ra xung).
Để biết thêm thông tin về bộ hẹn giờ, hãy xem trang của tôi về bộ tính giờ .
digitalWrite đặt mã pin thành giá trị cao hoặc thấp vẫn giữ nguyên giá trị đó cho đến khi digitalWrite được gọi lại cho pin đó.
analogWrite đặt chân có giá trị dao động có độ dài xung dựa trên chu kỳ nhiệm vụ được chỉ định làm tham số thứ hai.
Vì thế:
digitalWrite (5, HIGH); // Pin 5 goes high
analogWrite (6, 127); // Pin 6 oscillates regularly between 0v and 5v (or 3.3v) at about 250Hz.
analogWrite ():
Ghi giá trị tương tự (sóng PWM) vào chân. Có thể được sử dụng để chiếu 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. Sau một cuộc gọi đến analogWrite()
, pin sẽ tạo ra một sóng vuông ổn định của chu kỳ nhiệm vụ được chỉ định cho đến khi cuộc gọi tiếp theo đến analogWrite()
(hoặc một cuộc gọi đến digitalRead()
hoặc digitalWrite()
trên cùng một pin). Tần số của tín hiệu PWM trên hầu hết các chân là khoảng 490 Hz. Trên bảng Uno và các bảng tương tự, chân 5 và 6 có tần số xấp xỉ 980 Hz. Các chân 3 và 11 trên Leonardo cũng chạy ở tần số 980 Hz.
Để biết chi tiết, hãy truy cập: https://www.arduino.cc/en/Reference/analogWrite
analogRead ():
Đọc giá trị từ chân analog được chỉ định. Bảng mạch Arduino chứa 6 kênh (8 kênh trên Mini và Nano, 16 trên Mega), bộ chuyển đổi tương tự sang kỹ thuật số 10 bit. Điều này có nghĩa là nó sẽ ánh xạ điện áp đầu vào trong khoảng từ 0 đến 5 volt thành các giá trị nguyên từ 0 đến 1023. Điều này mang lại độ phân giải giữa các giá trị đọc: 5 volt / 1024 đơn vị hoặc, 0,0049 volt (4,9 mV) trên mỗi đơn vị. Phạm vi đầu vào và độ phân giải có thể được thay đổi bằng cách sử dụng analogReference()
.
Để biết chi tiết, hãy truy cập: https://www.arduino.cc/en/Reference/analogRead
digitalWrite đặt chân được chỉ định thành một trong hai trạng thái - CAO / THẤP
Ở đâu, CAO = 5 V và THẤP = 0 V
analogWrite Đặt giá trị PWM của chân PWM
(Trong Arduino UNO, chân PWM là 3, 5, 6, 9, 10, 11)
Nó sẽ đặt chân thành tín hiệu cao / thấp định kỳ.
analogWrite(PWMpin,255)
Sẽ CAO 100% thời gian, trong khi
analogWrite(PWMpin,127)
Sẽ CAO 50% thời gian và THẤP 50% thời gian