Daftar Isi:

Jembatan Lilin Berkedip: 6 Langkah (dengan Gambar)
Jembatan Lilin Berkedip: 6 Langkah (dengan Gambar)

Video: Jembatan Lilin Berkedip: 6 Langkah (dengan Gambar)

Video: Jembatan Lilin Berkedip: 6 Langkah (dengan Gambar)
Video: Fokus Ke Mata Merah! @TheMagicMatt5 2024, November
Anonim
Image
Image

Instruksi ini menunjukkan cara mengubah jembatan lilin sederhana dengan cahaya statis menjadi cahaya suasana hati bercahaya yang bagus dengan variasi lampu yang berkedip-kedip, berkelap-kelip, pola gelombang, dan yang lainnya tanpa henti. Saya membeli dari After Christmas Sales sebuah jembatan lilin seharga 8 €. Ini memiliki 7 lampu led dan beberapa adaptor dinding 33 V 3 W. Itu bersinar dengan warna putih cerah dan hangat dan akan sempurna untuk proyek ini, di mana saya akan meletakkan Arduino untuk membuat lilin berkedip. Arduino yang paling populer adalah Arduino Uno. Dalam proyek ini, saya akan menggunakan Arduino Mega 2560.

Saya akan membuang catu daya 30 V dan akan menggunakan bank daya 5 V sederhana yang dimaksudkan untuk ponsel sebagai catu daya.

Hal yang baik untuk diketahui tentang bank daya adalah bahwa mereka memiliki sirkuit dalam, yang mengubah baterai 3,7 V menjadi 5 V. Karena prosesnya menggunakan beberapa daya, bank daya akan menutup sendiri, jika tidak digunakan. Jika bank daya digunakan untuk gadget DIY berbasis Arduino, gadget tidak bisa hanya menempatkan dirinya dalam mode tidur hemat daya dan mulai lagi setelah beberapa menit. Itu akan mematikan bank daya. Jembatan lilin yang berkedip-kedip ini tidak memiliki mode tidur. Menggunakan daya secara konstan, menjaga bank daya tetap aktif, hingga kabel daya dicabut.

Video menunjukkan jembatan lilin dalam mode statis dan berkedip penuh. Kedipan penuh benar-benar sangat mengganggu mata, sementara videonya sedikit menghaluskannya. Setelah perangkat keras diperbaiki, termasuk memotong kabel, menyolder koneksi baru dan menambahkan beberapa komponen, semua pola cahaya yang diinginkan dibuat dengan menulis kode untuk Arduino. Pola yang saya sertakan dalam instruksi ini adalah:

  • 4 lampu berkedip yang berbeda meniru lilin asli
  • 2 kedipan berbeda (berkedip acak dari lampu statis)
  • 2 pola gelombang yang berbeda
  • lampu statis sederhana

Pola peralihan terjadi melalui tombol tekan, elemen antarmuka pengguna tunggal. Semakin banyak pola yang diinginkan dan semakin banyak penyesuaian yang diinginkan, semakin banyak tombol dan kenop yang harus ditambahkan. Tapi keindahannya terletak pada kesederhanaan. Pertahankan jumlah pola yang dapat dipilih. Pilih pengaturan terbaik saat pengkodean dan pengujian, bukan dengan menambahkan banyak kontrol ke perangkat keras.

Perlengkapan

  • 1 jembatan lilin LED dengan 7 lampu. Pastikan itu adalah model DC tegangan rendah, baik dengan baterai atau dengan sumber daya yang dipasang di dinding, yang mengubah AC 110 - 240 V yang mematikan menjadi sekitar 6 - 30 V DC. Jadi sangat aman untuk meretas jembatan lilin.
  • 1 Arduino Mega (mikrokontroler lain akan melakukannya, pastikan Anda dapat memprogramnya)
  • 1 papan tempat memotong roti prototipe
  • kabel jumper dan kabel lainnya
  • alat solder
  • multimeter
  • 7 resistor, 120
  • 1 tombol tekan (saya akan menunjukkan bagaimana Anda dapat menggunakan tombol bawaan pada Arduino sebagai gantinya)
  • IC transistor darlington untuk 7 transistor, ULN2803AP akan berfungsi (Jika Anda menggunakan Arduino Uno atau Meaga, Anda tidak terlalu membutuhkan ini)
  • Bank daya 5 V dimaksudkan untuk ponsel

