Thư giãn. Đừng lo lắng. Các chân này được gọi PWM
và giống như các chân khác, ngoại trừ chúng có "phần thưởng thêm".
Một số sử dụng từ trang web của Arduino :
- Làm mờ đèn LED
- Mô phỏng một đầu ra tương tự. Đầu ra vẫn được chuyển đổi kỹ thuật số từ 0V đến 5V. Tuy nhiên, bộ lọc thông thấp (tụ điện và điện trở) để mô phỏng điện áp tương tự.
- Tạo tín hiệu âm thanh.
- Cung cấp điều khiển tốc độ thay đổi cho động cơ.
- Tạo tín hiệu điều chế, ví dụ để điều khiển đèn LED hồng ngoại cho điều khiển từ xa.
Làm thế nào nó hoạt động:
Các chân PWM được điều khiển bởi bộ định thời trên chip có thể tự động chuyển đổi các chân với tốc độ khoảng 490Hz. "Điều chế độ rộng xung" (PWM) là thời gian pin bật hoặc tắt trong một chu kỳ của tần số đó. Điều này có thể làm mờ một đèn LED bằng cách tạo ảo giác ở độ sáng bằng một nửa so với trước đây, nơi nó thực sự nhấp nháy rất nhanh.
Khi có chu kỳ thuế 25%, đó là vào một lần thời gian. Nếu bạn sử dụng cho đèn LED, nó sẽ xuất hiện khoảng 1/4 dưới dạng sáng [cho hoặc nhận]. (Lưu ý: như một số người chỉ ra rằng điều này không thực sự tỷ lệ thuận nhưng hãy để nó theo cách đơn giản. EX: 25% không phải lúc nào cũng bằng 1/4 độ sáng.)
(Nếu bạn thực sự am hiểu về điện, có lẽ bạn có thể thêm một tụ điện để biến nó thành một đầu ra tương tự.)
Làm thế nào để sử dụng các chân này để đầu ra:
Đầu tiên, bạn cần xác định pin là đầu ra. Sau đó, bạn sử dụng
analogWrite(ledPin, 128);
để bắt đầu nó. Đây ledPin
là chân PWM mà bạn muốn khởi động PWM và 128
nên được thay thế bằng một số giữa 0
và 255
; 0
: 0% duty cycle
(tắt pin hoàn toàn) và 255
: 100% duty cycle
. (bật pin hoàn toàn)
Nguồn: http://www.arduino-tutorials.com/arduino-pwm/
Tại sao tôi không thể bật và tắt đèn thật nhanh trong mã của mình?:
Về mặt kỹ thuật, bạn có thể, tuy nhiên, có một số vấn đề:
- Nó có thể không chính xác như sử dụng các mạch cứng với Arduino
- Nó đơn giản hơn chỉ cần gõ hướng dẫn thay vì có nhiều câu lệnh "nếu"
Sẽ không thực sự tạo ra nhiều sự khác biệt nếu mục đích duy nhất của Arduino là tạo ra tín hiệu PWM. Tuy nhiên, nếu bạn đặt bất kỳ độ trễ nào dài hơn 50 MS trong vòng lặp chính, nó sẽ làm rối loạn thời gian. Với phương pháp phần mềm, bạn sẽ muốn loại bỏ bất kỳ chức năng "trì hoãn" nào vì Arduino chỉ chạy trên một luồng (nó chỉ có thể thực hiện một việc một lúc). Nếu bạn biết những gì bạn đang làm, nó sẽ không tạo ra sự khác biệt lớn như vậy, nhưng nếu bạn có thêm một pin với PWM, bạn sẽ lãng phí thời gian của mình với cách tiếp cận phần mềm.
Như những người khác đã chỉ ra:
Bạn vẫn cần một điện trở cho các mạch của bạn để hạn chế dòng điện và điện áp. Bạn không thể bỏ qua điều này.