Mục lục:

RaspberryPi: Làm mờ đèn LED trong và ngoài: 4 bước (có Hình ảnh)
RaspberryPi: Làm mờ đèn LED trong và ngoài: 4 bước (có Hình ảnh)

Video: RaspberryPi: Làm mờ đèn LED trong và ngoài: 4 bước (có Hình ảnh)

Video: RaspberryPi: Làm mờ đèn LED trong và ngoài: 4 bước (có Hình ảnh)
Video: 7.1 : GPIO với Raspberry Pi 4: Bật nguồn Led khi nhấn nủt 2024, Tháng mười hai
Anonim
RaspberryPi: Làm mờ đèn LED trong và ngoài
RaspberryPi: Làm mờ đèn LED trong và ngoài

Các bước sau đây là các thí nghiệm để minh họa cách hoạt động của đèn LED. Họ chỉ ra cách làm mờ đèn LED với tỷ lệ đồng đều và cách làm mờ đèn LED trong và ngoài.

Bạn sẽ cần:

  • RaspberryPi (Tôi đã sử dụng Pi cũ hơn, Pi-3 của tôi đang được sử dụng, nhưng bất kỳ Pi nào cũng sẽ hoạt động.)
  • Breadboard
  • Đèn LED đỏ 5 mm
  • Điện trở 330 Ω (Không quan trọng 220-560 Ω sẽ hoạt động.)
  • Trèo lên dây

Pi-cobbler tôi đã sử dụng từ Adafruit là không cần thiết, nhưng nó giúp việc tạo breadboard dễ dàng hơn.

WiringPi là một bộ thư viện để lập trình RaspberryPi trong C. Instructions để tải xuống, cài đặt và sử dụng có tại

Để cài đặt wiringPi, hãy làm theo hướng dẫn trên trang này:

Để nhận danh sách các số pin wiringPi, hãy nhập gpio readall tại dòng lệnh.

Trong các phiên bản mới hơn của Raspian wiringPi được cài đặt theo mặc định.

Bước 1: Điều chế độ rộng xung

Điều chế độ rộng xung
Điều chế độ rộng xung
Điều chế độ rộng xung
Điều chế độ rộng xung
Điều chế độ rộng xung
Điều chế độ rộng xung

Đèn LED luôn chạy ở cùng một điện áp bất kể độ sáng. Độ sáng được xác định bởi một bộ dao động sóng vuông và khoảng thời gian mà điện áp cao sẽ xác định độ sáng. Đây được gọi là Điều chế độ rộng xung (PWM). Điều này được điều khiển bởi hàm wiringPi pwmWrite (pin, n) trong đó n có giá trị từ 0 đến 255. Nếu n = 2, đèn LED sẽ sáng gấp đôi so với n = 1. Độ sáng luôn tăng gấp đôi khi n tăng gấp đôi. Vậy n = 255 sẽ sáng gấp đôi n = 128.

Giá trị của n thường được biểu thị dưới dạng phần trăm được gọi là chu kỳ nhiệm vụ. Các hình ảnh cho thấy dấu vết của máy hiện sóng cho các chu kỳ nhiệm vụ 25, 50 và 75%.

Bước 2: Đèn LED và Điện trở

LED và điện trở
LED và điện trở

Điều này là không cần thiết, nhưng có một vài thứ tiện dụng này có thể làm cho breadboarding dễ dàng hơn rất nhiều.

Hàn một điện trở vào dây dẫn ngắn của một đèn LED. Sử dụng điện trở 220-560 Ohm.

Bước 3: Làm mờ thậm chí

Làm mờ thậm chí
Làm mờ thậm chí

Xây dựng mạch như trong sơ đồ. Đây cũng giống như mạch nháy đèn LED. Nó sử dụng chân wiringPi 1 vì bạn cần sử dụng chân cắm hỗ trợ PWM. Biên dịch chương trình và chạy nó. Bạn sẽ nhận thấy rằng đèn LED càng sáng thì nó càng mờ đi. Khi nó gần mờ nhất, nó sẽ mờ đi rất nhanh.

/******************************************************************

* Biên dịch: gcc -o fade1 -Wall -I / usr / local / include -L / usr / local / lib * fade1.c -lwiringPi * * Thực hiện: sudo./fade1 * * Tất cả các số pin đều là số wiringPi trừ khi được chỉ định khác. ************************************************** **************** / #include int main () {wiringPiSetup (); // Yêu cầu thiết lập bởi wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Đánh dấu / Chế độ dấu cách int i; while (1) {for (i = 255; i> -1; i--) {pwmWrite (1, i); chậm trễ (10); } for (i = 0; i <256; i ++) {pwmWrite (1, i); chậm trễ (10); }}}

Bước tiếp theo cho thấy cách làm mờ đèn LED với tốc độ không đổi và trong một câu lệnh dành cho.

Bước 4: Bước 4: Lên và Xuống trong Một Cho (), và với Tỷ lệ Chẵn

Để đèn LED mờ với tốc độ không đổi, độ trễ () phải tăng theo cấp số nhân vì một nửa chu kỳ nhiệm vụ sẽ luôn tạo ra một nửa độ sáng.

Dòng:

int d = (16-i / 16) ^ 2;

tính toán bình phương nghịch đảo của độ sáng để xác định độ dài của thời gian trễ. Biên dịch và chạy chương trình này và bạn sẽ thấy rằng đèn LED sẽ mờ dần theo tốc độ không đổi.

/******************************************************************

* Biên dịch: gcc -o fade1 -Wall -I / usr / local / include -L / usr / local / lib * fade2.c -lwiringPi * * Thực hiện: sudo./fade2 * * Tất cả các số pin đều là số wiringPi trừ khi có quy định khác. ************************************************** **************** / #include int main () {wiringPiSetup (); // Yêu cầu thiết lập bởi wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Đánh dấu / Chế độ dấu cách while (1) {int i; int x = 1; for (i = 0; i> -1; i = i + x) {int d = (16-i / 16) ^ 2; // bình phương nghịch đảo calc của index pwmWrite (1, i); sự chậm trễ (d); if (i == 255) x = -1; // chuyển hướng lúc cao điểm}}}

Đề xuất: