Saturday, October 29, 2022

GAMBAR MASJID P10 1 PANEL DENGAN NANO

 /* JUDUL : PROGRAM JAM DIGITAL P10 1 PANEL DENGAN NANO & RTC 3231

 * COPY RIGHT : BELAJAR TEHNOLOGI JAMAN NOW

 * PUBLISH : 13 MAR 2022

 * EMAIL   : aplikasihebatstudio@gmail.com

 * 

 * NANO - P10

 * ----------

 * PIN YANG DISAMBUNG

 * Arduino              P-10

 * D6          ->      A

 * D7          ->      B

 * D8          ->      SCLK

 * D9          ->      OE (ENABLE)

 * D11         ->      DATA

 * D13         ->      CLK

 * GND         ->      GND


RTC 3231

--------

 * GND        >>      Pin GND

 * VCC        >>      Pin 5V

 * SDA        >>      Pin SDA  (A4)

 * SCL        >>      Pin SCL (A5)

 * SQW        >>      tidak dihubungkan

 * 32K        >>      tidak dihubungkan


*/



#include <Wire.h> 

#include "RTClib.h" 

#include "DMD.h"        

#include "TimerOne.h"

#include "SystemFont5x7.h"

#include "angka6x13.h"

#include "angka_2.h"


#define DISPLAYS_ACROSS 1

#define DISPLAYS_DOWN 1


/***** P10 DISPLAY SETTING ***********************************/

DMD dmd( DISPLAYS_ACROSS , DISPLAYS_DOWN);


RTC_DS3231 rtc;



 // int tahun;                                                                              

  byte jam;

  byte menit;                                                                                                                                                                    //| 

  byte detik;

 


 

 void drawText(int kolom,int baris,String text);

   

void ScanDMD()

{

  dmd.scanDisplayBySPI();

}




void setup()

{  

  Timer1.initialize( 4000 );   // I find the default 5000 gives a visible flicker    

  Timer1.attachInterrupt( ScanDMD );  

  dmd.selectFont(SystemFont5x7);

  dmd.clearScreen( true );

   Wire.begin();

   rtc.begin();

 // just datatime  

 //  rtc.adjust(DateTime(2022, 03, 12, 12, 8, 0));


}



void loop()

{

  jam_besar(10);

  gambar_masjid();

  delay(5000);

  drawText1(32,16," ");

  delay(1000);

}



void jam_besar(int lama)

{


 dmd.clearScreen(true);

//dmd.drawBox(32,0,63,15,GRAPHICS_ON);


  for (int i=0;i<=lama;i++)

  {

   DateTime now = rtc.now();

int jam= now.hour();

int menit=now.minute();

int detik=now.second();

String waktu1=Konversi(jam)+":"+Konversi(menit)+":"+Konversi(detik);

String waktu2=Konversi(jam)+" "+Konversi(menit)+" "+Konversi(detik);;


    



dmd.selectFont(angka6x13); 

drawText(1, 0, Konversi(jam)); //koordinat tampilan

//titik 2

dmd.drawLine(16,4,16,5,GRAPHICS_NORMAL);

dmd.drawLine(15,4,15,5,GRAPHICS_NORMAL);


dmd.drawLine(16,9,16,10,GRAPHICS_NORMAL);

dmd.drawLine(15,9,15,10,GRAPHICS_NORMAL);


dmd.selectFont(angka6x13);

drawText(18, 0, Konversi(menit));


 delay(500);

dmd.drawLine(16,4,16,5,GRAPHICS_NOR);

dmd.drawLine(15,4,15,5,GRAPHICS_NOR);

dmd.drawLine(16,9,16,10,GRAPHICS_NOR);

dmd.drawLine(15,9,15,10,GRAPHICS_NOR);


 delay(500);

 }


 dmd.clearScreen(true);

}



void drawText(int kolom,int baris,String text)

