Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Peredupan Lampu dengan PWM menggunakan Tombol Tekan

Komponen dan persediaan

Arduino Mega 2560
× 1
Breadboard (generik)
× 1
Kabel jumper (generik)
Jumlah yang Anda gunakan mungkin berbeda, tergantung metode yang digunakan.
× 11
LED (generik)
Warna apa pun boleh digunakan, tetapi saya merekomendasikan 3 warna berbeda.
× 3
Sakelar Tombol Tekan SparkFun 12mm
× 1
Resistor 330 ohm
× 4

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Proyek ini menunjukkan cara memudarkan LED (Light-emitting diodes) menggunakan Arduino. Ini dibagi menjadi 3 bagian:

  • Lampu Memudar
  • Memudar Lampu dengan Tombol Tekan
  • Pudar Lampu dengan tombol ( peningkatan untuk menunda )

Lampu Pudar:

Di akhir bagian ini, proyek Anda akan terlihat seperti ini.

Seperti yang Anda lihat, lampu bersinar lebih terang, kemudian secara bertahap meredup lagi sesuai urutan lampu lalu lintas. Sekarang, mari kita mulai.

Skema:

Seperti yang Anda lihat, LED terhubung ke pin 3, 6 dan 9. Anda dapat menghubungkan LED ke pin mana pun yang Anda suka, tetapi Anda harus ingat untuk mengubahnya dalam kode setelahnya.

Kode:

Untuk memulai, tambahkan ini ke kode Anda. Ini menunjukkan komponen mana, dalam hal ini, LED mana yang masuk ke pin mana.

int ledMerah =9;int ledKuning =6;int ledHijau =3; 

Sekarang, di pengaturan kosong() fungsi, nyatakan apakah pin adalah Input atau Output.

pengaturan batal() { pinMode(ledRed, OUTPUT); pinMode(ledKuning, OUTPUT); pinMode(ledGreen, OUTPUT);} 

Terakhir, tambahkan yang berikut ke void loop() fungsi. Ini memberi tahu MCU apa yang harus dilakukan.

