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

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Komponen dan Perlengkapan

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Arduino UNO
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Real Time Clock (RTC)
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Resistor 1k ohm
×15
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Through Hole Resistor, 120 ohm
×15
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Linear Regulator (7805)
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Capacitor 22 pF
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
16 MHz Crystal
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Capacitor 10 µF
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Coin Cell Battery CR2032
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Battery Holder, Lithium CR2032
×1
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
5 mm LED: Hijau
×190
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Transistor RF Bipolar, NPN
×10
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Transistor PNP Umum
×12
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Tactile Switch, Top Actuated
×4
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Digilent 60W PCIe 12V 5A Power Supply
×1

Alat dan Mesin yang Diperlukan

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Soldering iron (umum)
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Solder Wire, Lead Free
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Digilent Mastech MS8217 Autorange Digital Multimeter

Tentang Proyek Ini

Pertama Anda harus mengunduh perpustakaan berikut(link ada di akhir halaman ini)1. Wire.h

2. RTClib.hDaftar Komponen

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Tonton Video

Ini adalah modul jam RTC

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Ini adalah rangkaian Arduino

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Koneksi Pemasangan RTC

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Tombol RTC

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Identifikasi Anoda dan Katoda

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Diagram Rangkaian (COMMON ANODE)

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

JIKA ANDA MENGGUNAKAN LED COMMON CATHODE LAKUKAN PERUBAHAN SEBAGAI BERIKUT

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

SUPPLY DAYA

Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal
Jam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Kode

Kode Jam LEDArduino
/* 4 digit 7 segment display: https://www.sparkfun.com/products/9483 Datasheet: https://www.sparkfun.com/datasheets/Components/LED/7-Segment/YSD-439AR6B-35.pdf */ // modified connexion by niq_ro from https://nicuflorica.blogspot.com // dataseet: https://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4-563XSA.pdf // Code modified by BMIAK Basnayaka // https://www.setnfix.com int digit1 = 11; int digit2 = 10; int digit3 = 9; int digit4 = 6; int digit5 = 5; int digit6 = 3; //Pin mapping from Arduino to the ATmega DIP28 if you need it //https://www.arduino.cc/en/Hacking/PinMapping int segA = 0; //Display pin 11 int segB = 1; //Display pin 7 int segC = 2; //Display pin 4 int segD = 4; //Display pin 2 int segE = 7; //Display pin 1 int segF = 8; //Display pin 10 int segG = 12; //Display pin 5 int segDP =13; // Display pin 3 #include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; // Date and time functions using a DS1307 RTC connected via I2C and Wire lib // original sketck from https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/ // add part with SQW=1Hz from https://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the-i2c-bus/ // add part with manual adjust https://www.bristolwatch.com/arduino/arduino_ds1307.htm byte SW0 = A0; byte SW1 = A2; byte SW2 = A1; byte SWT = A3; int Adhr=0; int Admnt=0; int D = 0; int Z =0; // use for hexa in zecimal conversion long zh, uh, ore; long zm, um, miniti; void setup() { //Serial.begin(57600); Wire.begin(); RTC.begin(); // RTC.adjust(DateTime(F(__DATE__), F(__TIME__))); // if you need set clock... just remove // from line above this // part code for flashing LED Wire.beginTransmission(0x68); Wire.write(0x07); // move pointer to SQW address // Wire.write(0x00); // turns the SQW pin off Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave at 1Hz // Wire.write(0x13); // sends 0x13 (hex) 00010011 (binary) 32kHz Wire.endTransmission(); pinMode(segA, OUTPUT); pinMode(segB, OUTPUT); pinMode(segC, OUTPUT); pinMode(segD, OUTPUT); pinMode(segE, OUTPUT); pinMode(segF, OUTPUT); pinMode(segG, OUTPUT); pinMode(segDP, OUTPUT); pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT); pinMode(digit4, OUTPUT); pinMode(digit5, OUTPUT); pinMode(digit6, OUTPUT); //Serial.begin(9600); pinMode(SW0, INPUT); // N.O. push button switch pinMode(SW1, INPUT); // N.O. push button switch pinMode(SW2, INPUT); // N.O. push button switch pinMode(SWT, INPUT); // N.O. push button switch digitalWrite(SW0, HIGH); // pull-ups on digitalWrite(SW1, HIGH); digitalWrite(SW2, HIGH); digitalWrite(segDP, LOW); } void loop() { DateTime now = RTC.now(); long HR = now.hour()*1000; long timp = (HR*10)+now.minute()*100+now.second(); Adhr = now.hour(); Admnt=now.minute(); int DIM = 0; if (timp >=250000) timp=timp-240000; //------------------------------------------------------ //12/24 hours shitching //------------------------------------------------------ if (timp < 130000){ digitalWrite(segDP, LOW);} if (digitalRead(SWT)==0){delay(300); if (D == 0) { D =1;delay(200);} else{ D =0;} } if (D == 0){ if (timp>=130000){ timp=timp-120000; digitalWrite(segDP, HIGH);} } if (timp>=130000){ digitalWrite(segDP, LOW); } if ((D==1)& (timp <130000)) digitalWrite(segDP, LOW); //------------------------------------------------------ //int timp = (now.minute(), DEC); // displayNumber(12); // this is number to diplay for(int i = 100 ; i >0 ; i--) { if (timp >= 100000) displayNumber01(timp); else displayNumber02(timp); } for(int i = 100 ; i >0 ; i--) { if (timp >= 100000) displayNumber03(timp); else displayNumber04(timp); } for(int i = 100 ; i >0 ; i--) { if (timp >= 100000) displayNumber05(timp); else displayNumber06(timp); } if (digitalRead(SW0)==0){delay(100);Z=1; set_time(); }// hold the switch to set time } void set_time() { byte minutes1 = 0; byte hours1 = 0; byte minutes = 0; byte hours = 0; hours=Adhr; minutes=Admnt; if ((hours & 0x0f) > 9) hours = hours + 6; if (hours > 0x24) hours = 1; // Mid night 12.00 will show as 12:00 (With PM LED on) or 24:00 //if (hours > 0x24) hours = 1; // Mid night 12.00 will show as 0:00 if ((minutes & 0x0f) > 9) minutes = minutes + 6; if (minutes > 0x59) minutes = 0; while (!(Z==0)){ // set time switch must be released to exit int TST = digitalRead(SW2); while (TST==0) // set hours { hours++; // converting hexa in zecimal: zh = hours / 16; uh = hours - 16 * zh ; ore = 10 * zh + uh; zm = minutes / 16; um = minutes - 16 * zm ; miniti = 10 * zm + um; if ((hours & 0x0f) > 9) hours = hours + 6; if (hours > 0x24) hours = 1; // Mid night 12.00 will show as 12:00 (With PM LED on) or 24:00 //if (hours > 0x24) hours = 1; // Mid night 12.00 will show as 0:00 if (hours <= 9) delay(1); for(int i = 400 ; i >0 ; i--) { displayNumber01(ore*10000+miniti*100); } TST = digitalRead(SW2); } while (!(digitalRead(SW1))) // set minutes { minutes++; // converting hexa in zecimal: zh = hours / 16; uh = hours - 16 * zh ; ore = 10 * zh + uh; zm = minutes / 16; um = minutes - 16 * zm ; miniti = 10 * zm + um; for(int i = 400 ; i >0 ; i--) { displayNumber01(ore*10000+miniti*100); } if ((minutes & 0x0f) > 9) minutes = minutes + 6; if (minutes > 0x59) minutes = 0; if (minutes >= 9) delay(1); } Wire.beginTransmission(0x68); // activate DS1307 Wire.write(0); // where to begin Wire.write(0x00); //seconds Wire.write(minutes); //minutes Wire.write(0x80 | hours); //hours (24hr time) Wire.write(0x06); // Day 01-07 Wire.write(0x01); // Date 0-31 Wire.write(0x05); // month 0-12 Wire.write(0x09); // Year 00-99 Wire.write(0x10); // Control 0x10 produces a 1 HZ square wave on pin 7. Wire.endTransmission(); // converting hexa in zecimal: zh = hours / 16; uh = hours - 16 * zh ; ore = 10 * zh + uh; zm = minutes / 16; um = minutes - 16 * zm ; miniti = 10 * zm + um; for(int i = 400 ; i >0 ; i--) { displayNumber01(ore*10000+miniti*100); } delay(100); //Serial.print(digitalRead(SW0)); if (digitalRead(SW0)==0) Z = 0; delay(300); } //Serial.print(SW2); } void displayNumber01(long toDisplay) { #define DISPLAY_BRIGHTNESS 25 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = 6 ; digit > 0 ; digit--) { //Turn on a digit for a short amount of time switch(digit) { case 1: digitalWrite(digit1, DIGIT_ON); break; case 2: digitalWrite(digit2, DIGIT_ON); //digitalWrite(segDP, LOW); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; case 5: digitalWrite(digit5, DIGIT_ON); break; case 6: digitalWrite(digit6, DIGIT_ON); break; } lightNumber(toDisplay % 10); toDisplay /= 10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Turn off all segments lightNumber(10); //Turn off all digits digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF); } } void displayNumber02(long toDisplay) { #define DISPLAY_BRIGHTNESS 25 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = 6 ; digit > 0 ; digit--) { //Turn on a digit for a short amount of time switch(digit) { case 1: lightNumber(10); break; case 2: digitalWrite(digit2, DIGIT_ON); //digitalWrite(segDP, LOW); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; case 5: digitalWrite(digit5, DIGIT_ON); break; case 6: digitalWrite(digit6, DIGIT_ON); break; } lightNumber(toDisplay % 10); toDisplay /= 10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Turn off all segments lightNumber(10); //Turn off all digits digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF); } } void displayNumber03(long toDisplay) { #define DISPLAY_BRIGHTNESS 25 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = 6 ; digit > 0 ; digit--) { //Turn on a digit for a short amount of time switch(digit) { case 1: digitalWrite(digit1, DIGIT_ON); break; case 2: digitalWrite(digit2, DIGIT_ON); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; case 5: digitalWrite(digit5, DIGIT_ON); break; case 6: digitalWrite(digit6, DIGIT_ON); break; } lightNumber(toDisplay % 10); toDisplay /= 10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Turn off all segments lightNumber(10); //Turn off all digits digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF); } } void displayNumber04(long toDisplay) { #define DISPLAY_BRIGHTNESS 25 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = 6 ; digit > 0 ; digit--) { //Turn on a digit for a short amount of time switch(digit) { case 1: lightNumber(10); break; case 2: digitalWrite(digit2, DIGIT_ON); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; case 5: digitalWrite(digit5, DIGIT_ON); break; case 6: digitalWrite(digit6, DIGIT_ON); break; } lightNumber(toDisplay % 10); toDisplay /= 10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Turn off all segments lightNumber(10); //Turn off all digits digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF); } } void displayNumber05(long toDisplay) { #define DISPLAY_BRIGHTNESS 25 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = 6 ; digit > 0 ; digit--) { //Turn on a digit for a short amount of time switch(digit) { case 1: digitalWrite(digit1, DIGIT_ON); break; case 2: digitalWrite(digit2, DIGIT_ON); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; case 5: digitalWrite(digit5, DIGIT_ON); break; case 6: digitalWrite(digit6, DIGIT_ON); break; } lightNumber(toDisplay % 10); toDisplay /= 10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Turn off all segments lightNumber(10); //Turn off all digits digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF); } } void displayNumber06(long toDisplay) { #define DISPLAY_BRIGHTNESS 25 #define DIGIT_ON HIGH #define DIGIT_OFF LOW for(int digit = 6 ; digit > 0 ; digit--) { //Turn on a digit for a short amount of time switch(digit) { case 1: //digitalWrite(digit1, DIGIT_ON); break; case 2: digitalWrite(digit2, DIGIT_ON); break; case 3: digitalWrite(digit3, DIGIT_ON); break; case 4: digitalWrite(digit4, DIGIT_ON); break; case 5: digitalWrite(digit5, DIGIT_ON); break; case 6: digitalWrite(digit6, DIGIT_ON); break; } lightNumber(toDisplay % 10); toDisplay /= 10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Turn off all segments lightNumber(10); //Turn off all digits digitalWrite(digit1, DIGIT_OFF); digitalWrite(digit2, DIGIT_OFF); digitalWrite(digit3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF); } } //Given a number, turns on those segments //If number == 10, then turn off number void lightNumber(int numberToDisplay) { //Common Anode ************************* #define SEGMENT_ON HIGH #define SEGMENT_OFF LOW /* Common Cathode ***************** #define SEGMENT_ON LOW #define SEGMENT_OFF HIGH */ switch (numberToDisplay){ case 0: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_OFF); break; case 1: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case 2: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case 3: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); break; case 4: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 5: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 6: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 7: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; case 8: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; case 9: digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); break; // all segment are ON case 10: digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); break; } // End of the coding, BUDHUSARANAI, Best of luck. } 

Skematik

Ini adalah pemasangan kabel SSD dengan LEDJam LED RTC Arduino: Bangun Tampilan Waktu yang Handal

Proses manufaktur

  1. Jam POV Arduino: Buat Tampilan LED Persistensi Penglihatan
  2. Jam Kata Arduino DIY – Buat Tampilan Waktu Real-Time yang Elegan
  3. Membuat Osiloskop Arduino 20 kHz pada Layar LCD Nokia 5110 – Panduan DIY Mudah
  4. Bangun Jam Master LED Kustom dengan Alarm – Terlihat dari Jarak 12 Meter
  5. Smart Blinds: Kontrol Cahaya Otomatis dengan Arduino & Energi Surya
  6. Bangun Jam Kata Italia dengan Arduino Nano, NeoPixel, LCD, dan RTC
  7. Kontrol LED melalui Bluetooth dengan Arduino – Panduan DIY Sederhana
  8. Membuat Robot Quadruped Arduino Cerdas: Panduan Langkah demi Langkah
  9. Membuat Jam 7-Segmen Akurat dengan Arduino Pro Mini & DS1302 RTC
  10. Bangun Rangkaian Input Analog Terisolasi untuk Arduino