Jam Kipas LED Baling-Baling USB – Diagram Sirkuit &Kode Proyek
Jam Analog Kipas Lampu LED USB Menggunakan Arduino NANO – Kode Proyek &Diagram Sirkuit dengan Fitur Pengaturan Waktu
Jika Anda telah menonton video gadget terkenal Jam Kipas lampu LED USB Mini, bersiaplah karena kami akan merancang jam analog lampu LED yang sama berdasarkan Arduino NANO, sensor hall , resistor, baterai, motor DC, dan LED.
LED akan berputar dalam gerakan melingkar dan menunjukkan jam analog di layar baling-baling dengan ketiga jarum jam, menit dan detik masing-masing serta bentuk bulat (melingkar) seperti jam tangan atau jam dinding biasa.
Hal terbaik dalam proyek ini adalah Anda dapat mengubah pengaturan waktu untuk menit dan detik dengan mengunggah kode sumber ke Arduino NANO melalui kabel USB. Mari kita lihat bagaimana melakukannya.
Periksa Gadget Jam Kipas Lampu LED
Komponen yang Diperlukan:
- Arduino NANO
- Sensor Hall W130
- R1 hingga R16 =330Ω
- R17 =2.2kΩ
- R18 =10rbΩ
- LED 1 hingga LED 11 =Lampu Merah
- LED 12 hingga LED 16 =Lampu Hijau
- LED 17 =Cahaya Biru
- Baterai =3.7V, 240mAh (9V hingga 12V jika motor bertenaga untuk operasi kecepatan tinggi)
- Switch =ON / OFF Tiang Tunggal (Toggle Geser)
- Komponen lain:papan PCB, motor DC mainan, kabel &kabel, besi solder, dll.
Diagram Pengkabelan &Sirkuit
Berikut ini adalah diagram rangkaian yang diberikan untuk jam analog kipas LED baling-baling USB. Jika Anda ingin membuat proyek yang sama dengan fitur pengaturan waktu, periksa diagram sirkuit kedua yang diberikan di bagian bawah posting ini.
Prosedur:
- Potong sepotong kecil papan PCB sesuai dengan rangkaiannya.
- Masukkan LED Hijau ke dalam lubang dengan kaki panjang di sisi kiri. Sekarang dari sisi tembaga, tekuk kakinya ke satu sisi (LED Hijau yaitu LED 12 – LED 16 melalui R12 hingga R16 dan A5 hingga A1).
- Dengan cara yang sama, masukkan sisa LED Merah (LED 1 – LED 11 melalui R1 hingga R11 dan D2 hingga D12).
- Masukkan Led Biru di atas led hijau seperti yang ditunjukkan pada gambar (LED Biru 17 melalui R17 dan A7). Hubungkan R17 sebagai 2.2kΩ dan gabungkan 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 digabungkan. Potong kelebihan lead jika diperlukan.
- Sekarang masukkan resistor dan tekuk ujungnya sama seperti yang Anda lakukan untuk LED. Potong lead tambahan yang sesuai.
- Sekarang solder komponen sesuai dengan diagram rangkaian.
- Sekarang, solder konektor ke Arduino NANO.
- Hubungkan kabel dari katoda umum LED ke pin Arduino GND.
Hubungkan kabel dari resistor ke pin Digital Arduino “D” dan pin Analog “A” sebagai berikut:
- R1 sampai D2
- R2 sampai D3
- R3 sampai D4
- R4 sampai D5
- R5 sampai D6
- R6 hingga D7
- R7 sampai D8
- R8 sampai D9
- R9 hingga H10
- R10 hingga H11
- R11 hingga H12
- R12 hingga A1
- R13 hingga A2
- R14 hingga A3
- R15 hingga A4
- R16 hingga A5
Hubungkan sensor Hall sebagai berikut:
- Pin keluaran ke pin Arduino A0.
- Pin VCC ke pin Arduino +5V.
- Sensor pin ground ke Pin Arduino GND.
Sebagai sentuhan akhir:
- Hubungkan baterai 3.7V, 240mAh sesuai dengan rangkaian dan jangan lupa untuk menambahkan sakelar geser pengalih kutub tunggal pada kabel positif untuk operasi ON dan OFF rangkaian.
- Sekarang, Pasang seluruh proyek ke papan chip dengan bantuan motor DC mainan. Perlu diingat bahwa jika Anda menggunakan motor yang bertenaga untuk kecepatan tinggi, Anda dapat menggunakan baterai 9V hingga 12V.
- Terakhir, unggah kode proyek (diberikan di bawah) kabel USB viva dan Nyalakan sirkuitnya. Kipas akan menampilkan jam dalam lampu LED saat dalam gerakan baling-baling.
Kode Proyek
Anda dapat membuat perubahan yang diperlukan pada kode sumber jam kipas LED USB berikut dan mengunggahnya ke Arduino NANO melalui kabel USB jika diperlukan.
Kode melalui:proyek hobi
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);
}
Bagaimana Cara Mengubah Pengaturan Waktu di Jam Kipas LED?
Untuk IR Dasar Penerima dengan Sirkuit Utama
Komponen yang Diperlukan:
- R19 &R20 =10rb
- LED Fototransistor IR (di dekat LED#13 untuk Pengaturan Menit)
- LED Fototransistor IR (dekat LED#16 untuk Pengaturan Jam)
Cukup sambungkan R19 dengan LED IR pertama (dekat LED#13 untuk pengaturan menit) dan R20 dengan IR kedua (dekat LED#16 untuk pengaturan jam). Hubungkan common IR LED dan kedua resistor masing-masing ke pin GND dan 5V Arduino NANO. Terakhir, sambungkan kabel jumper dari pin A7 ke antara R19 dan IR kedua. Lakukan hal yang sama untuk pin A6 ke R20 dan IR pertama.
Untuk Kontrol Jarak Jauh IR Dasar Pemancar
Komponen yang Diperlukan:
- Baterai 9V
- Konektor kancing baterai
- LED IR (Led Inframerah)
- resistor 1kΩ
- Beralih kebijaksanaan
- Papan PCB
Untuk membuat pemancar remote control IR sederhana untuk mengatur dan mengontrol fitur pengaturan waktu di jam kipas LED USB, cukup sambungkan semua komponen secara seri (yaitu baterai 9V, LED IR , resistor 1k ohm dan sakelar bijaksana pada terminal positif). Pemancar ini akan digunakan untuk menempatkan dan menghadap LED#13 dan LED#16 untuk mengatur waktu.
Kode berikut digunakan untuk mengubah dan menyesuaikan spindel jam dan menit (jarum menit dan jam pada jam dinding biasa dan jam tangan analog) jam kipas yang dipimpin USB analog.
Periksa Output rangkaian IR Detector menggunakan Arduino Serial Monitor. Misalnya, membaca dengan lampu ruangan normal> 500 dan membaca dengan lampu IR <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 menyetel jarum jam, arahkan remote IR ke pembuat jam dan tekan tombol remote.
Tonton Videonya:
Sumber daya:
Gadget Jam Kipas Lampu LED
Kit &Komponen untuk Proyek ini
Arduino NANO untuk Proyek ini