Mục lục:

Cầu nến nhấp nháy: 6 bước (có hình ảnh)
Cầu nến nhấp nháy: 6 bước (có hình ảnh)

Video: Cầu nến nhấp nháy: 6 bước (có hình ảnh)

Video: Cầu nến nhấp nháy: 6 bước (có hình ảnh)
Video: SABER effect, Free Plugin ai cũng phải có trên After Effect 2024, Tháng mười một
Anonim
Image
Image

Tài liệu hướng dẫn này chỉ ra cách biến một cây cầu nến đơn giản với ánh sáng tĩnh thành một ánh sáng theo tâm trạng tuyệt đẹp với vô số biến thể của ánh sáng nhấp nháy, lấp lánh, mô hình sóng và những thứ khác. Tôi đã mua từ After Christmas Sales một cây cầu nến với giá 8 €. Nó có 7 đèn led và một số bộ chuyển đổi tường 33 V 3 W. Nó tỏa sáng với màu trắng sáng và ấm áp và sẽ rất hoàn hảo cho dự án này, nơi tôi sẽ đặt một Arduino để làm cho những ngọn nến lung linh. Arduino phổ biến nhất là Arduino Uno. Trong dự án này, tôi sẽ sử dụng Arduino Mega 2560.

Tôi sẽ loại bỏ nguồn điện 30 V và sẽ sử dụng một bộ nguồn 5 V đơn giản dành cho điện thoại di động làm nguồn cung cấp năng lượng.

Một điều tốt cần biết về pin dự phòng là chúng có một mạch điện bên trong, biến đổi pin 3,7 V thành 5 V. Vì quá trình sử dụng một số nguồn điện, pin dự phòng sẽ tự tắt, nếu nó không được sử dụng. Nếu pin dự phòng được sử dụng cho các thiết bị DIY dựa trên Arduino, thì thiết bị không thể tự chuyển sang chế độ ngủ tiết kiệm điện và bắt đầu lại sau vài phút. Điều đó sẽ tắt nguồn điện. Cây cầu nến lung linh này không có chế độ nghỉ. Nó sử dụng nguồn điện liên tục, giữ cho pin dự phòng hoạt động, cho đến khi cáp nguồn được kéo ra.

Video cho thấy cây cầu nến ở chế độ tĩnh và nhấp nháy hoàn toàn. Hiện tượng nhấp nháy hoàn toàn thực sự khá khó chịu cho mắt, trong khi video làm dịu nó đi một chút. Sau khi phần cứng đã được cố định, bao gồm cắt cáp, hàn kết nối mới và thêm một số thành phần, tất cả các mẫu ánh sáng mong muốn được tạo ra bằng cách viết mã cho Arduino. Các mẫu tôi bao gồm trong hướng dẫn này là:

  • 4 ánh sáng nhấp nháy khác nhau mô phỏng những ngọn nến thật
  • 2 ánh sáng lấp lánh khác nhau (nhấp nháy ngẫu nhiên của các đèn tĩnh khác)
  • 2 mẫu sóng khác nhau
  • ánh sáng tĩnh đơn giản

Các mẫu chuyển đổi diễn ra thông qua một nút nhấn, một phần tử giao diện người dùng duy nhất. Người ta muốn càng có nhiều mẫu và càng muốn có nhiều khả năng điều chỉnh, người ta càng phải thêm nhiều nút và nút bấm. Nhưng vẻ đẹp nằm ở sự đơn giản. Giảm số lượng các mẫu có thể chọn. Chọn cài đặt tốt nhất trong khi mã hóa và thử nghiệm, không phải bằng cách thêm nhiều điều khiển vào phần cứng.