Langkah 1: Periksa Apa yang Anda Dapatkan

Periksa Apa yang Anda Dapatkan
Periksa Apa yang Anda Dapatkan
Periksa Apa yang Anda Dapatkan
Periksa Apa yang Anda Dapatkan

Cari tahu tegangan apa yang dioperasikan setiap LED dan berapa banyak arus yang mengalir.

  1. Buka bagian bawah jembatan lilin. Temukan dua kabel yang menuju ke satu lilin.
  2. Lepaskan beberapa isolasi dari kabel yang memperlihatkan kabel tembaga tanpa memotong kabel tembaga.
  3. Nyalakan lampu (santai, hanya beberapa volt) dan ukur tegangan pada kabel tembaga yang terbuka.
  4. Potong kabel di salah satu titik pengukuran (pada titik ini lampu padam, tentu saja), lepaskan beberapa insulasi (3 - 4 mm) di kedua ujungnya. Ukur arus yang mengalir. Apa yang Anda lakukan adalah menyambungkan kembali kabel yang dipotong dengan multimeter Anda, membiarkan semua arus mengalir melalui multimeter Anda, yang sekarang memberi tahu Anda jumlah arus.

Bacaan saya

Tegangan lebih dari satu lilin (langkah 3): 3,1 V

Perhatikan bahwa sumber listrik ke jembatan lilin adalah 33 V. Jadi tujuh kali 3,1 V hanya 21,7 V. Pada beberapa lilin harus ada resistor tambahan. Seandainya saya mengukur tegangan lilin itu, pasti tegangannya sekitar 11 V.

Arus yang mengalir saat lilin menyala (langkah 4): 19 mA

Saya akan menyalakan semuanya dengan baterai 5 V 2 A. Untuk lilin, saya perlu menurunkan tegangan dari 5 V ke 3 V. Saya membutuhkan resistor, yang akan menurunkan tegangan 2 V pada arus 19 mA.

2 V / 0,019 A = 105

Daya yang hilang adalah:

2 V * 19 mA = 38 mW

Itu diabaikan. Lebih banyak lagi yang bisa meledakkan resistor itu sendiri. Namun, tanpa resistor 105 saya mungkin akan meledakkan LED. Saya memiliki resistor 100 dan 120. Aku pergi dengan 120. Ini memberi lebih banyak perlindungan.

Pengujian semua 7 lilin dengan 3 V memberikan cahaya terang, kecuali satu lilin, yang hanya memiliki cahaya yang sangat redup, dengan hanya sekitar 0,8 mA yang masuk. Ini adalah lilin saya dengan resistor tambahan. Ternyata lilin lainnya tidak memiliki resistor sama sekali. Lampu LED yang digunakan di lampu gantung hanya dimaksudkan untuk 3 V! Lilin dengan resistor tambahan harus dibuka dengan kekerasan ringan, tetapi tidak ada yang pecah. Resistor ditemukan tepat di bawah LED kecil di dalam bola lilin plastik. Saya harus melepasnya dan menyolder kembali kabelnya. Itu agak berantakan, karena besi solder menghangatkan lem panas, yang telah digunakan untuk perakitan.

Jadi sekarang saya tahu bahwa sumber daya apa pun yang saya gunakan, berapa pun tegangannya, saya harus menurunkan tegangan ke 3 V yang memungkinkan 19 mA mengalir.

Jika saya lebih akrab dengan teknologi LED, saya akan mengenali jenis LED yang digunakan dan saya akan tahu itu membutuhkan 3 V.

Langkah 2: Beberapa Solder

Beberapa Solder
Beberapa Solder
Beberapa Solder
Beberapa Solder

Pada langkah ini saya menghubungkan semua kabel positif (+) dari 5 lilin ke satu kabel. Kemudian saya menambahkan kabel negatif (-) terpisah untuk setiap lilin. Lampu LED hanya menyala ketika '+' dan '-' berjalan ke kanan. Karena Anda hanya memiliki dua ujung kabel yang identik dari setiap lilin, Anda harus menguji mana yang '+' dan mana yang '-'. Untuk ini, Anda memerlukan sumber daya 3 V. Saya memiliki paket baterai kecil termasuk dua baterai AAA. Baterai koin 3 V juga berfungsi dengan baik untuk pengujian.

