Jam 7

Saya memerlukan breadboard untuk experimen selanjutnya. Sayangnya 2 breadboard saya terpakai oleh Jambredbrod. Saya terpaksa menggusur semua komponen jambredbrod dari breadboard. Karena merasa sayang, saya membuat jambredbrod menjadi rangkaian permanen. Saya pun memindahkan komponen-komponen jambredbrod ke PCB generik.

Memindahkan Jambredbrod ke PCB generik

Memindahkan Jambredbrod ke PCB generik

Memindahkan ke PCB lubang-lubang ini bukan hal yang mudah. Kita harus membuat jalur-jalur antar komponen secara manual. Saya membuat jalur-jalur ini dengan kaki-kaki komponen itu sendiri yang dibengkokkan, sisa-sisa potongan kaki-kaki komponen, dan kabel. Terus terang, saya lebih suka mendesain PCB dengan Fritzing dan kemudian meng-etching PCB. Cara ini sudah terbukti rapi dan anti kusut. Tapi berhubung saya mau menggusur dengan cepat, maka saya langsung mengerjakannya di PCB lubang.

Singkat kata, Jambredbrod berganti nama menjadi Jam 7 alias jam digital menggunakan 7-segment. Karena saya ingin membuat Jam 7 ini permanen, saya menggunakan embedded Arduino dengan ATmega328 (silakan baca konsepnya di: Arduino to breadboard). Untuk wiring konsepnya sama dengan Jambredbrod tapi ada penyesuaian pin. Penyesuaian ini berakibat penyesuaian code juga.

Jam 7

Jam 7

Supaya bisa tahan lama dan anti-korslet, saya pun mencari ide untuk casing yang bisa melindungi Jam 7. Tengok sana, tengok sini, nemu casing jadul. PCB Jam 7 kebesaran dikit banget di casing ini. Perlu diperkecil supaya bisa masuk casing dengan baik.

Tidak bisa masuk casing

Tidak bisa masuk casing

Saya malas menggergaji PCB untuk memperkecilnya supaya bisa masuk casing. Jadi saya mencari alternatif lain. Ada beberapa alternatif yang bisa dipakai. Tapi saya memilih casing bekas CD. Jadi walau pun jamnya digital, tapi bentuknya bundar seperti jam analog/jarum biasa, hehehe… keren juga. Di bawah ini adalah fotonya dengan casing CD.

Jam 7 anti biasa

Jam 7 anti biasa

Jadilah Jam 7 ini sebuah jam yang anti biasa. Selain dibuat sendiri, bentuknya juga unik dengan penggunaan barang-barang yang tersedia di sekitar. Anda bisa membuatnya sendiri kok!

Di bawah ini adalah code untuk Jam 7 hasil modifikasi dari Jambredbrod. Saya menghilangkan tombol penyesuai. Kalau di foto nampak 3 buah tombol, itu belum berfungsi. Sejatinya saya mendesain ke-3 tombol itu untuk mencocokkan jam, tapi karena sudah kemalaman, saya belum menyambungkannya ke Arduino. Oh iya, saya menghilangkan blink LED penunjuk detik. Saya hanya menggunakan titik di digit ke-2 seven segments. Supaya lebih praktis saja.

/*
Emanuel Setio Dewo, setio.dewo@gmail.com
06/11/2012
"Jambret" (jam breadboard)
*/

#include 
#include "RTClib.h"
RTC_DS1307 RTC;

byte pin_digit[] = { 2, 1, 0, 3 };
//byte pin_segmen[] = { 10, 12, 6, 8, 7, 11, 5, 9 };
byte pin_segmen[] = { 11, 13, 6, 8, 7, 12, 5, 9 };

