Sunday, January 1, 2017

Membuat running text dam jam digital dengan arduino+ DMD (dot matrix p10) (oleh aziz kurosaki)

Ini adalah sebuah posting catatan dari grup arduino indonesia , merupakan media penyimpan digital yang saya buat untuk mengabadikan proyek DMD yang dibuat oleh saudara Aziz Kurosaki

berikut ini adalah link Library DMD yang dipergunakan oleh Aziz
http://www.4shared.com/zip/vL6WzxU9ba/DMDaziz.html


berikut ini adalah source code yang dibuat oleh mas aziz kurosaki

#include <DMD.h>
#include <DejaVuSansBold9.h>

DMD display(3,1);

ISR(TIMER1_OVF_vect){
  display.refresh();
}
void inaik(String text){
    for(int x=0;x<display.height();x++){
      display.clear();
    display.drawText((display.width()-(text.length()*5))/2,0,text);
    display.drawFilledRect(0,0,96,(display.height()/2)-x,0);
    display.swapBuffers();
    delay(80);
    }
  }
void oturun(String text){
  for(int x=0;x<display.height();x++){
    display.clear();
    display.drawText((display.width()-(text.length()*5))/2,0,text);
    display.drawFilledRect(0,0,display.width(),x,0);
    display.swapBuffers();
    delay(80);
}

}
void ikanan(String text){
   for(int x=0;x<display.width();x++){
    display.clear();
   display.drawText((display.width()-(text.length()*5))/2,0,text);
   display.drawFilledRect(x,0,display.width(),16,0);
   display.swapBuffers();
   delay(30);
  }
}
void okiri(String text){
   for(int x=0;x<display.width();x++){
   display.clear();
   display.drawText((display.width()-(text.length()*5))/2,0,text);
   display.drawFilledRect(x,0,0,16,0);
   display.swapBuffers();
   delay(30);
  }
}
void otengah(String text){
  for(int x=0;x<=(display.width()/2)+1;x++){
    display.clear();
   display.drawText((display.width()-(text.length()*5))/2,0,text);
   display.drawFilledRect(48-x,0,49+x,16,0);
   display.drawLine(48-x,0,48-x,9);
   display.drawLine(49+x,0,49+x,9);
   display.swapBuffers();
   delay(30);
  }
}
void itengah(String text){
  for(int x=0;x<=(display.width()/2)+1;x++){
   display.clear();
   display.drawText((display.width()-(text.length()*5))/2,0,text);
   display.drawFilledRect(0,0,48-x,16,0);
   display.drawFilledRect(49+x,0,96,16,0);
   display.drawLine(48-x,0,48-x,9);
   display.drawLine(49+x,0,49+x,9);
    display.swapBuffers();
    delay(30);
  }
}
void imdown(String text){
   for(int x=0;x<=(display.height()/2);x++){
    display.clear();
    display.drawText((display.width()-(text.length()*5))/2,-8+x,text);
    display.swapBuffers();
    delay(80);
  }
}
void obulat(String text){
  for(int x=0;x<=(display.width()/2)+5;x++){   
    display.clear();
    display.drawText((display.width()-(text.length()*5))/2,0,text);
    display.drawFilledCircle(48,8,x,0);
    display.drawCircle(48,8,x);
    display.swapBuffers();
    delay(50);
  }
}
void masuk(byte urut,String text){
  switch (urut){
    case 0 : itengah(text);
    break;
    case 1 : inaik(text);
    break;
    case 2 : ikanan(text);
    break;
    case 3 :  imdown(text);
    break;
  }
 
}
void keluar(byte urut,String text){
  switch (urut){
    case 0 : okiri(text);
    break;
    case 1 : otengah(text);
    break;
    case 2 : oturun(text);
    break;
    case 3 : obulat(text);
    break;
  }
 
}
void setup(){
  display.enableTimer1();
  display.setDoubleBuffer(1);
  display.setFont(DejaVuSansBold9);
}

void loop(){
  String text="Aziz Kurosaki";
  masuk (random(4),text);
  delay (500);
  keluar (random(4),text);
  delay(500);
}


hasil video nya adalah sebagai berikut :






sedangakan source code jam digital dengan menggunakan arduino dan display modul p10 adalah sebagai berikut :

#include <DMD.h>
#include <SystemFont5x7.h>
#include <Arial_Black_16.h>
#include <Wire.h>
#include<Sodaq_DS3231.h>
#include <DejaVuSansBold9.h>
DMD display(3,1);
byte ldtk,lmnt,ljam,jam,mnt,dtk,count;

