hai gays....
selamat berjumpa kembali di tutorial microcontroler dan robotika.
Pada kesempatan kali ini kita akan memberikan tutorial untuk jam digital 7 segmen menggunakan ic 74HC595 dengan program arduino...
Sebenarnya bisa juga sih tidak mempergunakan ic 74HC595 untuk 7 segmennya, tapi berhubung di google sangat jarang sekali postingan mempergunakan ic 74HC595 untuk shifregiter 7 segmen an demi menghemat pin arduino makanya saya share ne cara bikin jam digital menggunakan 7 segmen engan ic shifregiter 74HC595.
Ok cuy dari pada basa-basinya terlalu panjang mari kita lanjutkan tutorialnya
1. siapkan bahan yang akan digunakan seperti di bawah ini :
Ok lanjutkan listing programnya,
Sebelumnya persiapkan dulu library untuk ds1307 nya ya, kalau ngk punya coment aja dibawah ntr saya kirim librarynya.
ne programnya cuy:
#include <Wire.h>
#include "RTClib.h"
const int Data = 10;
const int Latch = 11;
const int Clock = 12;
const int ledPin = 13;
RTC_DS1307 RTC;
byte g_digits [10];
int g_numberToDisplay = 0;
const int g_registers = 4;
byte g_registerArray [g_registers];
// Begin setup() functions //
void setup()
{
Wire.begin();
RTC.begin();
pinMode (Latch, OUTPUT);
pinMode (Clock, OUTPUT);
pinMode (Data, OUTPUT);
pinMode (ledPin, OUTPUT);
Serial.begin (9600);
g_digits [0] = 0b01000000;//0
g_digits [1] = 0b01111001;//1
g_digits [2] = 0b00100100;//2
g_digits [3] = 0b00110000;//3
g_digits [4] = 0b00011001;//4
g_digits [5] = 0b00010010;//5
g_digits [6] = 0b00000010;//6
g_digits [7] = 0b01111000;//7
g_digits [8] = 0b00000000;//8
g_digits [9] = 0b00010000;//9
for (int i=0;i<5;i++) {
g_registerArray [0] = g_digits [8];
g_registerArray [1] = g_digits [8];
g_registerArray [2] = g_digits [8];
g_registerArray [3] = g_digits [8];
sendSerialData (g_registers, g_registerArray);
delay(300);
}
}
void sendSerialData (byte registerCount, byte *pValueArray) {
digitalWrite (Latch, LOW);
for (byte reg = registerCount; reg > 0; reg--)
{
byte value = pValueArray [reg - 1];
for (byte bitMask = 128; bitMask > 0; bitMask >>= 1)
{
digitalWrite (Clock, LOW);
digitalWrite (Data, value & bitMask ? HIGH : LOW);
digitalWrite (Clock, HIGH);
}
}
digitalWrite (Latch, HIGH);
}
void loop()
{
int hour,minute,sec,disp = 0;
DateTime now = RTC.now();
hour = now.hour();
minute = now.minute();
sec = now.second();
Serial.print(hour);
Serial.print(':');
Serial.print(minute);
Serial.print(':');
Serial.print(sec);
Serial.println();
disp = (hour * 100) + minute;
g_numberToDisplay = disp;
if (g_numberToDisplay < 10)
{
g_registerArray [0] = g_digits [0];
g_registerArray [1] = g_digits [0];
g_registerArray [2] = g_digits [0];
g_registerArray [3] = g_digits [g_numberToDisplay];
}
else if (g_numberToDisplay < 100)
{
g_registerArray [0] = g_digits [0];
g_registerArray [1] = g_digits [0];
g_registerArray [2] = g_digits [g_numberToDisplay / 10];
g_registerArray [3] = g_digits [g_numberToDisplay % 10];
}
else if (g_numberToDisplay < 1000)
{
g_registerArray [0] = g_digits [0];
g_registerArray [1] = g_digits [g_numberToDisplay / 100];
g_registerArray [2] = g_digits [(g_numberToDisplay % 100) / 10];
g_registerArray [3] = g_digits [g_numberToDisplay % 10];
}
else
{
g_registerArray [0] = g_digits [g_numberToDisplay / 1000];
g_registerArray [1] = g_digits [(g_numberToDisplay % 1000) / 100];
g_registerArray [2] = g_digits [(g_numberToDisplay % 100) / 10];
g_registerArray [3] = g_digits [g_numberToDisplay % 10];
}
sendSerialData (g_registers, g_registerArray);
digitalWrite(ledPin,HIGH);
delay(500);
digitalWrite(ledPin,LOW);
delay(500);
}
kalau rangkaian dan programnya dibikn seperti yang diatas udah pasti jalan jam cuy, atau kalau ada yang bermasalah kalau agan mempraktekannya silahkan coment aja nanti biar saya bantu OK.
selamat berjumpa kembali di tutorial microcontroler dan robotika.
Pada kesempatan kali ini kita akan memberikan tutorial untuk jam digital 7 segmen menggunakan ic 74HC595 dengan program arduino...
Sebenarnya bisa juga sih tidak mempergunakan ic 74HC595 untuk 7 segmennya, tapi berhubung di google sangat jarang sekali postingan mempergunakan ic 74HC595 untuk shifregiter 7 segmen an demi menghemat pin arduino makanya saya share ne cara bikin jam digital menggunakan 7 segmen engan ic shifregiter 74HC595.
Ok cuy dari pada basa-basinya terlalu panjang mari kita lanjutkan tutorialnya
1. siapkan bahan yang akan digunakan seperti di bawah ini :
- Arduino
- 7 segment
- IC 74HC595
- RTC ds1307
- dan resistor
Ok lanjutkan listing programnya,
Sebelumnya persiapkan dulu library untuk ds1307 nya ya, kalau ngk punya coment aja dibawah ntr saya kirim librarynya.
ne programnya cuy:
#include <Wire.h>
#include "RTClib.h"
const int Data = 10;
const int Latch = 11;
const int Clock = 12;
const int ledPin = 13;
RTC_DS1307 RTC;
byte g_digits [10];
int g_numberToDisplay = 0;
const int g_registers = 4;
byte g_registerArray [g_registers];
// Begin setup() functions //
void setup()
{
Wire.begin();
RTC.begin();
pinMode (Latch, OUTPUT);
pinMode (Clock, OUTPUT);
pinMode (Data, OUTPUT);
pinMode (ledPin, OUTPUT);
Serial.begin (9600);
g_digits [0] = 0b01000000;//0
g_digits [1] = 0b01111001;//1
g_digits [2] = 0b00100100;//2
g_digits [3] = 0b00110000;//3
g_digits [4] = 0b00011001;//4
g_digits [5] = 0b00010010;//5
g_digits [6] = 0b00000010;//6
g_digits [7] = 0b01111000;//7
g_digits [8] = 0b00000000;//8
g_digits [9] = 0b00010000;//9
for (int i=0;i<5;i++) {
g_registerArray [0] = g_digits [8];
g_registerArray [1] = g_digits [8];
g_registerArray [2] = g_digits [8];
g_registerArray [3] = g_digits [8];
sendSerialData (g_registers, g_registerArray);
delay(300);
}
}
void sendSerialData (byte registerCount, byte *pValueArray) {
digitalWrite (Latch, LOW);
for (byte reg = registerCount; reg > 0; reg--)
{
byte value = pValueArray [reg - 1];
for (byte bitMask = 128; bitMask > 0; bitMask >>= 1)
{
digitalWrite (Clock, LOW);
digitalWrite (Data, value & bitMask ? HIGH : LOW);
digitalWrite (Clock, HIGH);
}
}
digitalWrite (Latch, HIGH);
}
void loop()
{
int hour,minute,sec,disp = 0;
DateTime now = RTC.now();
hour = now.hour();
minute = now.minute();
sec = now.second();
Serial.print(hour);
Serial.print(':');
Serial.print(minute);
Serial.print(':');
Serial.print(sec);
Serial.println();
disp = (hour * 100) + minute;
g_numberToDisplay = disp;
if (g_numberToDisplay < 10)
{
g_registerArray [0] = g_digits [0];
g_registerArray [1] = g_digits [0];
g_registerArray [2] = g_digits [0];
g_registerArray [3] = g_digits [g_numberToDisplay];
}
else if (g_numberToDisplay < 100)
{
g_registerArray [0] = g_digits [0];
g_registerArray [1] = g_digits [0];
g_registerArray [2] = g_digits [g_numberToDisplay / 10];
g_registerArray [3] = g_digits [g_numberToDisplay % 10];
}
else if (g_numberToDisplay < 1000)
{
g_registerArray [0] = g_digits [0];
g_registerArray [1] = g_digits [g_numberToDisplay / 100];
g_registerArray [2] = g_digits [(g_numberToDisplay % 100) / 10];
g_registerArray [3] = g_digits [g_numberToDisplay % 10];
}
else
{
g_registerArray [0] = g_digits [g_numberToDisplay / 1000];
g_registerArray [1] = g_digits [(g_numberToDisplay % 1000) / 100];
g_registerArray [2] = g_digits [(g_numberToDisplay % 100) / 10];
g_registerArray [3] = g_digits [g_numberToDisplay % 10];
}
sendSerialData (g_registers, g_registerArray);
digitalWrite(ledPin,HIGH);
delay(500);
digitalWrite(ledPin,LOW);
delay(500);
}
kalau rangkaian dan programnya dibikn seperti yang diatas udah pasti jalan jam cuy, atau kalau ada yang bermasalah kalau agan mempraktekannya silahkan coment aja nanti biar saya bantu OK.