{

int pj_text=text.length()+1;

char text_char[pj_text];

text.toCharArray(text_char,pj_text);

dmd.drawString(kolom,baris,text_char,pj_text,GRAPHICS_NORMAL);





///Konversi angka agar ada nol didepannya jika diawah 10

String Konversi(int sInput) {

  if (sInput < 10)

  {

    return"0" + String(sInput);

  }

  else

  {

    return String(sInput);

  }

}



void gambar_masjid()

{

int GRAPHICS_ON=GRAPHICS_NORMAL;

// dmd.clearScreen(true);

//dmd.drawBox(32,0,63,15,GRAPHICS_ON);

//gambar masjid

//kiri

dmd.drawLine(0,6,0,6,GRAPHICS_NORMAL);

dmd.drawLine(1,5,1,15,GRAPHICS_ON);

dmd.drawLine(2,0,2,13,GRAPHICS_ON);

dmd.drawLine(3,5,3,15,GRAPHICS_ON);

dmd.drawLine(4,6,4,6,GRAPHICS_ON);

//tengah


dmd.drawLine(15,0,15,0,GRAPHICS_ON);

dmd.drawLine(14,1,16,1,GRAPHICS_ON);

dmd.drawLine(13,2,17,2,GRAPHICS_ON);

dmd.drawLine(12,3,18,3,GRAPHICS_ON);

dmd.drawLine(11,4,19,4,GRAPHICS_ON);

dmd.drawLine(11,5,19,5,GRAPHICS_ON);

dmd.drawLine(12,6,18,6,GRAPHICS_ON);

dmd.drawLine(13,7,17,7,GRAPHICS_ON);

dmd.drawLine(5,8,25,8,GRAPHICS_ON);

dmd.drawLine(5,10,25,10,GRAPHICS_ON);

dmd.drawLine(5,11,7,11,GRAPHICS_ON);dmd.drawLine(9,11,14,11,GRAPHICS_ON);dmd.drawLine(16,11,21,11,GRAPHICS_ON);dmd.drawLine(23,11,25,11,GRAPHICS_ON);

dmd.drawLine(5,12,6,12,GRAPHICS_ON);dmd.drawLine(10,12,13,12,GRAPHICS_ON);dmd.drawLine(17,12,20,12,GRAPHICS_ON);dmd.drawLine(24,12,25,12,GRAPHICS_ON);

dmd.drawLine(5,13,6,13,GRAPHICS_ON);dmd.drawLine(10,13,13,13,GRAPHICS_ON);dmd.drawLine(17,13,20,13,GRAPHICS_ON);dmd.drawLine(24,13,25,13,GRAPHICS_ON);

dmd.drawLine(5,14,6,14,GRAPHICS_ON);dmd.drawLine(10,14,13,14,GRAPHICS_ON);dmd.drawLine(17,14,20,14,GRAPHICS_ON);dmd.drawLine(24,14,25,14,GRAPHICS_ON);

dmd.drawLine(5,15,25,15,GRAPHICS_ON);

//kanan

dmd.drawLine(26,6,26,6,GRAPHICS_ON);

dmd.drawLine(27,5,27,15,GRAPHICS_ON);

dmd.drawLine(28,0,28,13,GRAPHICS_ON);

dmd.drawLine(29,5,29,15,GRAPHICS_ON);

dmd.drawLine(30,6,30,6,GRAPHICS_ON);

//delay(2000);


}




void drawText1(int kolom,int baris,String text)

{

long RandNumX;

long RandNumY;


//RandNumX=random(kolom);

//RandNumY=random(baris);


for(int i=0;i<1500;i++)

{

RandNumX=random(kolom);

RandNumY=random(baris);

dmd.drawLine( RandNumX, RandNumY, RandNumX+2, RandNumY+2, GRAPHICS_NOR );

delay(1);

}

//dmd.drawString(kolom,baris,text_char,pj_text,GRAPHICS_NOR);

}






Sunday, June 26, 2022

Membuat running text untuk mobil keren ( Arduino Source Code )

 //#Running text untuk mobil atau motor#


#include <MD_Parola.h>

#include <MD_MAX72xx.h>

#include <SPI.h>



#define HARDWARE_TYPE MD_MAX72XX::FC16_HW

#define MAX_DEVICES 4

#define CLK_PIN   7 

#define DATA_PIN  6 

#define CS_PIN    8  


#define kiri 3

#define kanan 4

#define rem 5


// HARDWARE SPI

MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);


