Membuat Jam Kipas LED Berbasis USB dengan Arduino Nano – Rangkaian dan Kode
Jam Analog Kipas LED Berbasis USB Menggunakan Arduino NANO – Kode Proyek & Diagram Rangkaian dengan Fitur Pengaturan Waktu
Jika Anda telah menonton video dari gadget terkenal Mini USB LED Light Fan clock, siapkan diri karena kita akan merancang jam analog LED lampu yang sama berdasarkan Arduino NANO, hall sensor, resistor, baterai, motor DC dan LED.
LED akan bergerak dalam gerakan lingkaran dan menunjukkan jam analog dalam tampilan propeller dengan ketiga jarum untuk jam, menit dan detik masing-masing serta bentuk bundar (lingkaran) seperti jam tangan atau dinding biasa.
Hal terbaik dalam proyek ini adalah Anda dapat mengubah pengaturan waktu untuk menit dan detik melalui mengunggah kode sumber ke Arduino NANO melalui kabel USB. Mari kita lihat cara melakukannya.
Periksa Gadget LED Light FAN Clock
Komponen yang Diperlukan:
- Arduino NANO
- Hall Sensor W130
- R1 hingga R16 = 330Ω
- R17 = 2.2kΩ
- R18 = 10kΩ
- LED 1 hingga LED 11 = Lampu Merah
- LED 12 hingga LED 16 = Lampu Hijau
- LED 17 = Lampu Biru
- Baterai = 3.7V, 240mAh (9V hingga 12V jika motor kuat untuk operasi kecepatan tinggi)
- Saklar = ON / OFF Single Pole (Slide Toggle)
- Komponen lain: PCB board, motor DC mainan, kabel & kabel, palu solder dll.
Penyaluran & Diagram Rangkaian
Berikut adalah diagram rangkaian yang diberikan untuk jam analog propeller LED kipas USB. Jika Anda ingin membuat proyek yang sama dengan fitur pengaturan waktu, periksa diagram rangkaian kedua yang diberikan di bagian bawah postingan ini.

