Counter Down Arduino P10 2 Panel


 




================================== SOURCE CODE ==================================
#include "DMD3.h"
#include "bmzSegment16.h"
#include "bmz5x7.h"
#include "bmz9.h"
#include "bmz6x16.h"
#include "IRremote.h"

int RECV_PIN = 12;

IRrecv irrecv(RECV_PIN);

decode_results results;

DMD3 display (2,1);


char font[]={'0','1','2','3','4','5','6','7','8','9'};

#define s1 A0
#define s2 A1
#define s3 A2
#define s4 A3
#define s5 A4
#define relay 12
#define buzzer 3
boolean st=0;

void scan()
{
    display.refresh();
}

void setup() {
    pinMode(s1,INPUT_PULLUP);
    pinMode(s2,INPUT_PULLUP);
    pinMode(s3,INPUT_PULLUP);
    pinMode(s4,INPUT_PULLUP);
    pinMode(s5,INPUT_PULLUP);

    pinMode(relay,OUTPUT);
    pinMode(buzzer,OUTPUT);
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
    
    Timer1.initialize(2000);
    Timer1.attachInterrupt(scan);  
    Timer1.pwm(9,255);

    Serial.begin(9600);
    
    irrecv.enableIRIn();
   
}
double prev=0,prev1=0;
long prev3=0,prev4=0;
int menit=0,detik=0,milidetik=0;
int setmenit=0;
int setdetik=0;
long m,s,ms;
boolean p=0,flag=0;

void loop() {
  
  if (irrecv.decode(&results)) {
    //Serial.println(results.value, HEX);
    if(results.value==0xFF6897){
    if(st==0){ 
    digitalWrite(relay,LOW);
    digitalWrite(buzzer,LOW);
    delay(1000);
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(1000);
    digitalWrite(relay,LOW);
    digitalWrite(buzzer,LOW);
    delay(1000);
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(1000);
    digitalWrite(relay,LOW);
    digitalWrite(buzzer,LOW);
    delay(3000);
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
    }
    st=1;p=0;
   
      } //start
    if(results.value==0xFFB04F){ p=1;}// pause
    if(results.value==0xFF9867){ st=0;p=0;setmenit=0,setdetik=0;}// reset
    if(results.value==0xFF18E7){setmenit++;delay(50);}
    if(results.value==0xFF4AB5){setdetik++;delay(50);}
    
    irrecv.resume(); // Receive the next value
  }
  if(setmenit>99)setmenit=0;
  if(setmenit<0)setmenit=99;
   if(setdetik>59)setdetik=0;
  if(setdetik<0)setdetik=59;
  
    if(digitalRead(s1)==LOW){  
      if(st==0){ 
    digitalWrite(relay,LOW);
    digitalWrite(buzzer,LOW);
    delay(1000);
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(1000);
    digitalWrite(relay,LOW);
    digitalWrite(buzzer,LOW);
    delay(1000);
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(1000);
    digitalWrite(relay,LOW);
    digitalWrite(buzzer,LOW);
    delay(3000);
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
    }
      st=1;p=0;
    
   } //start
    if(digitalRead(s2)==LOW){ p=1;}// pause
    if(digitalRead(s3)==LOW){ st=0;p=0;setmenit=0,setdetik=0;}// reset
    if(digitalRead(s4)==LOW){setmenit++;delay(500);}
     if(digitalRead(s5)==LOW){setdetik++;delay(500);}
tampilanBesar(menit,detik,milidetik);  
/*
if(st==0){
  prev=millis();
  
}
else{
  if(menit<99){
  prev1=millis();
  
  ms=(prev1-prev)/10-(prev3*100);
  s=(prev1-prev)/1000-(m*60);
  m=(prev1-prev)/60000;
  prev3=(prev1-prev)/1000;
  
  milidetik=100-ms;
  detik=59-s;
  menit=(setmenit-1)-m;
  //Serial.print(menit);Serial.print(" ");Serial.print(detik);Serial.print(" ");Serial.print(milidetik);Serial.println(" ");
  }
}
*/

if(st==0){
  prev=millis();
  menit=setmenit; 
  detik=setdetik;
  milidetik=0; 
}
else{
  prev=millis();
  if (prev - prev1 >= 1000) {
    if(p==0){
    milidetik--;
    if(milidetik<0){
      detik--;
      milidetik=59;
      if(menit==0&&detik<=10)flag=1;
      }
    if(detik<0){
      detik=59;
      if(menit>0)menit--;
      
      }  
    prev1 = prev;
    if(flag==1){
      if(milidetik>50)digitalWrite( buzzer, 1 );
      else {digitalWrite( buzzer, 0 );flag=0;}
      
    }
    }
  }
}

if(menit==0&&detik==0&&milidetik==0&&st==1) {
    digitalWrite(relay,LOW);
    digitalWrite(buzzer,LOW);
    waktuHabis();
    digitalWrite(relay,HIGH);
    digitalWrite(buzzer,HIGH);
  st=0; 
}
      
}

void tampilanBesar(int mn,int dt,int ml){
   //if(digitalRead(s4)==LOW){  setmenit++;delay(500);}
     
       //if(digitalRead(s5)==LOW){  setmenit--;delay(500);}
    
    char buff[7];
    sprintf(buff,"%02d%02d%02d",mn,dt,ml);
    
    
    display.setFont(bmzSegment16);
    display.drawText(0, 0, (String)buff[0]);
    display.drawText(10, 0, (String)buff[1]);
    display.drawText(23, 0, (String)buff[2]);
    display.drawText(33, 0, (String)buff[3]);
    display.drawText(46, 0, (String)buff[4]);
    display.drawText(56, 0, (String)buff[5]);
    display.drawCircle(20,3,1);
    display.drawCircle(20,12,1);
    display.drawCircle(20,3,0);
    display.drawCircle(20,12,0);
    display.drawCircle(43,3,1);
    display.drawCircle(43,12,1);
    display.drawCircle(43,3,0);
    display.drawCircle(43,12,0);
      
      
}

void tampilanMenu(int mn,int dt,int ml){
    char buff[7];
    sprintf(buff,"%02d%02d%02d",mn,dt,ml);
    display.setFont(bmz5x7);
    display.drawText(0,0, "Set Counter:");
    display.drawText(27, 9, (String)buff[0]+(String)buff[1]);
    display.drawText(39, 9, ":");
    display.drawText(44, 9, (String)buff[2]+(String)buff[3]);
    display.drawText(56, 9, ":");
    display.drawText(61, 9, (String)buff[4]+(String)buff[5]);
}

void waktuHabis(){
    display.clear();
    display.setFont(bmz9);
    display.drawText(12,-1, "WAKTU");
    display.drawText(16,8, "HABIS");
    delay(1000);
    display.clear();
    delay(1000);
    display.drawText(12,-1, "WAKTU");
    display.drawText(16,8, "HABIS");
    delay(1000);
    display.clear();
    delay(1000);
    display.drawText(12,-1, "WAKTU");
    display.drawText(16,8, "HABIS");
    delay(1000);
    display.clear();
}


No comments

Dicky B_Mz. Powered by Blogger.