int i = 0;

int j=0;

int k=0;



void panah_kiri();

void panah_kanan();

void Stop_blink();

void Rem_blink();


textEffect_t texteffect[] =

{

  PA_PRINT,

  PA_SCAN_HORIZ,

  PA_SCROLL_LEFT,

  PA_WIPE,

  PA_SCROLL_UP_LEFT,

  PA_SCROLL_UP,

  PA_OPENING_CURSOR,

  PA_GROW_UP,

  PA_MESH,

  PA_SCROLL_UP_RIGHT,

  PA_BLINDS,

  PA_CLOSING,

  PA_RANDOM,

  PA_GROW_DOWN,

  PA_SCAN_VERT,

  PA_SCROLL_DOWN_LEFT,

  PA_WIPE_CURSOR,

  PA_DISSOLVE,

  PA_OPENING,

  PA_CLOSING_CURSOR,

  PA_SCROLL_DOWN_RIGHT,

  PA_SCROLL_RIGHT,

  PA_SLICE,

  PA_SCROLL_DOWN

};


void setup() {

  pinMode(kiri, INPUT);

  pinMode(kanan, INPUT);

  pinMode(rem, INPUT);

  myDisplay.begin();

  myDisplay.setIntensity(5);

  myDisplay.setTextAlignment(PA_CENTER);

  myDisplay.setPause(1000);

  myDisplay.setSpeed(20);

  myDisplay.displayClear();

}



void loop() {

   int tombolkiri=digitalRead(kiri);

   int tombolkanan=digitalRead(kanan);

   int tombolrem=digitalRead(rem);


   if (tombolkiri==1 and tombolkanan==1)

    {

      Hati2_blink();

    }

  

   if (tombolkiri==1)

    {

      j++;

      if(j==1)

      {

        // myDisplay.displayReset();

         myDisplay.displayClear();

         myDisplay.print("                            ");  

      }

      panah_kiri();

      k=0;

    } 

    else if (tombolkanan==1)

    {

      j++;

      if(j==1)

      {

         myDisplay.displayClear();

         myDisplay.print("                            ");  

      }

      panah_kanan();

      k=0;

    }

    else if (tombolrem==1)

    {

      Stop_blink();

    }

    else

    {

      j=0;

      k++;

       if(k==1)

      {

         myDisplay.displayClear();

         myDisplay.print("                            ");  

      }


      if ( k>10) {k=2;}

      myDisplay.setIntensity(2);

      myDisplay.setTextAlignment(PA_CENTER);

      myDisplay.setPause(1);

      myDisplay.setSpeed(30);

 

    

     if (myDisplay.displayAnimate()) {

      i=2;

      myDisplay.displayText("Welcome to Youtube Channel Belajar Tehnologi jaman Now", myDisplay.getTextAlignment(), myDisplay.getSpeed(), myDisplay.getPause(), texteffect[i], texteffect[i]);

      myDisplay.displayReset();

     }

    }

 

}



void panah_kiri()

{

  myDisplay.setIntensity(5);

  myDisplay.setTextAlignment(PA_CENTER);

  myDisplay.setPause(0);

  myDisplay.setSpeed(20);

 

if (myDisplay.displayAnimate()) {

      i=2; 

      myDisplay.displayText("<<<< <<<< <<<< <<<<", myDisplay.getTextAlignment(), myDisplay.getSpeed(), myDisplay.getPause(), texteffect[i], texteffect[i]);

     myDisplay.displayReset();

     }

}



void panah_kanan()

{

  myDisplay.setIntensity(5);

  myDisplay.setTextAlignment(PA_CENTER);

  myDisplay.setPause(0);

  myDisplay.setSpeed(20);

 

if (myDisplay.displayAnimate()) {

      i=21; 

      myDisplay.displayText(">>>> >>>> >>>> >>>>", myDisplay.getTextAlignment(), myDisplay.getSpeed(), myDisplay.getPause(), texteffect[i], texteffect[i]);

     myDisplay.displayReset();

     }

}