byte angka[] = {
  1, 1, 1, 1, 1, 1, 0, 0, // 0
  0, 1, 1, 0, 0, 0, 0, 0, // 1
  1, 1, 0, 1, 1, 0, 1, 0, // 2
  1, 1, 1, 1, 0, 0, 1, 0, // 3
  0, 1, 1, 0, 0, 1, 1, 0, // 4
  1, 0, 1, 1, 0, 1, 1, 0, // 5
  1, 0, 1, 1, 1, 1, 1, 0, // 6
  1, 1, 1, 0, 0, 0, 0, 0, // 7
  1, 1, 1, 1, 1, 1, 1, 0, // 8
  1, 1, 1, 1, 0, 1, 1, 0 // 9
};

int jeda = 1000;
long sblm = 0;
boolean dot = LOW;
byte pin_dot = 14;
byte jam = 0;
byte menit = 0;
byte detik = 0;
byte detik0 = 0;
byte pin_tombol = A0;

void setup() {
  // init
  init_segments();
  hapus();

  Wire.begin();
  RTC.begin();
  if (!RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  delay(500);
}

void init_segments() {
  for (int i=0; i<4; i++) {
    pinMode(pin_digit[i], OUTPUT);
    digitalWrite(pin_digit[i], LOW);
  }
  for (int i=0; i<8; i++) {
    pinMode(pin_segmen[i], OUTPUT);
    digitalWrite(pin_segmen[i], HIGH);
  }
}

void loop() {
  baca_waktu();
  tulis_waktu();
}

void tulis_waktu() {
  // tuliskan jam
  if (jam < 10) {
    tulis(0, 0);
  }
  else {
    int _jam = jam / 10;
    tulis(0, _jam);
  }
  byte __jam = jam %10;
  tulis(1, __jam);
  
  // tuliskan menit
  if (menit < 10) {
    tulis(2, 0);
  }
  else {
    int _menit = menit / 10;
    tulis(2, _menit);
  }
  tulis(3, menit %10);
}

void tulis(int d, int a) {
  hapus();
  digitalWrite(pin_digit[d], HIGH);
  int idx = a * 8;
  for (int i=0; i<8; i++) {
    if (angka[idx+i] == 1) digitalWrite(pin_segmen[i], LOW);
    else digitalWrite(pin_segmen[i], HIGH);
  }
  
  if (detik0 != detik) {
    detik0 = detik;
    if (dot == true) dot = false; else dot = true;
  }

  if (d == 1) {
    if (dot) {
      digitalWrite(pin_segmen[7], HIGH);
      //digitalWrite(pin_dot, HIGH);
    }
    else {
      digitalWrite(pin_segmen[7], LOW);
      //digitalWrite(pin_dot, LOW);
    }
  }

  delayMicroseconds(100);
}

void hapus() {
  for (int i=0; i<4; i++) digitalWrite(pin_digit[i], LOW);
  for (int i=0; i<8; i++) digitalWrite(pin_segmen[i], HIGH);
}

Iklan

Tentang Emanuel Setio Dewo

Tumbuh, Berkembang, Berbuah...
Pos ini dipublikasikan di Arduino, Catatan, Code, Dewo, Elektronika, Personal, Prototype dan tag , , . Tandai permalink.

17 Balasan ke Jam 7

  1. toko87rd berkata:

    kg…mau tanya ,..ko gd rangkayannya…sy juga bikin rangkayan dari fritzing….tp saya masih awam di dunia elektronik

  2. edy tio berkata:

    Mas klu beli skema am komponenya bisa ngk?
    Berapa+ ongkos kirim?

  3. Salam kenal mas Dewo, saya hendi 😀
    cara untuk mencocokkan jamnya bagaimana mas Dewo? kan yang versi arduino nano + breadboard tinggal pencet 1 tombol ketika arduino terpasang ke PC?

  4. REY berkata:

    mas tolong minta dikirimin source code yg memakai tombol dnk mas ke email saya reverbnationkhaizal@gmail.com
    makasih sblmnya 😀

  5. ugan berkata:

    mas dewo library rtc-nya mana ?
    karena tidak semua library yg di google sama

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s