ISR(TIMER1_OVF_vect){
  display.refresh();
}
String konvert(byte nilai){
   if(nilai<10){ return "0"+String(nilai); }
  else { return String(nilai);}
}
void draw(byte pos){
  (count<3)?count++:count=0;
   if (pos==0){
     for (byte x=0;x<16;x++){
    display.drawFilledRect(11,0,29,16,0);
    display.drawText(11,0-x,String (konvert(ljam)));
    display.drawText(11,16-x,String (konvert(jam)));
    display.swapBuffersAndCopy();
    delay(15);
    }
  }
  if (pos==1){
     for (byte x=0;x<16;x++){
    display.drawFilledRect(40,0,58,16,0);
    display.drawText(40,0-x,String (konvert(lmnt)));
    display.drawText(40,16-x,String (konvert(mnt)));
    display.swapBuffersAndCopy();
    delay(15);
    }
  }
  if (pos==2){
    display.drawFilledRect(30,0,37,16,0);
    display.drawFilledRect(59,0,66,16,0);
    display.drawFilledCircle(33,3,count);
    display.drawFilledCircle(33,12,count);
    display.drawFilledCircle(62,3,count);
    display.drawFilledCircle(62,12,count);
    if(count>0){
      display.drawFilledCircle(33,3,count-1,0);
      display.drawFilledCircle(33,12,count-1,0);
      display.drawFilledCircle(62,3,count-1,0);
      display.drawFilledCircle(62,12,count-1,0);}
    for (byte x=0;x<16;x++){
    display.drawFilledRect(68,0,97,16,0);
    display.drawText(68,0-x,String (konvert(ldtk)));
    display.drawText(68,16-x,String (konvert(dtk)));
    display.swapBuffersAndCopy();
    delay(15);
    }
  }
}
void drawaziz(){
  char text[14]={"AZIZ_KUROSAKI"};
  display.setFont(SystemFont5x7);
  for (byte x=0;x<sizeof(text);x++){
    for(byte y=0;y<(x*6)+8;y++){
      display.clear();
      for(byte z=0;z<sizeof(text);z++){
        if (z<x){
          display.drawChar((z*6)+8,0,text[z]);
        }
      }
      display.drawChar(y,0,text[x]);
      display.swapBuffers();
      delay(8);
    }
  }
  for (byte x=sizeof(text);x>0;x--){
    for(byte y=(x*6)+8;y<97;y++){
      display.clear();
      for(byte z=0;z<sizeof(text);z++){
        if (z<x-1){
          display.drawChar((z*6)+8,0,text[z]);
        }
      }
      display.drawChar(y,0,text[x-1]);
      display.swapBuffers();
      delay(8);
    }
  }
}

void setup(){
  display.enableTimer1();
  display.setDoubleBuffer(1);
  Wire.begin();
  rtc.begin();
  drawaziz();
  display.clear();
  display.setFont(Arial_Black_16);
  DateTime now=rtc.now();
  ljam=now.hour()-1;
  lmnt=now.minute()-1;
  ldtk=now.second()-1;
}

void loop(){
  DateTime now=rtc.now();
  jam=now.hour();
  mnt=now.minute();
  dtk=now.second();
  if (ldtk!=dtk){
    draw(2);
    ldtk=dtk;
  }
  if (lmnt!=mnt){
    draw(1);
    lmnt=mnt;
  }
  if (ljam!=jam){
    draw(0);
    ljam=jam;
  }
}

hasil video jamd digital dengan P10 dan arduino adalah sebagai berikut :



Related Posts

Membuat running text dam jam digital dengan arduino+ DMD (dot matrix p10) (oleh aziz kurosaki)
4/ 5
Oleh

5 comments

January 18, 2017 at 5:08 AM delete

Gan bisa kirim coding jam digital ya.
Kreatifgame@gmail.com

Reply
avatar
February 17, 2017 at 6:54 PM delete

Display.refresh nya masalah mas, bisa tau salahnya dimana ?

Reply
avatar
March 1, 2017 at 6:19 AM delete

gan ko terjadi eror di display.refresh(); apa ada yang salah ya agan pake arduino berapa

Reply
avatar
May 28, 2017 at 11:49 AM delete

Hello. Can you give p10 ardunio button and connection diagram

Reply
avatar

Silakan dikomentari