void Stop_blink()

{

myDisplay.print("<STOP>");

delay(200);

myDisplay.print("         ");  

delay(200);

}


void Hati2_blink()

{

myDisplay.print("Hati2 ");

delay(200);

myDisplay.print("         ");  

delay(200);

}


Monday, March 7, 2022

DIGITAL CLOCK USING ARDUINO WEMOS D1 + TM 1637 + RTC DS 1307

 




Arduino program

/***************

 * Digital clock Wemos + TM 1637 + DS 1307 

 * TM1637 dan Arduino Wemos

 * youtube channel : Belajar tehnologi jaman now

Koneksi antar Pin :

Wemos                                TM1637
D5                    ------>          CLK     
D6                    ------>          DIO
VCC/3V3        ------>          VCC
GND                ------>          GND


Wemos                               RTC1307
D1                    ------>           SCL 
D2                    ------>           SDA
VCC/3V3        ------>          VCC
GND                ------>         GND

 ***************/

//Library modul TM1637

#include <TM1637Display.h>

#include <Wire.h>

#include "RTClib.h"


RTC_DS1307 rtc;

//koneksi pin CLK ke pin D5 Arduino

//koneksi pin DIO ke pin D6 Arduino

#define CLK D5

#define DIO D6


TM1637Display display(CLK, DIO);


void setup()

{

  rtc.begin();

  display.clear();

  display.setBrightness(0x05);  

  //setting jam pertama kali

 // rtc.adjust(DateTime(2022, 3, 6, 22, 26, 0));

}


void loop()

{  


  DateTime now = rtc.now();

  int jam=now.hour();

  int menit=now.minute();

  display.showNumberDecEx(menit,0,true,2,2);

  display.showNumberDecEx(jam,0x40,true,2,0);

  delay(500);

  display.showNumberDecEx(jam,0,true,2,0); 

  delay(500);

  

}



* library TM1637 : 

  https://github.com/avishorp/TM1637/


Video Youtube Channel :

https://www.youtube.com/channel/UCy9PYJmJXElN9LaHZw_PuTA











Friday, March 4, 2022

Setup Telegrambot long pooling method using php ( with menu keyboard )

<?php //Put Your telegrambot Toke in here define('TOKEN','5198830189:AAEY2XLkRWgkmmZR_EcRtDidKGQDFGESwetrgd'); //setting menu $line1 = array("MENU1","MENU2","MENU3"); $line2 = array("MENU4","MENU5","MENU6"); $line3 = array("MENU7","MENU8","MENU9"); $replyMarkup = array('keyboard' => array($line1,$line2,$line3),
"resize_keyboard" => true,"one_time_keyboard" => false); $encodedMarkup = json_encode($replyMarkup); //Function for send to api bot function Send2Bot($command){ return 'https://api.telegram.org/bot'.TOKEN.'/'.$command; } function SendData2Bot($command,$data){ $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data), ), ); $context = stream_context_create($options); $result = file_get_contents(Send2Bot($command), false, $context); return $result; } function SendCurl($command,$data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,Send2Bot($command)); curl_setopt($ch, CURLOPT_POST, count($data)); curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec ($ch); curl_close ($ch); return $result; } /* Function to get update from api bot use for long pooling method */ function GetUpdate($offset) { //send to Bot $url = Send2Bot("getUpdates")."?offset=".$offset; $result_send = file_get_contents($url); //Get result and json decode $result_json = json_decode($result_send, true); if ($result_json["ok"]==1) { return $result_json["result"]; } else { return array(); } } function RunningBot() { global $encodedMarkup; $update_id = 0; //start with offset =0, offset set to file //cek if there any file "belajarbot.last_update_id" if (file_exists("belajarbot.last_update_id")) { //if exist, read offsset $update_id = (int)file_get_contents("belajarbot.last_update_id"); } //get new update from ap bot $updates = GetUpdate($update_id); foreach ($updates as $message) { $receiveOK=false; // var_dump($message); $update_id = $message["update_id"];; $message_data = $message["message"]; //jika terdapat text dari Pengirim if (isset($message_data["text"])) { $receiveOK=true; $chatid = $message_data["chat"]["id"]; $message_id = $message_data["message_id"]; $text = $message_data["text"]; $data = array( 'chat_id' => $chatid, 'text' => 'You write message: ' . $text, 'parse_mode' => 'Markdown', 'reply_to_message_id' => $message_id ); //ada menu $data['reply_markup'] =$encodedMarkup; //send message to api bot using curl SendCurl('sendMessage',$data); } //update offset if ($receiveOK){ file_put_contents("belajarbot.last_update_id", $update_id + 1); } } } //Main Program while(true){ sleep(5); //delay 5 second RunningBot(); }