Prosedur:
- Potong potongan kecil papan PCB sesuai dengan rangkaian.
- Sisipkan LED Hijau ke dalam lubang dengan kaki panjang di sisi kiri. Sekarang dari sisi tembaga, lipat kaki ke satu sisi (LED Hijau yaitu LED 12 – LED 16 melalui R12 hingga R16 dan A5 hingga A1 masing-masing).
- Dengan cara yang sama, sisipkan LED Merah yang tersisa (LED 1 – LED 11 melalui R1 hingga R11 dan D2 hingga D12 masing-masing).
- Sisipkan LED Biru di atas LED hijau seperti yang ditunjukkan dalam gambar (LED Biru 17 melalui R17 dan A7). Hubungkan R17 sebagai 2.2kΩ dan hubungkan katoda LED ini ke katoda LED lainnya. Sekarang, hubungkan kaki positif LED ini ke salah satu ujung resistor R17 dan ujung lainnya ke pin +5V Arduino.
- Semua koneksi katoda LED dihubungkan bersama. Potong kaki berlebih jika diperlukan.
- Sekarang sisipkan resistor dan lipat kaki seperti yang Anda lakukan untuk LED. Potong kaki tambahan dengan sesuai.
- Sekarang solder komponen sesuai dengan diagram rangkaian.
- Sekarang, solder konektor ke Arduino NANO.
- Hubungkan kabel dari katoda umum LED ke pin GND Arduino.
Hubungkan kabel dari resistor ke pin Digital Arduino “D” dan pin Analog “A” sebagai berikut:
- R1 ke D2
- R2 ke D3
- R3 ke D4
- R4 ke D5
- R5 ke D6
- R6 ke D7
- R7 ke D8
- R8 ke D9
- R9 ke D10
- R10 ke D11
- R11 ke D12
- R12 ke A1
- R13 ke A2
- R14 ke A3
- R15 ke A4
- R16 ke A5
Hubungkan Hall sensor sebagai berikut:
- Pin output ke pin A0 Arduino.
- Pin VCC ke pin +5V Arduino.
- Pin ground sensor ke pin GND Arduino.
Sebagai sentuhan akhir:
- Hubungkan baterai 3.7V, 240mAh sesuai dengan rangkaian dan jangan lupa untuk menambahkan saklar toggle slide single pole di kabel positif untuk operasi ON dan OFF rangkaian.
- Sekarang, Pasang seluruh proyek pada papan chipboard dengan bantuan motor DC mainan. Ingatlah bahwa jika Anda menggunakan motor kuat untuk kecepatan tinggi, Anda dapat menggunakan baterai 9V hingga 12V sebagai gantinya.
- Terakhir, unggah kode proyek (yang diberikan di bawah) melalui kabel USB dan Nyalakan rangkaian. Kipas akan menunjukkan jam dalam cahaya LED saat dalam gerakan propeller.
Kode Proyek
Anda dapat membuat perubahan yang diperlukan pada kode sumber jam kipas LED USB berikut dan mengunggah ke Arduino NANO melalui kabel USB jika diperlukan.
Kode via: hobbyprojects
int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; int LED6 = 7; int LED7 = 8; int LED8 = 9; int LED9 = 10; int LED10 = 11; int LED11 = 12; int LED12 = A1; int LED13 = A2; int LED14 = A3; int LED15 = A4; int LED16 = A5; int sensorPin = A0; int minuteSensor = A7; int hourSensor = A6; unsigned int n,ADCvalue,propeller_posn; unsigned long previousTime = 0; byte hours = 12; // set hours byte minutes = 15; // set minutes byte seconds = 00; // set seconds int val; void setup() { pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT); pinMode(LED3,OUTPUT); pinMode(LED4,OUTPUT); pinMode(LED5,OUTPUT); pinMode(LED6,OUTPUT); pinMode(LED7,OUTPUT); pinMode(LED8,OUTPUT); pinMode(LED9,OUTPUT); pinMode(LED10,OUTPUT); pinMode(LED11,OUTPUT); pinMode(LED12,OUTPUT); pinMode(LED13,OUTPUT); pinMode(LED14,OUTPUT); pinMode(LED15,OUTPUT); pinMode(LED16,OUTPUT); pinMode(sensorPin,INPUT_PULLUP); if(hours == 12) hours = 0; //**************************************** // Uncomment these lines for IR sensor testing /* Serial.begin(9600); while(1) { ADCvalue = analogRead(minuteSensor); Serial.print("minuteSensor "); Serial.println(ADCvalue); ADCvalue = analogRead(hourSensor); Serial.print("hourSensor "); Serial.println(ADCvalue); Serial.println(); delay(1000); } */ //**************************************** } void loop() { val = digitalRead(sensorPin); while (val == LOW) { val = digitalRead(sensorPin); } if (millis() >= (previousTime)) { previousTime = previousTime + 1000; seconds = seconds+1; if (seconds == 60) { seconds = 0; minutes = minutes+1; } if (minutes == 60) { minutes = 0; hours = hours+1; } if (hours == 12) { hours = 0; } } propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; } drawMinuteMarker(); if ((propeller_posn==0) || (propeller_posn==5) || (propeller_posn==10) || (propeller_posn==15) || (propeller_posn==20) || (propeller_posn==25) || (propeller_posn==30) || (propeller_posn==35) || (propeller_posn==40) || (propeller_posn==45) || (propeller_posn==50) || (propeller_posn==55)) drawHourMarker(); if ((propeller_posn==0) || (propeller_posn==15) || (propeller_posn==30) || (propeller_posn==45)) drawQuarterMarker(); if((propeller_posn == hours*5) || (( propeller_posn == 0 ) && (hours == 0))) drawHoursHand(); if(propeller_posn == minutes) drawMinutesHand(); if(propeller_posn == seconds) drawSecondsHand(); delayMicroseconds(100); // for LED pixel width (change the value according to motor speed. Increase for low speed, decrease for high speed motor) displayClear(); drawInner_Circle(); delayMicroseconds(450); // for the gap between LED pixels/minutes markers (change the value according to motor speed. Increase for low speed, decrease for high speed motor) n++; propeller_posn++; if(propeller_posn == 60) propeller_posn=0; } val = digitalRead(sensorPin); while (val == HIGH) { val = digitalRead(sensorPin); } } //========================= void displayClear() { digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); digitalWrite(LED4,LOW); digitalWrite(LED5,LOW); digitalWrite(LED6,LOW); digitalWrite(LED7,LOW); digitalWrite(LED8,LOW); digitalWrite(LED9,LOW); digitalWrite(LED10,LOW); digitalWrite(LED11,LOW); digitalWrite(LED12,LOW); digitalWrite(LED13,LOW); digitalWrite(LED14,LOW); digitalWrite(LED15,LOW); digitalWrite(LED16,LOW); } void drawMinuteMarker() { digitalWrite(LED16,HIGH); } void drawHourMarker() { digitalWrite(LED15,HIGH); digitalWrite(LED14,HIGH); } void drawQuarterMarker() { digitalWrite(LED13,HIGH); digitalWrite(LED12,HIGH); } void drawHoursHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); } void drawMinutesHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); digitalWrite(LED8,HIGH); digitalWrite(LED9,HIGH); } void drawSecondsHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); digitalWrite(LED8,HIGH); digitalWrite(LED9,HIGH); digitalWrite(LED10,HIGH); digitalWrite(LED11,HIGH); } void drawInner_Circle() { digitalWrite(LED1,HIGH); delayMicroseconds(30); digitalWrite(LED1,LOW); }
Cara Mengubah Pengaturan Waktu dalam Jam Kipas LED?
Untuk IR Receiver Dasar dengan Rangkaian Utama
Komponen yang Diperlukan:
- R19 & R20 = 10k
- IR Phototransistor LED (di dekat LED#13 untuk Pengaturan Menit)
- IR Phototransistor LED (di dekat LED#16 untuk Pengaturan Jam)
Cukup hubungkan R19 dengan LED IR pertama (di dekat LED#13 untuk pengaturan menit) dan R20 dengan IR kedua (di dekat LED# 16 untuk pengaturan jam). Hubungkan bersama LED IR dan kedua resistor ke GND dan pin 5V Arduino NANO masing-masing. Terakhir, hubungkan kabel jumper dari pin A7 ke antara R19 dan IR kedua. Lakukan hal yang sama untuk pin A6 ke R20 dan IR pertama.

Untuk IR Remote Control Transmitter Dasar
Komponen yang Diperlukan:
- Baterai 9V
- Konektor snap baterai
- LED IR (Infrared Led)
- Resistor 1kΩ
- Tact switch
- Papan PCB
Untuk membuat pengontrol remote IR sederhana untuk mengatur dan mengontrol fitur pengaturan waktu dalam jam kipas LED USB, cukup hubungkan semua komponen secara seri (yaitu baterai 9V, LED IR, resistor 1k ohm dan tact switch di terminal positif). Transmitter ini akan digunakan untuk menempatkan dan menghadap LED#13 dan LED#16 untuk menyesuaikan waktu.
Kode berikut digunakan untuk mengubah dan menyesuaikan poros jam dan menit (jarum menit dan jam dalam jam dinding biasa dan jam analog) dari jam analog LED kipas USB.
Periksa Output detektor IR menggunakan Arduino Serial Monitor. Misalnya, pembacaan dengan cahaya ruangan normal adalah > 500 dan pembacaan dengan cahaya IR adalah < 500. Jadi, Anda dapat mengubah kode atau nilai di sini sesuai dengan sensor yang digunakan.
propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; }
Untuk mengatur jarum menit, arahkan remote IR ke penanda menit dan tekan tombol remote. Untuk mengatur jarum jam, arahkan remote IR ke penanda jam dan tekan tombol remote.
Tonton Video:
Resources:
Gadget of LED Light FAN Clock
Kits & Components for this Project
Arduino NANO for this Project