Jembatan lilin membutuhkan 8 kabel untuk berjalan antara Arduino dan jembatan. Jika Anda menemukan kabel dengan 8 kabel berinsulasi, itu bagus. Satu kawat harus menahan 120 mA, sisanya hanya membawa paling banyak 20 mA. Saya memilih menggunakan 4 kabel double wire, yang kebetulan saya punya.

Gambar pertama menunjukkan bagaimana saya menyiapkan satu kabel umum untuk menghubungkan semua kabel '+' dari lilin. Lepaskan beberapa isolasi kabel umum untuk setiap lilin. Tambahkan sepotong tabung isolasi menyusut (strip kuning pada gambar) untuk setiap sambungan dan letakkan di tempat yang tepat dari kabel umum. Solder kabel '+' dari masing-masing lilin ke sambungannya, tutup sambungan dengan tabung susut dan kecilkan. Tentu saja, pita perekat sederhana juga baik-baik saja, semuanya akan tertutup pada akhirnya.

Gambar kedua menunjukkan kabel '-' yang dibutuhkan setiap lilin. Kabel '+' yang umum langsung menuju pin 5 V Arduino (atau mungkin melalui papan tempat memotong roti). Setiap kabel '-' masuk ke pinnya sendiri dari IC transistor (sekali lagi, mungkin melalui papan tempat memotong roti).

Arduino sering disebut papan prototyping. Papan tempat memotong roti juga merupakan sesuatu yang Anda gunakan dalam prototipe. Apa yang saya jelaskan dalam instruksi ini adalah prototipe. Saya tidak akan mengembangkannya menjadi produk mengkilap yang mewah dengan segala sesuatu yang tersembunyi dalam kotak plastik yang bagus. Mengambilnya dari prototipe ke tingkat berikutnya berarti mengganti papan tempat memotong roti dengan papan sirkuit cetak dan komponen yang disolder dan bahkan mengganti Arduino hanya dengan chip mikrokontroler sederhana (sebenarnya chip tersebut adalah otak Arduino). Dan memasukkan semuanya ke dalam kotak plastik atau di dalam jembatan lilin yang diretas.

Langkah 3: Koneksi

Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi

Tentang Arduinos, diambil dari halaman ini:

  • Total arus maks per pin input/output: 40mA
  • Jumlah arus dari semua pin input/output digabungkan: 200mA

Lilin saya masing-masing menghasilkan 19 mA, ketika ditenagai oleh 3 V. Ada tujuh di antaranya, yang menghasilkan 133 mA. Jadi saya bisa menyalakannya langsung dari pin output. Namun, saya memiliki beberapa IC transistor Darlington cadangan. Jadi saya pikir, kenapa tidak. Sirkuit saya melakukan hal itu dengan cara yang benar: pin data hanya untuk sinyal, bukan untuk daya. Sebagai gantinya saya menggunakan pin 5 V pada Arduino untuk menyalakan lampu LED. Saat pengujian berjalan, laptop saya terhubung ke Arduino. Semuanya ditenagai dari USB laptop, yang memberikan 5 V. Arduino Mega memiliki sekeringnya sendiri, yang berhembus pada 500 mA untuk melindungi komputer. Lilin saya paling banyak menghasilkan 133 mA. Arduino mungkin jauh lebih sedikit. Semuanya berjalan dengan baik, saat ditenagai oleh laptop, jadi menggunakan baterai 5 V yang terhubung ke port USB Arduino baik-baik saja.

Pin data D3 - D9 masuk ke IC ULN2803APGCN. LED beroperasi pada 3 V. Setiap bohlam terhubung ke sumber 5 V dan selanjutnya ke resistor 120. Selanjutnya ke satu saluran IC, yang akhirnya menghubungkan rangkaian ke ground melalui transistor darlington di IC.

Tombol tekan ditambahkan ke sirkuit untuk mengaktifkan beberapa tindakan pengguna. Jembatan lilin dengan demikian dapat memiliki beberapa program yang dapat dipilih pengguna.