Sunday, February 13, 2022

PEMBUATAN JAM DIGITAL P10 MENGGUNAKAN Arduino nano & RTC 3231







ARDUINO PROGRAM


 /* JUDUL : PROGRAM JAM DIGITAL P10 1 PANEL DENGAN NANO & RTC 3231

 * COPY RIGHT : BELAJAR TEHNOLOGI JAMAN NOW

 * PUBLISH : 13 FEB 2022

 * EMAIL   : aplikasihebatstudio@gmail.com

 * 

 * NANO - P10

 * ----------

 * PIN YANG DISAMBUNG

 * Arduino              P-10

 * D6          ->      A

 * D7          ->      B

 * D8          ->      SCLK

 * D9          ->      OE (ENABLE)

 * D11         ->      DATA

 * D13         ->      CLK

 * GND         ->      GND


RTC 3231

--------

 * GND        >>      Pin GND

 * VCC        >>      Pin 5V

 * SDA        >>      Pin SDA  (A4)

 * SCL        >>      Pin SCL (A5)

 * SQW        >>      tidak dihubungkan

 * 32K        >>      tidak dihubungkan


*/



#include <Wire.h> 

#include "RTClib.h" 

#include "DMD.h"        

#include "TimerOne.h"

#include "SystemFont5x7.h"


#define DISPLAYS_ACROSS 1

#define DISPLAYS_DOWN 1


/***** P10 DISPLAY SETTING ***********************************/

DMD dmd( DISPLAYS_ACROSS , DISPLAYS_DOWN);


RTC_DS3231 rtc;



 // int tahun;                                                                              

  byte jam;

  byte menit;                                                                                                                                                                    //| 

  byte detik;

  byte bulan; 

  byte tahun;

  byte hari;

  byte tgl;

  int k; int j;


 

 void drawText(int kolom,int baris,String text);

 char weekDay[][7] = {"Mingg" ,"Senin","Slasa","Rabu", "Kamis", "jumat", "Sabtu"}; // array hari, dihitung mulai dari senin, hari senin angka nya =0,


  

//byte detik1=0;

void ScanDMD()

{

  dmd.scanDisplayBySPI();

}




void setup()

{  

  Timer1.initialize( 4000 );   // I find the default 5000 gives a visible flicker    

  Timer1.attachInterrupt( ScanDMD );  

  dmd.selectFont(SystemFont5x7);

  dmd.clearScreen( true );

   Wire.begin();

   rtc.begin();

 // just datatime  

 //  rtc.adjust(DateTime(2022, 02, 13, 14, 50, 0));

 k=0;

 j=0;

}



void loop()

{

  tampil_jam_kecil_tgl(30);

}





void drawText(int kolom,int baris,String text)