Quân nhu

  • 1 cầu nến LED gồm 7 bóng đèn. Đảm bảo rằng đó là kiểu DC điện áp thấp, có pin hoặc với nguồn điện gắn trên tường, có thể biến đổi nguồn điện 110 - 240 V AC chết người thành một số 6 - 30 V DC. Vì vậy, việc hack cầu nến hoàn toàn an toàn.
  • 1 Arduino Mega (bất kỳ vi điều khiển nào khác sẽ làm được, chỉ cần đảm bảo bạn có thể lập trình nó)
  • 1 breadboard tạo mẫu
  • dây nhảy và dây khác
  • công cụ hàn
  • đồng hồ vạn năng
  • 7 điện trở, 120 Ω
  • 1 nút nhấn (Tôi sẽ chỉ cách bạn có thể sử dụng nút tích hợp sẵn trên Arduino thay thế)
  • Một IC bóng bán dẫn darlington cho 7 bóng bán dẫn, ULN2803AP sẽ làm được (Nếu bạn sử dụng Arduino Uno hoặc Meaga, bạn không thực sự cần cái này)
  • Ngân hàng điện 5 V dành cho điện thoại di động

Bước 1: Kiểm tra những gì bạn có

Examin What You Got
Examin What You Got
Examin What You Got
Examin What You Got

Tìm hiểu điện áp mà mỗi đèn LED hoạt động và cường độ dòng điện chạy qua.

  1. Mở đáy của cầu nến. Tìm hai dây đi đến một ngọn nến.
  2. Bóc một số lớp cách điện khỏi dây cáp để lộ dây đồng mà không cắt dây đồng.
  3. Bật đèn (thư giãn, nó chỉ vài vôn) và đo điện áp trên các dây đồng được tiết lộ.
  4. Cắt cáp tại một trong các điểm đo (tất nhiên là lúc này đèn sẽ tắt), cắt bỏ một số lớp cách điện (3 - 4 mm) ở cả hai đầu. Đo dòng điện đi qua. Những gì bạn làm là bạn kết nối lại cáp đã cắt với đồng hồ vạn năng của mình, cho phép tất cả dòng điện chạy qua đồng hồ vạn năng của bạn, đồng hồ này sẽ cho bạn biết lượng dòng điện.

Bài đọc của tôi

Điện áp trên một ngọn nến (bước 3): 3,1 V

Chú ý rằng nguồn điện đến cây cầu nến là 33 V. Vậy bảy lần 3,1 V chỉ 21,7 V. Trên một số cây nến phải có thêm một điện trở. Nếu tôi đo điện áp ngọn nến đó, nó phải là 11 V.

Cường độ dòng điện chạy qua khi thắp nến (bước 4): 19 mA

Tôi sẽ cung cấp năng lượng cho mọi thứ bằng bộ pin 5 V 2 A. Để đèn cầy giảm hiệu điện thế từ 5 V xuống 3 V. Ta cần mắc một điện trở thì nó sẽ giảm hiệu điện thế 2 V với cường độ dòng điện 19 mA.

2 V / 0,019 A = 105 Ω

Công suất tiêu tán là:

2 V * 19 mA = 38 mW

Đó là không đáng kể. Nhiều hơn nữa có thể làm nổ điện trở của chính nó. Tuy nhiên, nếu không có điện trở 105 Ω, tôi có thể làm hỏng đèn LED. Tôi có điện trở 100 Ω và 120 Ω. Tôi đi với 120 Ω. Nó giúp bảo vệ nhiều hơn.

Thử cả 7 ngọn nến có 3 V đều cho ánh sáng rực rỡ, trừ một ngọn nến chỉ sáng rất mờ, chỉ có một số 0,8 mA đi qua. Đây là ngọn nến của tôi với điện trở phụ. Hóa ra những ngọn nến kia hoàn toàn không có điện trở. Đèn LED được sử dụng trong đèn chùm chỉ đơn giản có nghĩa là 3 V! Ngọn nến với điện trở phụ phải được mở bằng cách sử dụng bạo lực nhẹ, nhưng không có gì bị gãy. Điện trở được tìm thấy ngay bên dưới đèn LED nhỏ bên trong bóng đèn nến bằng nhựa. Tôi đã phải phá bỏ nó đi và giải quyết các dây. Nó hơi lộn xộn, vì mỏ hàn làm nóng một số keo nóng, đã được sử dụng để lắp ráp.

Vì vậy, bây giờ tôi biết rằng tôi sử dụng nguồn điện nào, điện áp là gì, tôi phải giảm điện áp xuống 3 V cho phép 19 mA đi qua.