Tombol tekan di sirkuit terhubung ke RESET dan GND. Inilah yang dilakukan tombol reset bawaan. Karena saya tidak merangkum semuanya dalam wadah plastik, saya menggunakan tombol reset pada Arduino untuk mengontrol program. Menambahkan tombol sesuai dengan gambar akan berfungsi persis seperti tombol reset papan. Program bekerja dengan mengingat program ringan apa yang digunakan terakhir kali program dijalankan. Dengan demikian, setiap reset akan maju ke program ringan berikutnya.

Foto-foto menunjukkan bagaimana kabel baru keluar dari jembatan, bagaimana saya meletakkan IC transistor dan resistor di papan tempat memotong roti dan bagaimana kabel jumper terhubung ke Arduino Mega. Saya memotong 4 kabel jumper pria-pria menjadi 8 setengah kabel, yang saya solder ke 8 kabel yang keluar dari jembatan lilin. Dengan cara ini saya bisa menempelkan kabel ke papan tempat memotong roti.

Alternatif tanpa transistor

Pada langkah sebelumnya, saya menyiapkan kabel '+' umum untuk lilin dan kabel '-' terpisah, yang melalui IC transistor ke ground. Ketika satu pin data menjadi tinggi, kabel '-' yang sesuai akan terhubung ke ground melalui transistor dan lampu LED.

Menghubungkan kabel '-' langsung ke pin data Arduino juga akan berfungsi, tetapi selalu perhatikan berapa banyak arus yang dapat ditahan oleh pin data! Pendekatan ini akan membutuhkan perubahan dalam program saya. Itu akan membutuhkan pin data menjadi rendah untuk menyalakan lilin. Untuk menggunakan program saya apa adanya, Anda perlu mengganti '+' dan '-' di lilin. Miliki kabel '-' yang sama untuk lilin, yang menuju ke GND di Arduino. Dan kabel terpisah berjalan di antara kabel '+' dari lilin dan pin data Arduino.

Langkah 4: Program Cahaya

Program saya, yang saya presentasikan di langkah selanjutnya, melewati 9 program ringan. Menekan tombol akan mematikan lampu selama satu detik, kemudian program lampu berikut dimulai. Program-program tersebut adalah sebagai berikut:

  1. Berkedip kuat. Lilin berkedip secara acak. Ini terlihat sangat menjengkelkan ketika Anda menatap mereka dari jarak dekat, tetapi mungkin terlihat bagus dari kejauhan dan mungkin di balik jendela loteng yang membeku. Padahal, tetangga Anda mungkin memanggil pemadam kebakaran.
  2. Berkedip lembut. Terlihat sangat bagus. Seperti lilin sungguhan di ruangan tanpa angin.
  3. Berkedip bervariasi. Lilin bergantian dengan mulus antara kedipan kuat dan lembut dalam interval sekitar 30 detik.
  4. Berkedip bervariasi. Seperti #3, tetapi setiap lilin bervariasi dalam kecepatannya sendiri antara 30 detik dan 60 detik.
  5. Berkedip cepat. Lilin bersinar pada tingkat redup statis dan berkelap-kelip secara acak. Rata-rata ada satu kedipan setiap detik.
  6. Berkedip lambat. Seperti # 5, tetapi pada tingkat yang jauh lebih lambat.
  7. Gelombang cepat dari candle tengah atas ke yang lebih rendah.
  8. Gelombang lambat dari candle tengah atas ke yang lebih rendah.
  9. Cahaya terang statis. Saya harus memasukkan ini, tidak ingin menyingkirkan fungsi aslinya.

Langkah 5: Kode

