Kontak Kami

Gawean Jogja Group!

Jam Kerja 09.00 s/d jam17.00 , Minggu & Hari Besar libur.
Produsen lampu led, scoring board, andon display, line counter, running text, video tron, exchange rate dan LED Display. Distributor, Manufaktur, Customized, Custom Service Produsen modul edukasi mikrokontroler
Beranda » Artikel Terbaru » Membuat jam digital dengan JAM Shield NANO V1 dan Arduino Nano

Membuat jam digital dengan JAM Shield NANO V1 dan Arduino Nano

Diposting pada 26 August 2016 oleh jogjarobotika

Tinjauan

Shield Jam Arduino NANO merupakan PCB yang didesain untuk menampilkan Jam yang terdiri empat digit seven segment 1”. PCB dilengkapi dengan IC DS3231 sebagai IC Real Time Clock, IC MAX7219 sebagai driver seven segment, IC 24C32 sebagai EEPROM. Sensor tambahan yang ditanamkan dalam PCB adalah sensor suhu(LM35), sensor infra merah dan 3 buah tombol dan sebuah buzzer. Panduan ini merupakan contoh penggunaan Shield Jam Arduino NANO untuk membuat jam digital sederhana dilengkapi dengan sebuah alarm.

IMG_20160826_172209_HDR - Copy

Fitur

  • Dimensi PCB p = 148mm, l = 58mm
  • Kompatibel dengan pin Arduino UNO
  • Dilengkapi regulator 5V DC
  • 4 digit seven segment 1”
  • Sensor Suhu LM35
  • Sensor Infra Merah
  • Output buzzer
  • 3 buah tombol
  • IC Real Time Clock DS3231
  • IC EEPROM 24C32
  • Driver 7Segment MAX7219

Pin Input/Output

Pin I/O Shield Jam Arduino UNO
Pin Nama Fungsi
A4 SDA Komunikasi i2c
A5 SCL Komunikasi i2c
3 LED Menghidupkan LED (HIGH)
4 UP Tombol Up (LOW)
5 MENU Tombol Menu (LOW)
6 DOWN Tombol Down (LOW)
8 LD LOAD MAX 7219
11 D IN Data IN MAX7219
13 CLK CLOCK MAX 7219

Daftar Alat

  • Arduino NANO
  • Shield Jam Arduino NANO

Contoh Program Arduino

Periksalah apakah library yang dibutuhkan sudah terinstall pada komputer. Library dan Contoh programInstalasi library


/**************************************
* Shield Jam Arduino Nano
* ************************************
* Contoh program akan menampilkan waktu Jam dan menit pada seven segment
* tombol atas berfungsi sebagai tombol UP
* tombol tengan berfungsi sebagai tombol MENU
* tombol bawah berfungsi sebagai tombol DOWN
*
*
* @penulis GND
* @versi V1.0
* @tanggal 26 agustus 2016
*
**************************************/
#include <LedControl.h>//https://github.com/wayoda/LedControl
#include <DS3231.h>//http://www.rinkydinkelectronics.com/library.php?id=73
#include <Event.h>//https://github.com/JChristensen/Timer
#include <Timer.h>//https://github.com/JChristensen/Timer
#include <EEPROM.h>
/*
setting pin max7219
pin 11 -> DataIn
pin 13 -> CLK
pin 8 -> LOAD
*/

LedControl sevenSegment=LedControl(11,13,8,1);
/*setting i2c rtc*/
DS3231 rtc(SDA, SCL);
/*timer saat normal*/
Timer tNormal;
/*timer saat setting*/
Timer tSet;
/*timer saat alarm*/
Timer tAlarm;
/*alamat EEPROM untuk menyimpan data alarm jam dan menit*/
int addressJam=0;
int addressMenit=1;
/*variabel untuk menyimpan data alarm jam dan menit*/
int alarmJam;
int alarmMenit;
/*array untuk menampilkan data alarm pada seven segment*/
char _alarm[6];
/*variabel untuk menyimpan status alarm apabila data dirubah*/
bool _alarmEdit=false;
/*variabel untuk menyimpan status buzzer*/
bool _buzzer=false;
/*pin arduino untuk menghidupkan buzzer (pin 17)*/
int buzz=17;
/*variabel untuk menyimpan waktu*/
String waktu;
/*array untuk menampilkan data waktu pada seven segment*/
char _waktu[10];
/*pin arduino untuk menghidupkan led “:”(pin 3)*/
int led=3;
/*pin arduino untuk tombol 3(tombol up)*/
int up=4;
/*pin arduino untuk tombol 2(tombol menu)*/
int menu=5;
/*pin arduino untuk tombol 1(tombol down)*/
int down=6;
/*
arti kode tampilan seven segment
0=normal
1=setting jam
2=setting menit
3=setting alarm jam
4=setting alarm menit
*/