Nếu tôi quen thuộc hơn với công nghệ LED, tôi sẽ nhận ra loại đèn LED được sử dụng và tôi sẽ biết nó cần 3 V.

Bước 2: Một số hàn

Một số hàn
Một số hàn
Một số hàn
Một số hàn

Trong bước này, tôi kết nối tất cả các dây dương (+) từ 5 cây nến vào một dây. Sau đó, tôi thêm một dây âm (-) riêng biệt cho mỗi cây nến. Đèn LED chỉ sáng khi dấu '+' và '-' đi bên phải. Vì bạn chỉ có hai đầu cáp giống nhau từ mỗi ngọn nến, bạn phải kiểm tra xem cái nào là '+' và đầu nào là '-'. Đối với điều này, bạn cần một nguồn điện 3 V. Tôi có một gói pin nhỏ bao gồm hai pin AAA. Pin đồng xu 3 V cũng hoạt động tốt để thử nghiệm.

Cây cầu nến cần 8 dây cáp để chạy giữa Arduino và cây cầu. Nếu bạn tìm thấy một sợi cáp có 8 dây cách điện, điều đó thật tuyệt. Một dây phải chứa 120 mA, dây còn lại nhiều nhất chỉ mang 20 mA. Tôi đã chọn sử dụng cáp 4 dây đôi, mà tôi tình cờ có.

Hình ảnh đầu tiên cho thấy cách tôi chuẩn bị một dây chung để kết nối tất cả các dây '+' từ các ngọn nến. Tách một số lớp cách điện của dây chung cho mỗi ngọn nến. Thêm một đoạn ống cách điện co lại (dải màu vàng trong hình ảnh) cho mỗi mối nối và đặt nó vào đúng vị trí của cáp chung. Hàn dây '+' từ mỗi ngọn nến vào khớp của nó, đậy khớp bằng ống co lại và thu nhỏ nó lại. Tất nhiên, băng dính đơn giản cũng được, cuối cùng mọi thứ sẽ được che đậy.

Hình ảnh thứ hai cho thấy các dây '-' mà mỗi cây nến cần. Dây '+' chung đi trực tiếp vào chân 5 V của Arduino (hoặc có thể thông qua bảng mạch). Mỗi dây '-' đi đến chân riêng của IC bóng bán dẫn (một lần nữa, có thể là qua bảng mạch).

Arduino thường được gọi là bảng tạo mẫu. Một breadboard cũng là thứ bạn sử dụng trong các nguyên mẫu. Những gì tôi mô tả trong hướng dẫn này là một nguyên mẫu. Tôi sẽ không phát triển nó thành một sản phẩm sáng bóng sang trọng với mọi thứ được giấu trong những chiếc hộp nhựa đẹp mắt. Đưa nó từ nguyên mẫu lên cấp độ tiếp theo có nghĩa là thay thế bảng mạch bằng bảng mạch in và các thành phần được hàn và thậm chí thay thế Arduino chỉ bằng một chip vi điều khiển đơn giản (thực ra chip như vậy là bộ não của Arduino). Và để mọi thứ nằm gọn trong hộp nhựa hoặc bên trong cây cầu nến bị hack.

Bước 3: Kết nối

Các kết nối
Các kết nối
Các kết nối
Các kết nối
Các kết nối
Các kết nối
Các kết nối
Các kết nối

Giới thiệu về Arduinos, lấy từ trang này:

  • Tổng dòng điện tối đa trên mỗi chân đầu vào / đầu ra: 40mA
  • Tổng dòng ra của tất cả các chân đầu vào / đầu ra kết hợp: 200mA