/*

FLICKERING CANDLE BRIDGE */ // Deklarasikan variabel mode untuk menahan status // melalui operasi reset _attribute_((section(".noinit"))) unsigned int mode; // Saat program dimulai setelah reset, bagian // dari memori ini tidak diinisialisasi, tetapi menyimpan nilai // yang dimilikinya sebelum reset. Pertama kali program // dijalankan, ia memegang nilai acak. /* * Kelas lilin menampung semua yang dibutuhkan * untuk menghitung tingkat cahaya untuk * lilin yang berkedip-kedip. */ class candle { private: long maxtime; waktu minimum yang lama; maxlite panjang; mini panjang; rata-rata panjang; origmaxtime panjang; waktu asal yang lama; origmaxlite panjang; origminlit panjang; origmeanlite panjang; waktu deltamaks panjang; waktu deltamin yang panjang; deltamaxlite panjang; deltaminlit panjang; deltameanlit panjang; memanjang; acara panjang; awal yang panjang; sasaran panjang; faktor mengambang; target waktu yang lama; waktu mulai yang lama; delta waktu yang panjang; batal target baru(batal); satu target panjang (batal); publik: candle(long mat, long mit, long mal, long mil, long mel, long eo); level panjangnow(void); void initlfo(deltamat panjang, deltamit panjang, deltamal panjang, deltamil panjang, deltamean panjang, tarif panjang); batal setlfo(batal); }; candle::candle(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; target baru(); } /* * levelnow() mengembalikan tingkat cahaya yang seharusnya dimiliki lilin saat ini. * Fungsi menangani penentuan tingkat cahaya acak baru dan * waktu yang diperlukan untuk mencapai tingkat itu. Perubahannya tidak linier, * tetapi mengikuti kurva sigmoid. Jika bukan waktunya untuk menentukan level * baru, fungsi hanya mengembalikan level cahaya. */ long candle::levelnow(void) { long help, now; mengapung t1, t2; sekarang = mili(); if (sekarang >= targettime) { help = target; target baru(); kembali membantu; } else { //help = target * (millis() - starttime) / deltatime + start * (targettime - millis()) / deltatime; t1 = float(waktu target - sekarang) / deltatime; t2 = 1. - t1; // Ini adalah bantuan perhitungan sigmoid = t1*t1*t1*start + t1*t1*t2*start*3 + t1*t2*t2*target*3 + t2*t2*t2*target; kembali membantu; } } void candle::newtarget(void) { jumlah panjang; jumlah = 0; for (long i = 0; i < evenout; i++) jumlah += onetarget(); mulai = sasaran; target = jumlah / evenout; waktu mulai = mili(); targettime = waktu mulai + acak(mintime, maxtime); deltatime = waktu target - waktu mulai; } lilin panjang::onetarget(void) { if (random(0, 10) lastcheck + 100) { lastcheck = sekarang; /* * Algo untuk kedipan "setelah kecepatan milidetik": * Mulai memeriksa setelah kecepatan / 2 milidetik * Selama periode kecepatan / 2 milidetik, buat * peluang kedipan menjadi 50%. * Jika rate 10000 ms, selama 5000 ms koin * dibalik 50 kali. * 1/50 = 0,02 * Jika random(10000) starttime + rate / 2) { if (random(rate) targettime) mengembalikan lowlite; return (mulai - lowlite) * (targettime - sekarang) / (targettime - starttime) + lowlite; } void twinkler::twink(void) { waktu mulai = milis(); targettime = random(mintime, maxtime) + waktu mulai; mulai = acak(minlite, maxlite); } void setup() { int led; // Baca variabel mode ajaib, yang seharusnya memberi tahu // program ringan apa yang dijalankan terakhir kali, naikkan // dan setel ulang ke nol jika meluap. modus++; modus %= 9; // Ini menangani berapa pun nilainya // saat pertama kali Arduino // menjalankan program ini. /* * CATATAN PENTING * ============== * * Hal penting yang dilakukan program ini adalah mengeluarkan sinyal PWM * ke lampu LED. Di sini saya mengatur pin 3 hingga 9 ke * mode output. Pada Arduino Mega2560, pin ini mengeluarkan * sinyal PWM dengan baik. Jika Anda memiliki Arduino lain, periksa * pin mana (dan berapa banyak) yang dapat Anda gunakan. Anda selalu dapat * menulis ulang kode untuk menggunakan perangkat lunak PWM, jika Arduino * Anda tidak dapat menyediakan cukup pin PWM perangkat keras. * */ 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); // Matikan saja led merah yang mengganggu di lilin Arduino *can[7]; // bersiap untuk menggunakan lilin yang berkelap-kelip, apakah Anda menggunakannya atau tidak *twink[7]; // bersiap untuk menggunakan lilin yang berkelap-kelip… if (mode == 8) { for (int i = 3; i < 10; i++) analogWrite(i, 255); sementara (benar); // Setiap kali program ini berjalan, ia akan masuk ke // loop tak berujung seperti ini, sampai tombol reset // ditekan. } if (mode < 2) // berkedip { long maxtime_; lama mintime_; maxlite_ panjang; panjang minlite_; rata-rata panjang_; panjang genap_; if (mode == 0) { maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; meanlite_ = 128; genap_ = 1; } if (mode == 1) { maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; meanlite_ = 200; genap_ = 1; } for (int i = 0; i < 7; i++) { can = new candle(maxtime_, mintime_, maxlite_, minlite_, meanlite_, even_); } while (true) // Perulangan tak berujung untuk lilin yang berkedip { for (int i = 0; i levelnow()); } } if (mode < 4) // lfo ditambahkan ke kedipan { if (mode == 2) // lfo yang sama (30 s) untuk semua lilin { for (int i = 0; i initlfo(75, 50, 0), 50, 36, 30000); } } if (mode == 3) // memvariasikan lfo:s untuk candle { 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) // Lingkaran tak berujung untuk lilin yang berkedip dengan 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) // lilin berkelap-kelip { 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()); } } // Ombak. // Bagian ini dimulai dengan kurung kurawal saja // untuk memastikan tidak ada nama variabel yang saling bertentangan. // Tidak perlu tanda kurung, tidak perlu memeriksa // nilai mode.{ int lolit = 2; int hilite = 255; int berarti; int ampl; fasedelta mengambang = 2,5; fase mengambang; int memanjang; faktor mengambang; periode panjang; mean = (lolite + hilite) / 2; ampl = hilite - berarti; jika (modus == 6) periode = 1500; periode lain = 3500; faktor = 6.28318530718 / periode; while (true) { fase = phactor * (millis() % periode); elong = mean + ampl * sin(fase); analogWrite(7, memanjang); analogWrite(9, memanjang); fase = faktor * ((milis() + periode / 4) % periode); elong = mean + ampl * sin(fase); analogWrite(3, memanjang); analogWrite(8, memanjang); fase = faktor * ((milis() + periode / 2) % periode); elong = mean + ampl * sin(fase); analogWrite(4, memanjang); analogWrite(5, memanjang); fase = phactor * ((millis() + 3 * periode / 4) % periode); elong = mean + ampl * sin(fase); analogWrite(6, memanjang); } // Saat menghubungkan kabel lilin ke Arduino, // Aku mencampurnya dan tidak pernah mengurutkannya. // Urutan penting untuk membuat pola gelombang, // jadi saya hanya menulis tabel kecil ini untuk saya: // // Candle# di jembatan: 2 3 5 4 7 6 1 // Pin data di Arduino: 3 4 5 6 7 8 9 } } void loop() { // Karena setiap program ringan adalah infinite loop-nya sendiri, // Saya menulis semua loop di bagian begin() // dan tidak meninggalkan apa pun untuk bagian loop() ini. }

Langkah 6: Tentang PWM

Led bersinar terang saat dialiri listrik 3 V. Hanya menggunakan 1,5 V tidak menyala sama sekali. Lampu LED tidak memudar dengan baik dengan tegangan memudar, seperti lampu pijar. Sebaliknya mereka harus dihidupkan dengan tegangan penuh, lalu dimatikan. Ketika ini terjadi 50 kali per detik, mereka bersinar bagus dengan kecerahan 50%, kurang lebih. Jika mereka diizinkan untuk hidup hanya 5 mdtk dan mati 15 mdtk, mereka mungkin bersinar dengan kecerahan 25%. Teknik inilah yang membuat lampu LED dapat diredupkan. Teknik ini disebut modulasi lebar pulsa atau PWM. Mikrokontroler seperti Arduino biasanya memiliki pin data, yang dapat mengirim sinyal on/off. Beberapa pin data memiliki kemampuan bawaan untuk PWM. Tetapi jika tidak ada cukup pin dengan PWM bawaan, biasanya dimungkinkan untuk menggunakan pustaka pemrograman khusus untuk membuat "pin PWM perangkat lunak".

Dalam proyek saya, saya telah menggunakan Arduino Mega2560, yang memiliki PWM perangkat keras pada pin 3 - 9. Jika Anda menggunakan Arduino UNO, Anda hanya memiliki enam pin PWM. Dalam hal ini, jika Anda membutuhkan lilin ke-7 (atau bahkan lebih), saya dapat merekomendasikan perpustakaan PWM perangkat lunak Brett Hagman, yang dapat Anda temukan di sini.

Direkomendasikan: