Minggu, 14 Juli 2024

Jam Digital Led Dot Matrix max 7219 & Atmega Board

 Jam Digital Led Dot Matrix max7219

Pertemuan Kita Kali ini akan Membahas Tentang Jam Digital. Di Era Modern seperti sekarang ini Digital telah Mendominasi Gaya hidup orang jaman sekarang. 

Salah satu yang akan kita bahas adalah Jam digital Max 7219 Kenapa dengan led dot Matrix ? Yupp 

Tentunya Tampilan nya besar dan nampak jelas dari kejauahan . Lalu Bagaimana car membuat nya Yuk ikuti tahap demi tahap. 

Bahan Yang Di Perlukan adalah sebagai berikut: 
    1. Led Dot Matrix Max 7219 Modul (8 Modul)
    2. Board Atmega 328 
    3. RTC Ds3231 (Termasuk pada papan)
    4. Kabel Jamper 
    5. Sistem Penyambungan ;SPI
Setelah kita Rangkai kita teliti lagi dan jika sudah betul kita selanjutnya membuat coding 

Coding Pertama:

#include "DS3231.h"
#include "Adafruit_GFX.h"
#include "Max72xxPanel.h"

DS3231 rtc(SDA, SCL);

const byte LDR_PIN = 2; // LDR Sensor pin // tidak dipakai
const byte CS_PIN = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf http://arduino.cc/en/Reference/SPI )
const byte H_DISPLAYS =8; // Horizontal displays number
const byte V_DISPLAYS = 1; // Vertical displays number

Max72xxPanel matrix = Max72xxPanel(CS_PIN, H_DISPLAYS, V_DISPLAYS);

const byte WAIT = 5000;
const byte SPACER = 1;
const byte FONT_WIDTH = 5+ SPACER; // The font width is 5 pixels

void adjustClock(String data) {
  byte _day = data.substring(0,2).toInt();
  byte _month = data.substring(3,5).toInt();
  int _year = data.substring(6,10).toInt();
  byte _hour = data.substring(11,13).toInt();
  byte _min = data.substring(14,16).toInt();
  byte _sec = data.substring(17,19).toInt();
  rtc.setTime(_hour, _min, _sec);
  rtc.setDate(_day, _month, _year);
  Serial.println(F(">> Datetime successfully set!"));
}

String outputStrClock() {
  String _output;
  _output = rtc.getDateStr();
  _output.concat("  ");
  _output.concat(rtc.getTimeStr());
  _output.concat("  ");
  _output.concat(rtc.getTemp());
  _output.concat((char)247);
  _output.concat("C");
  return _output;
}

byte ledintensitySelect(int light) {
  byte _value = 0;
  if (light >= 0 && light <= 127) {
    _value = 15;
  } else if (light >= 128 && light <= 319) {
    _value = 10; 
  } else if (light >= 320 && light <= 512) {
    _value = 5;
  }
  return _value;
};

void setup() {
  pinMode(LDR_PIN, INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println(F(">> Arduino 32x8 LED Dot Matrix Clock!"));
  Serial.println(F(">> Use <dd/mm/yyyy hh:mm:ss> format to set clock's date and hour!"));
  rtc.begin();
  matrix.setPosition(0, 0, 0);
  matrix.setPosition(1, 1, 0);
  matrix.setPosition(2, 2, 0);
  matrix.setPosition(3, 3, 0);
  matrix.setRotation(0, 1);    
  matrix.setRotation(1, 1);
  matrix.setRotation(2, 1);
  matrix.setRotation(3, 1);
}

void loop() {
  byte ledIntensity = ledintensitySelect(analogRead(LDR_PIN));
  matrix.setIntensity(ledIntensity); // value between 0 and 15 for brightness
  String output = outputStrClock();
  
  for ( int i = 0 ; i < FONT_WIDTH * output.length() + matrix.width() - 1 - SPACER; i++ ) {
    matrix.fillScreen(LOW);
    output = outputStrClock();
    int letter = i / FONT_WIDTH;
    int x = (matrix.width() - 1) - i % FONT_WIDTH;
    int y = (matrix.height() - 8) / 2; // center the text vertically
    while ( x + FONT_WIDTH - SPACER >= 0 && letter >= 0 ) {
      if ( letter < output.length() ) {
        matrix.drawChar(x, y, output[letter], HIGH, LOW, 1);
      }
      letter--;
      x -= FONT_WIDTH;
    }
    matrix.write();
    delay(WAIT);
  }

  if (Serial.available() > 0) {
    adjustClock(Serial.readString());
  }
}



Coding Ke dua :
// Proyek Membuat Jam Digital Menggunakan Led Dot Matrix 8x8 (8Modul)

// created by upir, 2023
//Editing coding By DDC OFFICIAL, 2024


#include <Arduino.h>
#include <U8g2lib.h>
#include "RTClib.h"

RTC_DS3231 rtc;

U8G2_MAX7219_64X8_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* cs=*/ 10, /* dc=*/ U8X8_PIN_NONE, /* reset=*/ U8X8_PIN_NONE);
char time_string[10];
int h;
int m;

void setup(void) {
pinMode(9, OUTPUT); 
pinMode(4, OUTPUT); 
//digitalWrite(4,HIGH);
  
u8g2.begin(); 
u8g2.setContrast(10); 

if (! rtc.begin()) { 
abort();
  
}
 
 //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

}

void loop(void) {

DateTime now = rtc.now(); 
//t = rtc.getTime();
h=now.hour();
m=now.minute();
//stt=now.second();
sprintf(time_string, "%d:%02d:%02d", now.hour(), now.minute(), now.second());
u8g2.setFont(u8g2_font_t0_11b_tn);   
u8g2.clearBuffer(); 
u8g2.drawStr(10, 8, time_string);  
u8g2.sendBuffer(); 
delay(1000); 

}
Bagi Yg kesulitan Menulis Coding bisa download di Link Berikut ini:

Link download :
https://drive.google.com/drive/folders/1oLFEHdjM-sueKU4wq3uW5tUMwCQzU6jF?usp=sharing

Terima Kasih Semoga Bermanfaat .
DDC OFFICIAL\\Dody Darmadi Chanel
=======================================================================



0 komentar:

Posting Komentar