Các cây nến của tôi hút 19 mA mỗi cây, khi được cấp điện bằng 3 V. Có bảy ngọn nến trong số chúng tạo ra 133 mA. Vì vậy, tôi có thể cấp nguồn cho chúng trực tiếp từ các chân đầu ra. Tuy nhiên, tôi có một số IC bóng bán dẫn darlington dự phòng. Vì vậy, tôi nghĩ, tại sao không. Mạch của tôi hoạt động theo cách thích hợp: chân dữ liệu chỉ dành cho tín hiệu, không phải cho nguồn. Thay vào đó, tôi sử dụng chân 5 V trên Arduino để cấp nguồn cho đèn LED. Khi chạy thử nghiệm, tôi đã kết nối máy tính xách tay của mình với Arduino. Mọi thứ đều được cấp nguồn từ USB của máy tính xách tay, cho ra 5 V. Arduino Mega có một cầu chì riêng, thổi ở 500 mA để bảo vệ máy tính. Nến của tôi vẽ tối đa 133 mA. Arduino có lẽ ít hơn nhiều. Mọi thứ chạy tốt, khi được cấp nguồn bởi máy tính xách tay, vì vậy sử dụng bộ pin 5 V kết nối với cổng USB của Arduino là ổn.

Các chân dữ liệu D3 - D9 đi đến IC ULN2803APGCN. Các đèn LED hoạt động trên 3 V. Mỗi bóng đèn được kết nối với nguồn 5 V và xa hơn với một điện trở 120 Ω. Xa hơn đến một kênh của IC, cuối cùng kết nối mạch với mặt đất thông qua một bóng bán dẫn darlington trong IC.

Một nút nhấn được thêm vào mạch để cho phép một số hành động của người dùng. Do đó, cầu nến có thể có một vài chương trình do người dùng lựa chọn.

Nút nhấn trong mạch được kết nối với RESET và GND. Đây chính xác là những gì mà nút đặt lại được tích hợp sẵn làm. Vì tôi không gói gọn mọi thứ trong một hộp nhựa, nên tôi đang sử dụng nút đặt lại trên Arduino để điều khiển chương trình. Thêm một nút theo hình ảnh sẽ hoạt động giống hệt như nút đặt lại bo mạch. Chương trình hoạt động bằng cách ghi nhớ chương trình ánh sáng nào đã được sử dụng vào lần cuối chương trình chạy. Như vậy, mỗi lần đặt lại sẽ chuyển sang chương trình ánh sáng tiếp theo.

Các bức ảnh cho thấy cách các dây cáp mới ra khỏi cầu, cách tôi đặt IC bóng bán dẫn và điện trở trên breadboard và cách các dây jumper kết nối với Arduino Mega. Tôi cắt 4 dây nam-nam thành 8 nửa dây, tôi hàn vào 8 dây cáp đi ra khỏi cầu nến. Bằng cách này, tôi có thể gắn các dây cáp vào breadboard.

Thay thế không có bóng bán dẫn

Ở bước trước, tôi đã chuẩn bị một dây '+' chung cho nến và dây '-' riêng, đi qua IC bóng bán dẫn xuống đất. Khi một chân dữ liệu lên cao, dây '-' tương ứng sẽ được nối đất thông qua bóng bán dẫn của nó và đèn LED.

Kết nối trực tiếp dây '-' với các chân dữ liệu của Arduino cũng sẽ hoạt động, nhưng hãy luôn lưu ý đến dòng điện mà các chân dữ liệu có thể chịu được! Cách tiếp cận này sẽ cần một sự thay đổi trong chương trình của tôi. Nó sẽ cần các chân dữ liệu xuống thấp để bật nến. Để sử dụng chương trình của tôi như hiện tại, bạn cần chuyển đổi '+' và '-' trong nến. Có một dây '-' chung cho các ngọn nến, đi đến GND trên Arduino. Và các dây riêng biệt chạy giữa dây '+' của nến và chân dữ liệu của Arduino.

Bước 4: Các chương trình nhẹ

Chương trình của tôi mà tôi trình bày ở bước tiếp theo trải qua 9 chương trình ánh sáng. Nhấn nút sẽ làm tắt đèn trong một giây, sau đó chương trình đèn sau bắt đầu. Các chương trình như sau:

  1. Nhấp nháy mạnh. Những ngọn nến nhấp nháy ngẫu nhiên. Điều này trông rất khó chịu khi bạn nhìn chằm chằm vào chúng từ khoảng cách gần, nhưng có thể nhìn tốt từ xa và có lẽ đằng sau cửa sổ gác mái lạnh giá. Mặc dù vậy, hàng xóm của bạn có thể gọi đội cứu hỏa.
  2. Chập chờn nhẹ nhàng. Nhìn rất tốt. Giống như những ngọn nến thật trong một căn phòng không có gió lùa.
  3. Chập chờn thay đổi. Các ngọn nến xen kẽ nhịp nhàng giữa nhấp nháy mạnh và nhấp nháy nhẹ trong khoảng thời gian 30 giây.
  4. Chập chờn thay đổi. Giống như # 3, nhưng mỗi ngọn nến thay đổi theo tốc độ riêng của nó trong khoảng từ 30 giây đến 60 giây.
  5. Nhanh chóng lấp lánh. Các ngọn nến tỏa sáng ở mức độ mờ tĩnh và lấp lánh ngẫu nhiên. Trung bình có một lần lấp lánh mỗi giây.
  6. Lấp lánh chậm. Giống như # 5, nhưng với tốc độ chậm hơn nhiều.
  7. Sóng nhanh từ nến giữa đỉnh xuống những nến thấp hơn.
  8. Sóng chậm từ nến trên cùng ở giữa đến những nến thấp hơn.
  9. Đèn sáng tĩnh. Tôi đã phải bao gồm điều này, không muốn loại bỏ chức năng ban đầu.

Bước 5: Mã