{

int pj_text=text.length()+1;

char text_char[pj_text];

text.toCharArray(text_char,pj_text);

dmd.drawString(kolom,baris,text_char,pj_text,GRAPHICS_NORMAL);



void tampil_jam_kecil_tgl(int lama)

{

 // dmd.clearScreen(true);

//lama=60;


String hh,mm,ss;

for(int i=0;i<lama;i++)

{   

   DateTime now = rtc.now();

   jam= now.hour();

   menit=now.minute();

   detik=now.second();   

   tahun  =  now.year();

   bulan = now.month();

   tgl  =  now.day();

                                                                                

   hh=Konversi(jam);

   mm=Konversi(menit);

   ss=Konversi(detik);


dmd.selectFont(SystemFont5x7);


if(k%2==0)

{

drawText(1,0,hh+":"+mm);

//drawText(1,9,Konversi(tgl)+"/"+Konversi(bulan));

k++;

else {

drawText(1,0,hh+" "+mm);

k=0;

}


j++;

if(j==1)

{

drawText(1,9,Konversi(tgl)+"/"+Konversi(bulan));


if(j==10)

{

drawText(1,9,String(weekDay[hari]));


}


if (j>=20) j=0;

delay(1000);



}


}



///Konversi angka agar ada nol didepannya jika diawah 10

String Konversi(int sInput) {

  if (sInput < 10)

  {

    return"0" + String(sInput);

  }

  else

  {

    return String(sInput);

  }

}



Sunday, February 7, 2021

Membuat running text 1 dan 2 baris dengan led P10 menggunakan Arduino Wemos d1 mini

 Membuat running text 1 dan 2 baris denga led P10 menggunakan Arduino Wemos d1 mini

 Untuk membuat membuat running text dengan LED menggunakan arduino wemows d1 diperlukan bahan sebagai berikut:

    1. Arduino Wemos d1 mini

    2. Led P10 + kabel konektor p10

    3. Kabel usb micro

    4. Arduino IDE Editor

 Rangkaian Lengkap

 

Pin di P10

 

 

 

Hasil gambar untuk port pin p10

 

 

 

 

Skema Rangkaian

Pin P10 ke Arduino Wemos

Pin 1(Enable)      ----> D4

Pin 2 (A)             ----> D0

Pin 4 (B)             ----> D6

Pin8 ( CLK)        ----> D5

Pin 10 (SCLK)    ----> D3

Pin 12 (DATA)    ----> D7

 

 Program Arduino

 _20210207-running_text_2baris_and_running_besar_wemosp10.ino

#include <Wire.h>
#include "RTClib.h"
#include <SPI.h>
#include <DMD2.h>
#include <fonts/SystemFont5x7.h>
#include <fonts/Arial_Black_16.h>
#include <fonts/Droid_Sans_12.h>
#include <fonts/Droid_Sans_16.h>


void Running(String s);
String Konversi(int sInput);
void jam_besar(int lama);

// Set Width to the number of displays wide you have
const int WIDTH = 2;

// You can change to a smaller font (two lines) by commenting this line,
// and uncommenting the line after it:
const uint8_t *FONT = Arial_Black_16;
const uint8_t *FONT2 = Droid_Sans_12;
const uint8_t *FONT3 =Droid_Sans_16;
const uint8_t *FONT4 = SystemFont5x7;

SPIDMD dmd(2, 1, D4,D0,D6,D3);
//// marquee values
int marX = 1;   // awal kotak running text minimal diawali 1.
int marY = 1;
int marWidth = 63;  // dimensi running text  32 dikurangi marX.
int marHeight = 16;
int marCur = marX + marWidth;  // kursor
//marCur = marX + marWidth;
int messageCount;  // karakter yang aktif
//int widthCount;    // sisa lebar satu huruf terakhir
int messageLength;  // jumlah karakter pada pesan
boolean blinking=true;
int i=0;
boolean jalan=true;

 int hours, minutes;     //jam sholat dan  menit sholat
 


// double times[sizeof(TimeName) / sizeof(char*)];


void Running_besar(String s);
int tulisan_menuju_azan(int jam,int menit,String* waktu_sholat);




// the setup routine runs once when you press reset:
void setup() {
 pinMode(D4,OUTPUT);
 digitalWrite(D4,LOW);
 
 dmd.setBrightness(250);
 dmd.begin();
 dmd.selectFont(SystemFont5x7);
 dmd.clearScreen();  
 
}


void loop()
{
   dmd.clearScreen();
   int lama=1;  //3 menit
   for(i=0;i<2*lama;i++)
    {
   Running("SELAMAT DATANG DI WORKSHOP KAMI");
    }

   dmd.clearScreen();
   lama=1;  //3 menit
   for(i=0;i<2*lama;i++)
    {
   Running_besar("SELAMAT DATANG DI WORKSHOP KAMI");
    }
    jam_besar(30);
}


void Running(String s)
{
  int jam= 10;
  int menit=10;
  int detik=10;
  String waktu1=Konversi(jam)+":"+Konversi(menit)+"  ";
  dmd.selectFont(SystemFont5x7);
  dmd.drawString(33,0,waktu1);

 
  marX=1;
  marY=9;
  jalan=true;
  while(jalan)
  {
  messageLength = s.length()+65;
  //Geser 1 pixel dulu.
  dmd.movePixels(marX, marY, marX-1, marY, marWidth, marHeight);
  marCur = marCur-1;
  if (marCur == marX + marWidth - dmd.charWidth(s[messageCount],FONT)-1) {
    marCur = marX + marWidth;
    messageCount = messageCount+1;
    if (messageCount == messageLength){
      messageCount = 0;
      jalan=false;
    }
  }

  dmd.selectFont(SystemFont5x7);
  dmd.drawChar(marCur, marY , s[messageCount]);  // tulis karakter baru setelah digeser
  delay(50);
  i++;

if(i*50 >600)
{
 // DateTime now = rtc.now();
  int jam= 10;
  int menit=10;
  int detik=10;
  String waktu1=Konversi(jam)+":"+Konversi(menit)+"  ";
  String waktu2=Konversi(jam)+" "+Konversi(menit)+"  ";

   
  if (blinking)
  {
    dmd.selectFont(SystemFont5x7);
    dmd.drawString(33,0,waktu1);
    blinking=false;
  }
  else
  {
    dmd.selectFont(SystemFont5x7);
    dmd.drawString(33,0,waktu2);
    blinking=true;
 }

  i=0;
}




}
}

///Konversi angka agar ada nol didepannya jika diawah 10
String Konversi(int sInput) {
  if (sInput < 10)
  {
    return"0" + String(sInput);
  }
  else
  {
    return String(sInput);
  }
}



void jam_besar(int lama)
{
 dmd.clearScreen();
 for (int i=0;i<=lama;i++)
  {
  int jam= 22;//now.hour();
  int menit=10;//now.minute();
  int detik=0;//now.second();
  String waktu1=Konversi(jam)+":"+Konversi(menit)+"  ";
  String waktu2=Konversi(jam)+" "+Konversi(menit)+"  ";

  dmd.selectFont(Droid_Sans_12);
  dmd.drawString(34, 3, Konversi(jam)); //koordinat tampilan
  dmd.drawString(46, 2, "::"); //koordinat tampilan
  dmd.drawString(51, 3, Konversi(menit)+"   ");
  delay(500);

  dmd.drawString(34, 3, Konversi(jam)); //koordinat tampilan
  dmd.drawString(46, 2, " "); //koordinat tampilan
  dmd.drawString(51, 3, Konversi(menit)+"   ");
  delay(500);
 }

 dmd.clearScreen();
}






void Running_besar(String s)
{

dmd.selectFont(Droid_Sans_12);
 
marX=1;
marY=4;
//DMDFrame subFrame(35, 1, 60, 14);
jalan=true;
while(jalan)
{
messageLength = s.length()+65;
//Geser 1 pixel dulu.
dmd.movePixels(marX, marY, marX-1, marY, marWidth, marHeight);
marCur = marCur-1;
if (marCur == marX + marWidth - dmd.charWidth(s[messageCount],FONT)-1) {
  marCur = marX + marWidth;
  messageCount = messageCount+1;
  if (messageCount == messageLength){
    messageCount = 0;
    jalan=false;
  }
}

dmd.drawChar(marCur, marY , s[messageCount]);  // tulis karakter baru setelah digeser
delay(40);
}

}





 

Pemrograman Running text P10 RGB dengan Arduino Nano

Pemrograman Running text P10 RGB dengan Arduino Nano PIN CONNECTION P10 RGB DENGAN ARDUINO NANO/UNO Source code arduino p10 RGB  #include ...