Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Langkah-langkah berikut adalah eksperimen untuk menggambarkan cara kerja LED. Mereka menunjukkan cara meredupkan LED pada tingkat yang rata dan cara memudarkannya masuk dan keluar.
Anda akan perlu:
- RaspberryPi (Saya menggunakan Pi yang lebih lama, Pi-3 saya sedang digunakan, tetapi Pi apa pun akan berfungsi.)
- Papan tempat memotong roti
- LED merah 5mm
- 330 Resistor (Tidak kritis 220-560 akan bekerja.)
- Kawat Sambungan
Pi-cobbler yang saya gunakan dari Adafruit tidak diperlukan, tetapi membuat breadboarding lebih mudah.
WiringPi adalah satu set perpustakaan untuk memprogram RaspberryPi di C. Petunjuk untuk mengunduh, menginstal, dan menggunakan terletak di
Untuk menginstal wiringPi ikuti petunjuk di halaman ini:
Untuk mendapatkan daftar nomor pin wiringPi, masukkan gpio readall di baris perintah.
Dalam versi Raspian wiringPi yang lebih baru diinstal secara default.
Langkah 1: Modulasi Lebar Pulsa
LED selalu berjalan pada tegangan yang sama terlepas dari kecerahannya. Kecerahan ditentukan oleh osilator gelombang persegi dan jumlah waktu tegangan tinggi menentukan kecerahan. Ini disebut Pulse Width Modulation (PWM). Ini dikendalikan oleh fungsi wiringPi pwmWrite(pin, n) di mana n memiliki nilai dari 0 hingga 255. Jika n=2, LED akan menjadi dua kali lebih terang dari n=1. Kecerahan selalu berlipat ganda ketika n berlipat ganda. Jadi n=255 akan dua kali lebih terang dari n=128.
Nilai n sering dinyatakan sebagai persentase yang disebut duty cycle. Gambar-gambar menunjukkan jejak osiloskop untuk siklus kerja 25, 50 dan 75%.
Langkah 2: LED dan Resistor
Ini tidak perlu, tetapi memiliki beberapa di antaranya yang berguna dapat membuat papan tempat memotong roti jauh lebih mudah.
Solder resistor ke led pendek LED. Gunakan resistor 220-560 Ohm.
Langkah 3: Peredupan Tidak Merata
Bangun sirkuit seperti pada diagram. Ini seperti rangkaian untuk mengedipkan LED. Ini menggunakan pin wiringPi 1 karena Anda perlu menggunakan pin yang diaktifkan PWM. Kompilasi program dan jalankan. Anda akan melihat bahwa semakin terang LED semakin lambat redupnya. Saat mendekati paling redup, itu akan menjadi lebih redup dengan sangat cepat.
/******************************************************************
* Kompilasi: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade1.c -lwiringPi * * Jalankan: sudo./fade1 * * Semua nomor pin adalah nomor wiringPi kecuali ditentukan lain. ************************************************** ****************/ #include int main() { wiringPiSetup(); // Setup diperlukan oleh wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode(PWM_MODE_MS); // Mode Tandai/Spasi ke i; while(1) { untuk (i = 255; i > -1; i--) { pwmWrite(1, i); penundaan (10); } untuk (i = 0; i < 256; i++) { pwmWrite(1, i); penundaan (10); } } }
Langkah selanjutnya menunjukkan cara meredupkan LED dengan laju konstan, dan dalam satu pernyataan for.
Langkah 4: Langkah 4: Naik dan Turun dalam Satu For(), dan pada Tingkat Genap
Agar LED meredup dengan laju konstan, delay() harus meningkat pada laju eksponensial karena setengah siklus kerja akan selalu menghasilkan setengah kecerahan.
Garis:
int d = (16-i/16)^2;
menghitung kuadrat terbalik dari kecerahan untuk menentukan panjang penundaan. Kompilasi dan jalankan program ini dan Anda akan melihat bahwa LED akan memudar masuk dan keluar dengan kecepatan konstan.
/******************************************************************
* Kompilasi: gcc -o fade1 -Wall -I/usr/local/include -L/usr/local/lib * fade2.c -lwiringPi * * Jalankan: sudo./fade2 * * Semua nomor pin adalah nomor wiringPi kecuali ditentukan lain. ************************************************** ****************/ #include int main() { wiringPiSetup(); // Setup diperlukan oleh wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode(PWM_MODE_MS); // Mode Tandai/Spasi while(1) { int i; int x = 1; for (i = 0; i > -1; i = i + x) { int d = (16-i/16)^2; // hitung kuadrat terbalik dari indeks pwmWrite(1, i); penundaan (d); jika (i == 255) x = -1; // beralih arah di puncak } } }