/*

CẦU THANG KÈM HOA * / // Khai báo biến mode để giữ trạng thái // thông qua thao tác reset _attribute _ ((section (". Noinit"))) unsigned int mode; // Khi chương trình bắt đầu sau khi đặt lại, đoạn // bộ nhớ này không được khởi tạo mà giữ giá trị // mà nó có trước khi đặt lại. Lần đầu tiên // chương trình được chạy, nó giữ một giá trị ngẫu nhiên. / * * Lớp nến chứa mọi thứ cần thiết * để tính mức độ ánh sáng cho * ngọn nến lung linh. * / class nến {private: long maxtime; thời gian dài; maxlite dài; minlite dài; dài bình thường; origmaxtime dài; origmintime dài; origmaxlite dài; origminlite dài; origmeanlite dài; deltamaxtime dài; deltamintime dài; deltamaxlite dài; deltaminlite dài; deltameanlite dài; long lanh; giao thừa dài; khởi đầu dài; mục tiêu dài hạn; phactor phao; mục tiêu lâu dài; thời gian bắt đầu dài; deltatime dài; void newtarget (void); onetarget dài (void); công: nến (long mat, long mit, long mal, long mil, long mel, long eo); long levelnow (void); void initlfo (long deltamat, long deltamit, long deltamal, long deltamil, long deltamean, long rate); void setlfo (vô hiệu); }; nến:: ngọn nến (long mat, long mit, long mal, long mil, long mel, long eo): maxtime (mat), mintime (mit), maxlite (mal), minlite (mil), meanlite (mel), evenout (eo), origmaxtime (mat), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () trả về mức ánh sáng mà ngọn nến phải có ngay bây giờ. * Hàm đảm nhận việc xác định mức độ sáng ngẫu nhiên mới và * thời gian cần thiết để đạt được mức đó. Sự thay đổi không phải là tuyến tính, * mà theo một đường cong sigmoid. Khi chưa đến lúc xác định mức * mới, hàm chỉ trả về mức sáng. * / long Candle:: levelnow (void) {giúp tôi với, bây giờ; float t1, t2; bây giờ = millis (); if (now> = targettime) {help = target; newtarget (); trả lại sự giúp đỡ; } else {// help = target * (millis () - starttime) / deltatime + start * (targettime - millis ()) / deltatime; t1 = float (targettime - now) / deltatime; t2 = 1. - t1; // Đây là trợ giúp tính toán sigmoid = t1 * t1 * t1 * start + t1 * t1 * t2 * start * 3 + t1 * t2 * t2 * target * 3 + t2 * t2 * t2 * target; trả lại sự giúp đỡ; }} void nến:: newtarget (void) {long sum; tổng = 0; for (long i = 0; i <evenout; i ++) sum + = onetarget (); start = target; target = sum / evenout; starttime = millis (); targettime = starttime + random (thời gian đúc, thời gian tối đa); deltatime = targettime - thời gian bắt đầu; } nến dài:: onetarget (void) {if (random (0, 10) lastcheck + 100) {lastcheck = now; / * * Thuật ngữ lấp lánh "sau tốc độ mili giây": * Bắt đầu kiểm tra sau tốc độ / 2 mili giây * Trong khoảng thời gian tốc độ / 2 mili giây, hãy đặt * cơ hội lấp lánh là 50%. * Nếu tốc độ là 10000 ms, trong 5000 ms, đồng xu được * lật 50 lần. * 1/50 = 0.02 * If random (10000) starttime + rate / 2) {if (random (rate) targettime) return lowlite; return (start - lowlite) * (targettime - now) / (targettime - starttime) + lowlite; } void twinkler:: twink (void) {starttime = millis (); targettime = ngẫu nhiên (thời gian đúc, thời gian tối đa) + thời gian bắt đầu; start = random (minlite, maxlite); } void setup () {int led; // Đọc biến chế độ ma thuật, biến này sẽ cho // biết chương trình ánh sáng nào đã được chạy lần trước, tăng nó lên // và đặt lại về 0 nếu bị tràn. chế độ ++; chế độ% = 9; // Điều này sẽ quan tâm đến bất kỳ giá trị nào // là lần đầu tiên Arduino // chạy chương trình này. / * * LƯU Ý QUAN TRỌNG * ============== * * Điều cần thiết mà chương trình này làm là xuất tín hiệu PWM * tới đèn LED. Ở đây tôi đặt các chân 3 đến 9 thành chế độ đầu ra *. Trên Arduino Mega2560, các chân này xuất ra tín hiệu PWM * độc đáo. Nếu bạn có một Arduino khác, hãy kiểm tra * bạn có thể sử dụng chân nào (và bao nhiêu chân). Bạn luôn có thể * viết lại mã để sử dụng PWM phần mềm, nếu Arduino * của bạn không thể cung cấp đủ chân PWM phần cứng. * * / pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (9, OUTPUT); pinMode (LED_BUILTIN, OUTPUT); analogWrite (LED_BUILTIN, 0); // Chỉ cần tắt đèn led đỏ khó chịu trên ngọn nến Arduino * can [7]; // chuẩn bị sử dụng những ngọn nến lung linh, dù bạn có sử dụng chúng hay không twinkler * twink [7]; // chuẩn bị sử dụng những ngọn nến lấp lánh… if (mode == 8) {for (int i = 3; i <10; i ++) analogWrite (i, 255); while (đúng); // Mỗi lần chương trình này chạy, nó đi vào // loại vòng lặp vô tận, cho đến khi nút // reset được nhấn. } if (mode <2) // chập chờn {long maxtime_; thời gian dài_; maxlite_ dài; long minlite_; dài meanlite_; dài chẵn_; if (mode == 0) {maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; meanlite_ = 128; chẵn_ = 1; } if (mode == 1) {maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; meanlite_ = 200; chẵn_ = 1; } for (int i = 0; i <7; i ++) {can = new Candles (maxtime_, mintime_, maxlite_, minlite_, meanlite_, Even_); } while (true) // Vòng lặp vô tận cho những ngọn nến lung linh {for (int i = 0; i levelnow ()); }} if (mode <4) // thêm lfo vào nhấp nháy {if (mode == 2) // cùng lfo (30 s) cho tất cả nến {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 30000);}} if (mode == 3) // thay đổi lfo: s cho các ngọn nến {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); can [1] -> initlfo (75, 50, 0, 50, 36, 25000); can [2] -> initlfo (75, 50, 0, 50, 36, 30000); can [3] -> initlfo (75, 50, 0, 50, 36, 35000); can [4] -> initlfo (75, 40, 0, 50, 36, 40000); can [5] -> initlfo (75, 30, 0, 50, 26, 45000); can [6] -> initlfo (75, 20, 0, 50, 16, 50000); can [7] -> initlfo (75, 10, 0, 50, 6, 55000);} while (true) // Vòng lặp vô tận cho những ngọn nến lung linh với lfo {long lastclock = 0; for (int i = 0; i levelnow ()); if (millis ()> lastclock + 4000) {lastclock = millis (); for (int i = 0; i setlfo ();}}} if (mode <6) // những ngọn nến lấp lánh {int speedo; if (mode == 4) speedo = 6000; else speedo = 22000; for (int i = 0; i <7; i ++) twink = new twinkler (300, 295, 255, 250, speedo); while (true) {for (int i = 0; i levelnow ()); } } // Sóng. // Phần này bắt đầu bằng dấu ngoặc nhọn chỉ // để đảm bảo không có tên biến xung đột. // Không cần dấu ngoặc khác, không cần kiểm tra // giá trị của mode.{int lolite = 2; int hilite = 255; int nghĩa là; int ampl; float fasedelta = 2,5; phao câu; int elong; phactor phao; thời kỳ dài; trung bình = (lolite + hilite) / 2; ampl = hilite - nghĩa là; if (mode == 6) period = 1500; kỳ khác = 3500; phactor = 6.28318530718 / kỳ; while (true) {fase = phactor * (millis ()% dấu chấm); elong = mean + ampl * sin (fase); analogWrite (7, dài); analogWrite (9, dài); fase = phactor * ((millis () + period / 4)% period); elong = mean + ampl * sin (fase); analogWrite (3, dài); analogWrite (8, dài); fase = phactor * ((millis () + period / 2)% period); elong = mean + ampl * sin (fase); analogWrite (4, dài); analogWrite (5, dài); fase = phactor * ((millis () + 3 * period / 4)% period); elong = mean + ampl * sin (fase); analogWrite (6, dài); } // Trong khi kết nối các dây nến với Arduino, // Tôi đã trộn chúng và không bao giờ có thứ tự. // Thứ tự rất quan trọng để tạo các mẫu sóng, // vì vậy tôi chỉ viết bảng nhỏ này cho tôi: // // # nến trong cầu: 2 3 5 4 7 6 1 // Chân dữ liệu trên Arduino: 3 4 5 6 7 8 9}} void loop () {// Vì mọi chương trình light đều là vòng lặp vô hạn của riêng nó, // Tôi đã viết tất cả các vòng lặp trong phần begin () // và không để lại gì cho phần loop () này. }

Bước 6: Giới thiệu về PWM

Đèn led sáng khi được cấp nguồn 3 V. Chỉ sử dụng 1,5 V, chúng hoàn toàn không sáng. Đèn LED không mờ đi một cách độc đáo với hiệu điện thế mờ dần, giống như đèn sợi đốt. Thay vào đó, chúng phải được bật với điện áp đầy đủ, sau đó tắt. Khi điều này xảy ra 50 lần mỗi giây, chúng sẽ tỏa sáng đẹp với độ sáng 50%, nhiều hơn hoặc ít hơn. Nếu chúng chỉ được phép ở mức 5 ms và tắt 15 ms, chúng có thể tỏa sáng với độ sáng 25%. Kỹ thuật này là những gì làm cho ánh sáng LED có thể điều chỉnh độ sáng. Kỹ thuật này được gọi là điều chế độ rộng xung hoặc PWM. Một bộ vi điều khiển như Arduino thường có các chân dữ liệu, có thể gửi tín hiệu bật / tắt. Một số chân dữ liệu đã được tích hợp các khả năng cho PWM. Nhưng nếu không có đủ chân với PWM tích hợp, thông thường có thể sử dụng các thư viện lập trình chuyên dụng để tạo "chân PWM phần mềm".

Trong dự án của mình, tôi đã sử dụng Arduino Mega2560, có PWM phần cứng trên các chân 3 - 9. Nếu bạn sử dụng Arduino UNO, bạn chỉ có sáu chân PWM. Trong trường hợp đó, nếu bạn cần nến thứ 7 (hoặc thậm chí nhiều hơn), tôi có thể giới thiệu thư viện PWM phần mềm của Brett Hagman, bạn có thể tìm thấy tại đây.

Đề xuất: