

================================== 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
Post a Comment