void loop() { // Ini hanya memudarkan lampu merah - ledRed //ledRed for (int i=0; i<=255; i++) { analogWrite(ledRed, i); penundaan (30); } for (int i=255; i>=0; i--) { analogWrite(ledRed, i); penundaan (30); }} 

Apa yang terjadi di sini, apakah MCU sedang memeriksa apakah bilangan bulat 'i' lebih rendah dari 255 atau tidak. Jika ya, nilai 'i' meningkat satu. Prosesnya tertunda 30 milidetik, lalu dimulai ulang. Setelah nilai 'i' sama dengan atau lebih tinggi dari 255, dikurangi satu setiap kali diperiksa. Ketika nilainya telah mencapai 0, proses dilakukan lagi.

Namun, jika Anda ingin mengubah waktu yang diperlukan untuk memudar, Anda harus mengubah semua delay() fungsi ke jumlah yang Anda inginkan. Itu sangat tidak efisien. Untuk mempermudah dan mempercepat saat ingin mengubah delay() kali, tambahkan ini ke awal kode Anda.

const int fade =30; 

Apa yang dilakukannya adalah menetapkan nilai default, dalam hal ini, ini adalah waktu default. Sekarang, ubah setiap delay() nilai menjadi (memudar) . Anda dapat menamakannya sesuatu yang lain jika Anda mau. Akibatnya penundaan() . Anda fungsi akan terlihat seperti ini.

delay (pudar); 

Dan kodenya akan terlihat seperti:

int ledRed =9;int ledYellow =6;int ledGreen =3;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode(ledKuning, OUTPUT); pinMode(ledGreen, OUTPUT);}void loop() { //ledRed for (int i =0; i <=255; i++) { analogWrite(ledRed, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledRed, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); } //ledGreen for (int i =0; i <=255; i++) { analogWrite(ledGreen, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledGreen, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); }} 

Pudarkan Lampu dengan Tombol Tekan:

Setelah bagian ini, Anda akan dapat menambahkan tombol ke proyek Anda.

Seperti yang Anda lihat, LED hanya berubah setelah saya menekan tombol. Sekarang, mari kita mulai.

Skema:

Anda mungkin telah memperhatikan bahwa semua LED disimpan di tempat yang sama, tetapi ada tambahan tombol tekan.

Kode:

Pertama, kita perlu memberi tahu MCU apa pin tombol yang telah terhubung. Untuk melakukannya, tambahkan ini ke awal kode Anda.

tombol int =7;  

Sekarang, di void setup() fungsi, tambahkan ini untuk memberi tahu MCU apakah tombolnya adalah Input atau Output.

pinMode(tombol, INPUT); 

Tambahkan juga ini ke fungsi.

 digitalWrite(ledRed, LOW); digitalWrite(ledKuning, RENDAH); digitalWrite(ledGreen, HIGH); 

Ini menetapkan lampu awal. Kali ini, LED awal berwarna hijau tetapi Anda dapat mengubahnya menjadi merah atau kuning jika Anda mau.

Sekarang, ada perubahan besar di void loop() fungsi. Semua yang ada di loop() sekarang telah digantikan oleh fungsi bernama fadeLights() (namanya bisa kalau beda kalau mau). Di loop() sekarang seharusnya:

void loop() { if(digitalRead(button) ==HIGH) { delay(15); // software debounce if(digitalRead(button) ==HIGH){ // jika tombol ditekan, fungsi fadeLights(); // fadeLights disebut } } else { digitalWrite(ledRed, LOW); // jika tombol tidak ditekan, LED hijau adalah digitalWrite(ledYellow, LOW); // akan aktif dan yang lainnya tidak. digitalWrite(LEDHijau, TINGGI); }} 

Seperti disebutkan sebelumnya, void fadeLights() fungsi akan memiliki apa yang ada di loop.

void fadeLights(){ for (int i =255; i>=0; i--) { //mulai dengan warna hijau sehingga perlu membuat warna hijau fade analogWrite(ledGreen, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); } //ledRed for (int i =0; i <=255; i++) { analogWrite(ledRed, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledRed, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); } //ledGreen for (int i =0; i <=255; i++) { analogWrite(ledGreen, i); tunda (pudar); } } 

Jika proyek Anda berfungsi seperti yang ada di video, Anda telah melakukannya dengan benar. Jika urutannya salah, periksa:

  • jika kode Anda telah ditulis dengan benar
  • jika Anda telah menghubungkan LED ke pin yang benar

Dan jika lampu Anda tidak menyala, periksa

  • jika Anda telah menghubungkan LED ke pin yang benar
  • jika Anda telah menghubungkan kabel dengan benar
  • jika rumus sudah ditulis dengan benar

Fade Lights dengan tombol (peningkatan untuk menunda):

Seperti yang mungkin Anda perhatikan, ketika saya melepaskan tombol, lampu terus memudar. Setelah bagian ini, Anda akan dapat mengedit kode Anda sehingga LED hanya memudar saat tombol ditekan.

Seperti yang Anda lihat di sini, ketika saya melepaskan tombol, LED kembali ke urutan default:

Merah - NONAKTIF

Kuning - NONAKTIF

Hijau - AKTIF

Skema:

Skema tetap sama, karena kami tidak menambahkan komponen lagi atau ingin melakukan sesuatu yang berbeda - kami masih ingin LED memudar.

Kode:

Kami tidak menambahkan hal-hal lagi sehingga tidak perlu menambahkan apa pun di awal. Namun, karena kami mengubah penundaan, kami harus menghapusnya.

const int fade =10; // tidak perlu lagi 

Tidak ada yang berubah untuk setup() fungsi. Di loop kosong() , kita perlu menambahkan else pernyataan.

void loop() { if(digitalRead(button) ==HIGH) { delay(15); if(digitalRead(tombol) ==TINGGI){ fadeLights(); } } else { // tambahkan di sini digitalWrite(ledRed, LOW); digitalWrite(ledKuning, RENDAH); digitalWrite(LEDHijau, TINGGI); }}  

Ini berarti ketika tombol tidak ditekan, program akan keluar fadeLights() dan pergi ke lain pernyataan yang memiliki urutan LED default. Berbeda dengan sebelumnya - sebelumnya, tombol tidak dicentang sekali fadeLights() telah dipanggil.

Sekarang, ubah semua delay() berfungsi untuk ini:

for( int y =0; y <1000; y++){ // jika tombol dilepaskan if (digitalRead(button) ==LOW) { return; } 

Di setiap loop, mikroprosesor akan memeriksa tombol. Jika dirilis, kembali perintah akan dipanggil untuk menghentikan fadeLights() . Dari perkiraan saya, ketika setiap for loop dijalankan, mungkin diperlukan waktu sekitar 10 mikrodetik yang berarti kita perlu melakukannya berkali-kali untuk mencapai kecepatan yang kita inginkan.

Semoga Anda menikmati tutorial ini dan semoga berhasil dengan proyek Anda.

Kode

  • Lampu Memudar
  • Memudar Lampu dengan Tombol Tekan
  • Memudar Lampu dengan Tombol Tekan (peningkatan untuk penundaan)
Lampu PudarArduino
int ledRed =9;int ledYellow =6;int ledGreen =3;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode(ledKuning, OUTPUT); pinMode(ledGreen, OUTPUT);}void loop() { //ledRed for (int i =0; i <=255; i++) { analogWrite(ledRed, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledRed, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); } //ledGreen for (int i =0; i <=255; i++) { analogWrite(ledGreen, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledGreen, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); }}
Memudar Lampu dengan Tombol TekanArduino
int ledRed =9;int ledYellow =6;int ledGreen =3;int tombol =7;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode(ledKuning, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(tombol, INPUT); digitalWrite(ledRed, RENDAH); digitalWrite(ledKuning, RENDAH); digitalWrite(ledGreen, HIGH);}void loop() { if (digitalRead(button) ==HIGH) { delay(15); if (digitalRead(button) ==HIGH) { fadeLights(); } } else { digitalWrite(ledRed, LOW); digitalWrite(ledKuning, RENDAH); digitalWrite(LEDHijau, TINGGI); }}void fadeLights() { for (int i =255; i>=0; i--) { analogWrite(ledGreen, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); } //ledRed for (int i =0; i <=255; i++) { analogWrite(ledRed, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledRed, i); tunda (pudar); } //ledKuning untuk (int i =0; i <=255; i++) { analogWrite(ledKuning, i); tunda (pudar); } for (int i =255; i>=0; i--) { analogWrite(ledYellow, i); tunda (pudar); } //ledGreen for (int i =0; i <=255; i++) { analogWrite(ledGreen, i); tunda (pudar); }}
Memudar Lampu dengan Tombol Tekan (perbaikan untuk menunda)Arduino
int ledRed =9;int ledYellow =6;int ledGreen =3;int tombol =7;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode(ledKuning, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(tombol, INPUT); digitalWrite(ledRed, RENDAH); digitalWrite(ledKuning, RENDAH); digitalWrite(ledGreen, HIGH);}void loop() { if(digitalRead(button) ==HIGH) { delay(15); if(digitalRead(tombol) ==TINGGI){ fadeLights(); } } else { digitalWrite(ledRed, LOW); digitalWrite(ledKuning, RENDAH); digitalWrite(LEDHijau, TINGGI); }} void fadeLights(){ for( int i=255; i>=0; i--) { analogWrite(ledGreen, i); for( int y =0; y <1000; y++){ // jika tombol dilepas if (digitalRead(button) ==LOW) { return; } } } //ledKuning untuk( int i=0; i<=255; i++) { analogWrite(ledKuning, i); for( int y =0; y <400; y++){ // jika tombol dilepas if (digitalRead(button) ==LOW) { return; } } } untuk( int i=255; i>=0; i--) { analogWrite(ledKuning, i); for( int y =0; y <400; y++){ // jika tombol dilepas if (digitalRead(button) ==LOW) { return; } } } //ledRed for( int i=0; i<=255; i++) { analogWrite(ledRed, i); for( int y =0; y <1000; y++){ // jika tombol dilepas if (digitalRead(button) ==LOW) { return; } } } untuk( int i=255; i>=0; i--) { analogWrite(ledRed, i); for( int y =0; y <1000; y++){ // jika tombol dilepas if (digitalRead(button) ==LOW) { return; } } } //ledKuning untuk( int i=0; i<=255; i++) { analogWrite(ledKuning, i); for( int y =0; y <400; y++){ // jika tombol dilepas if (digitalRead(button) ==LOW) { return; } } } untuk( int i=255; i>=0; i--) { analogWrite(ledKuning, i); for( int y =0; y <400; y++){ // jika tombol dilepas if (digitalRead(button) ==LOW) { return; } } } //ledHijau untuk( int i=0; i<=255; i++) { analogWrite(ledGreen, i); for( int y =0; y <1000; y++){ // jika tombol dilepaskan if (digitalRead(button) ==LOW) { return; } } }}

Skema


Proses manufaktur

  1. Game Arduino Gyroscope dengan MPU-6050
  2. Sistem Kehadiran Menggunakan Arduino dan RFID dengan Python
  3. Sensor DHT11 dengan LED dan Speaker Piezo
  4. Mesin ULTRASONIC LEVITATION Menggunakan ARDUINO
  5. Unopad - Pengontrol MIDI Arduino dengan Ableton
  6. Sistem Penyiraman Tanaman Otomatis dengan Arduino
  7. Sensor Kendala Sederhana dengan Arduino
  8. Temukan Saya
  9. Cara Mengukur Massa Bumi Menggunakan Arduino
  10. 25 kHz 4 Pin Kontrol Kipas PWM dengan Arduino Uno