int showMenu=0;
/*counter animasi kedip saat setting jam dan menit*/
int kedip=0;
/*memory saat tombol 3 ditekan (tombol up)*/
bool upPressed=false;
/*memory saat tombol 2 ditekan (tombol menu)*/
bool menuPressed=false;
/*memory saat tombol 1 ditekan (tombol down)*/
bool downPressed=false;
/**************************************************/
void setup() {
/*perintah standby max7219 dari kondisi sleep*/
sevenSegment.shutdown(0,false);
/*pengaturan brightness seven segment 0-15*/
sevenSegment.setIntensity(0,5);
/*clear seven segment*/
sevenSegment.clearDisplay(0);
/*pengaturan serial untuk monitoring pada PC*/
Serial.begin(9600);
/*pengaturan rtc untuk DS3231*/
rtc.begin();
/*setting status pin input dan outpur*/
pinMode(led,OUTPUT);
pinMode(buzz,OUTPUT);
pinMode(up,INPUT);
pinMode(down,INPUT);
pinMode(menu,INPUT);
/*setting timer led berkedip 500 mS*/
tNormal.oscillate(led,500,LOW);
/*setting timer update display seven segment*/
tNormal.every(1000, updateWaktu);
/*setting timer buzzer berbunyi 300mS */
tAlarm.oscillate(buzz,300,LOW);
/*setting timer kondisi tombol*/
tSet.every(100, bacaTombol);
/*alamat EEPROM untuk menyimpan jam saat alarm*/
alarmJam=EEPROM.read(addressJam);
alarmMenit=EEPROM.read(addressMenit);
/*cek data alarm di EEPROM*/
if((alarmJam<0)||(alarmJam>23)){
EEPROM.update(addressJam, 0);
}
if((alarmMenit<0)||(alarmMenit>59)){
EEPROM.update(addressMenit, 0);
}
alarmJam=EEPROM.read(addressJam);
alarmMenit=EEPROM.read(addressMenit);
}
/***********************************************/
void loop() {
/*
* program utama
* Update timer utama
* Update timer buzzer
* Update timer setting
*/

  if(showMenu==0){
tNormal.update();
}
  if(_buzzer==true){
tAlarm.update();
}
tSet.update();
}
/*fungsi menampilkan data pada seven segment*/
void dataMAX(char first,char second, char third, char fourth){
sevenSegment.setChar(0, 0, first, false);
sevenSegment.setChar(0, 1, second, false);
sevenSegment.setChar(0, 2, third, false);
sevenSegment.setChar(0, 3, fourth, false);
}
/*fungsi update data waktu pada seven segment*/
/* fungsi mengirim data pada serial untuk monitoring*/
void updateWaktu(){
dataMAX(_waktu[0], _waktu[1], _waktu[3], _waktu[4]);
Serial.print(“Alarm: “);
Serial.println(_alarm);
Serial.print(“Waktu: “);
Serial.println(waktu);
}
/*fungsi memeriksan kondisi tombol 1,2 dan 3*/
void bacaTombol(){
int upStat=digitalRead(up);
int downStat=digitalRead(down);
int menuStat=digitalRead(menu);
if((menuStat==LOW)&&(menuPressed==false)){
menuPressed=true;
showMenu++;
if((showMenu==4)&&(_alarmEdit==true)){
_alarmEdit=false;
EEPROM.update(addressJam,alarmJam);
_buzzer=false;
}
else if((showMenu==5)&&(_alarmEdit==true)){
_alarmEdit=false;
EEPROM.update(addressMenit,alarmMenit);
_buzzer=false;
}
if(showMenu==5){
showMenu=0;
}
digitalWrite(led,LOW);
}
if(menuStat==HIGH){
menuPressed=false;
}
if(upStat==HIGH){
upPressed=false;
}
if(downStat==HIGH){
downPressed=false;
}
waktu=rtc.getTimeStr();
int jam=(waktu.substring(0,2)).toInt();
int menit=(waktu.substring(3,5)).toInt();
int detik=(waktu.substring(6,8)).toInt();
sprintf(_waktu,“%02d:%02d:%02d”,jam,menit,detik);
sprintf(_alarm,“%02d:%02d”,alarmJam,alarmMenit);
if((jam==alarmJam)&&(menit==alarmMenit)&&(detik==0)){
_buzzer=true;
}
else if((jam!=alarmJam)&&(menit==alarmMenit)&&(detik==2)){
_buzzer=false;
digitalWrite(buzz,LOW);
}
//set jam
if(showMenu==1){
if((upStat==LOW)&&(upPressed==false)){
upPressed=true;
jam++;
if(jam>=24){
jam=0;
}
rtc.setTime(jam,menit,detik);
}
if((downStat==LOW)&&(downPressed==false)){
downPressed=true;
jam–;
if(jam<=-1){
jam=23;
}
rtc.setTime(jam,menit,detik);
}
setJam();
}
//set menit
if(showMenu==2){
if((upStat==LOW)&&(upPressed==false)){
upPressed=true;
menit++;
if(menit>=60){
menit=0;
}
rtc.setTime(jam,menit,detik);
}
if((downStat==LOW)&&(downPressed==false)){
downPressed=true;
menit–;
if(menit<=-1){
menit=59;
}
rtc.setTime(jam,menit,detik);
}
setMenit();
}
//set alarm jam
if(showMenu==3){
if((upStat==LOW)&&(upPressed==false)){
upPressed=true;
alarmJam++;
if(alarmJam>=24){
alarmJam=0;
}
_alarmEdit=true;
}
if((downStat==LOW)&&(downPressed==false)){
downPressed=true;
alarmJam–;
if(alarmJam<=-1){
alarmJam=23;
}
_alarmEdit=true;
}
setAlarmJam();
}
//set alarm menit
if(showMenu==4){
if((upStat==LOW)&&(upPressed==false)){
upPressed=true;
alarmMenit++;
if(alarmMenit>=60){
alarmMenit=0;
}
_alarmEdit=true;
}
if((downStat==LOW)&&(downPressed==false)){
downPressed=true;
alarmMenit–;
if(alarmMenit<=-1){
alarmMenit=59;
}
_alarmEdit=true;
}
setAlarmMenit();
}
}
/*fungsi data tampilan seven segment saat setting jam*/
void setJam(){
if(kedip==0){
dataMAX(_waktu[0], _waktu[1], _waktu[3], _waktu[4]);
}
if(kedip==2){
dataMAX(‘ ‘, ‘ ‘, _waktu[3], _waktu[4]);
}
kedip++;
if(kedip>=4){
kedip=0;
}
}
/*fungsi data tampilan seven segment saat setting menit*/
void setMenit(){
if(kedip==0){
dataMAX(_waktu[0], _waktu[1], _waktu[3], _waktu[4]);
}
if(kedip==2){
dataMAX(_waktu[0], _waktu[1], ‘ ‘, ‘ ‘);
}
kedip++;
if(kedip>=4){
kedip=0;
}
}
/*fungsi data tampilan seven segmen saat setting alarm jam*/
void setAlarmJam(){
dataMAX(_alarm[0], _alarm[1], ‘ ‘, ‘ ‘);
}
/*fungsi data tampilan seven segmen saat setting alarm menit*/
void setAlarmMenit(){
dataMAX(‘ ‘, ‘ ‘, _alarm[3], _alarm[4]);
}

Hasil

Data Pendukung

Skematik Jam NANO

Contoh Program dan Library

DS3231 Datasheet

MAX7219 Datasheet

Bagikan informasi tentang Membuat jam digital dengan JAM Shield NANO V1 dan Arduino Nano kepada teman atau kerabat Anda.

Membuat jam digital dengan JAM Shield NANO V1 dan Arduino Nano | Bekerja Berkarya Untuk Negeri

2 komentar untuk Membuat jam digital dengan JAM Shield NANO V1 dan Arduino Nano

Silahkan tulis komentar Anda

Your email address will not be published. Required fields are marked *

*

Mungkin Anda tertarik produk berikut ini:

Contact Info

Buka Senin - Sabtu (09.00 - 17.00)

Telpon : (0274) 2830117
Email : mataramkarya@gmail.com
cc : sales@mataramkarya.com

logo logo logoan  

CV. Mataram Karya merupakan perusahaan yang bergerak dibidang jasa konsultasi elektronik dan desain, didirikan pada tahun 2012 dan mengawali prjalanannya dengan membuka jasa bimbingan pembuatan alat tugas akhir & robot untuk lomba.

 
SIDEBAR