Program Utama
=================================Source Code================================
#include "EEPROM.h"
#include "Wire.h"
#include "RTClib.h"
#include "DHT.h"
#define DHTPIN A3 // Pin DHT 11 to pin A3 arduino
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 RTC;
int digit1 = 10; //PWM pin for control digit 1 (left side)
int digit2 = 11; //PWM pin for control digit 2
int digit3 = 12; //PWM pin for control digit 3
int digit4 = 13; //PWM pin for control digit 4 (right side)
int segA = 2; // pin for control "a" segment
int segB = 3; // pin for control "b" segment
int segC = 4; // pin for control "c" segment
int segD = 5; // pin for control "d" segment
int segE = 6; // pin for control "e" segment
int segF = 7; // pin for control "f" segment
int segG = 8; // pin for control "g" segment
int segDP = 9; // pin for control led DOT
#define SW0 A0 // pin for MENU/change
#define SW1 A1 // pin for increase value
#define Buzzer A2 // pin for control Alarm
#define LDR 0 // pin for photoresistor
int DISPLAY_BRIGHTNESS = 15;
//for common anoda
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGH
/*// for common catoda
#define DIGIT_ON LOW
#define DIGIT_OFF HIGH
#define SEGMENT_ON HIGH
#define SEGMENT_OFF LOW
*/
byte Tunda = 30;
int t, h;
int waktu;
byte menu = 0; // 0 = usual state
// 1 - adjust jam
// 2 - adjust menit
// 3 - adjust tahun
// 4 - adjust bulan
// 5 - adjust tanggal
// 6 - activate /deactivate alarm
// 7 - adjust jam alarm
// 8 - adjust menit alarm
// 9 - Simpan data
byte menit = 0;
byte jam = 0;
int tahun = 0;
byte bulan = 0;
byte tanggal = 0;
byte Tanggal_Max = 0;
byte Alarm = 0;
byte Menit = 0;
byte Jam = 0;
byte Alarm_Aktif = 0;
byte Alarm_Mati = 0;
unsigned long Selesai = 0;
int maxbright = 1030; // 10230+7
int Line = 0;
void setup() {
Wire.begin();
RTC.begin();
dht.begin();
Wire.beginTransmission(0x68);
Wire.write(0x07); // move pointer to SQW address
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave at 1Hz
Wire.endTransmission();
if (! RTC.isrunning()) {
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDP, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
pinMode(SW0, INPUT); // for this use a slide switch
pinMode(SW1, INPUT); // N.O. push button switch
digitalWrite(SW0, HIGH); // pull-ups on
digitalWrite(SW1, HIGH);
pinMode(LDR, INPUT); // for photoresistor
pinMode(Buzzer, OUTPUT); // control buzzer
digitalWrite(Buzzer, LOW);
delay(200);
digitalWrite(Buzzer, HIGH);
Alarm = EEPROM.read(100);
Jam = EEPROM.read(101);
Menit = EEPROM.read(102);
}
void loop() {
if (menu == 0)
{
digitalWrite(segDP, SEGMENT_OFF);
DateTime now = RTC.now();
// waktu = now.hour()*100+now.minute();
jam = now.hour();
menit = now.minute();
waktu = jam*100+menit;
tahun = now.year();
bulan = now.month();
tanggal = now.day();
if ((menit == Menit) && (jam == Jam))
{
Alarm_Aktif = 1;
}
else Alarm_Aktif = 0;
if ((millis() - Selesai) > 100000) Alarm_Mati = 0;
///////////////////////////////////////////////////////////////////////////////////JAM
for (byte Tampil = 0; Tampil < 20; Tampil++)
{
DISPLAY_BRIGHTNESS = analogRead(LDR);
// if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
{
digitalWrite(Buzzer, LOW);
}
else
digitalWrite(Buzzer, HIGH);
DISPLAY_BRIGHTNESS = analogRead(LDR);
// display parts
for(int i = 125 ; i >0 ; i--) {
if (waktu >= 1000) displayNumber01(waktu);
else displayNumber02(waktu);
}
if (!(digitalRead(SW0)))
{
menu = 1; //go to menu for change hour
}
if (!(digitalRead(SW1)))
{
Alarm_Mati = 1; // mute the alarm
Selesai = millis(); // store push time for mute alarm
}
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
if (waktu >= 1000) displayNumber03(waktu);
else displayNumber04(waktu);
}
if (!(digitalRead(SW0)))
{
menu = 1; //go to menu for change hour
}
if (!(digitalRead(SW1)))
{
Alarm_Mati = 1; // mute the alarm
Selesai = millis(); // store push time for mute alarm
}
}
//////////////////////////////////////////////////////////////////////////// date (day and month)
for (byte Tampil = 0; Tampil < 2; Tampil++)
{
DISPLAY_BRIGHTNESS = analogRead(LDR);
// if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
{
digitalWrite(Buzzer, LOW);
}
else
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber01(tanggal*100+bulan); // this is number to diplay
}
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber01(tanggal*100+bulan); // this is number to diplay
}
if (!(digitalRead(SW0)))
{
menu = 1; //go to menu for change hour
delay(1000);
}
if (!(digitalRead(SW1)))
{
Alarm_Mati = 1; // mute the alarm
Selesai = millis(); // store push time for mute alarm
}
}
//////////////////////////////////////////////////////////////////////////// year
for (byte Tampil = 0; Tampil < 3; Tampil++)
{
DISPLAY_BRIGHTNESS = analogRead(LDR);
// if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
{
digitalWrite(Buzzer, LOW);
}
else
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber03(tahun); // this is number to diplay
}
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber03(tahun); // this is number to diplay
}
if (!(digitalRead(SW0)))
{
menu = 1; //go to menu for change hour
delay(1000);
}
if (!(digitalRead(SW1)))
{
Alarm_Mati = 1; // mute the alarm
Selesai = millis(); // store push time for mute alarm
}
}
if (Tunda > 20)
{
h = dht.readHumidity();
t = dht.readTemperature();
Tunda = 0;
}
for (byte Tampil = 0; Tampil < 2; Tampil++)
{
DISPLAY_BRIGHTNESS = analogRead(LDR);
// if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
{
digitalWrite(Buzzer, LOW);
}
else
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber(t); // this is number to diplay
}
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber(t); // this is number to diplay
}
if (!(digitalRead(SW0)))
{
menu = 1; //go to menu for change hour
}
if (!(digitalRead(SW1)))
{
Alarm_Mati = 1; // mute the alarm
Selesai = millis(); // store push time for mute alarm
}
}
for (byte Tampil = 0; Tampil < 2; Tampil++)
{
DISPLAY_BRIGHTNESS = analogRead(LDR);
// if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
{
digitalWrite(Buzzer, LOW);
}
else
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber1(h); // this is number to diplay
}
digitalWrite(Buzzer, HIGH);
for(int i = 125 ; i >0 ; i--) {
displayNumber1(h); // this is number to diplay
}
if (!(digitalRead(SW0)))
{
menu = 1; //go to menu for change hour
delay(1000);
}
if (!(digitalRead(SW1)))
{
Alarm_Mati = 1; // mute the alarm
Selesai = millis(); // store push time for mute alarm
}
}
Tunda = Tunda+1;
} // end usual menu (display hour, temperature and humidity)
if (menu == 1)
{
if (!digitalRead(SW1)) // set jam ++
{
jam++;
if (jam > 23) jam = 0;
delay(100);
}
for(int i = 20 ; i >0 ; i--)
{
displayNumber20(jam);
}
delay(1);
if (!(digitalRead(SW0)))
{
menu = 2; //go to menu for change minute
delay(1000);
}
} // end menu for change hour
if (menu == 2)
{
if (!digitalRead(SW1)) // set menit ++
{
menit++;
if (menit > 59) menit = 0;
delay(100);
}
for(int i = 20 ; i >0 ; i--)
{
displayNumber21(menit);
}
delay(1);
if (!(digitalRead(SW0)))
{
menu = 3; //go to menu for usual style
delay(500);
}
} // end menu for change menit
if (menu == 3)
{
if (!digitalRead(SW1)) // set tahun ++
{
tahun++;
if (tahun > 2030) tahun = 2017;
delay(100);
}
for(int i = 20 ; i >0 ; i--)
{
displayNumber41(tahun-2000);
}
delay(1);
if (!(digitalRead(SW0)))
{
menu = 4; //go to menu for usual style
delay(500);
}
} // end menu for change tahun
if (menu == 4)
{
if (!digitalRead(SW1)) // set bulan ++
{
bulan++;
if (bulan > 12) bulan = 1;
delay(100);
}
for(int i = 20 ; i >0 ; i--)
{
displayNumber42(bulan);
}
delay(1);
if (!(digitalRead(SW0)))
{
menu = 5; //go to menu for usual style
delay(500);
}
} // end menu for change bulan
if (menu == 5)
{
if (!digitalRead(SW1)) // set tanggal ++
{
tanggal++;
if (bulan == 4 || bulan == 6 || bulan == 9 || bulan == 11) { //30 tanggal hath September, April June and November
Tanggal_Max = 30;
}
else {
Tanggal_Max = 31; //... all the others have 31
}
if (bulan ==2 && tahun % 4 ==0) { //... Except February alone, and that has 28 tanggal clear, and 29 in a leap year.
Tanggal_Max = 29;
}
if (bulan ==2 && tahun % 4 !=0) {
Tanggal_Max = 28;
}
if (tanggal > Tanggal_Max) tanggal = 1;
delay(100);
}
for(int i = 20 ; i >0 ; i--)
{
displayNumber43(tanggal);
}
delay(1);
if (!(digitalRead(SW0)))
{
menu = 6; //go to menu for usual style
delay(500);
}
} // end menu for change tanggal
if (menu == 6)
{
if (!digitalRead(SW1)) // set menit ++
{
Alarm++;
delay(200);
}
for(int i = 20 ; i >0 ; i--)
{
if (Alarm%2 == 1) displayNumber32();
else displayNumber33();
}
delay(1);
if (!(digitalRead(SW0)))
{
if (Alarm%2 == 1) menu = 7; //go to menu for set alarm
else menu = 9;
delay(500);
}
} // end menu for activate or deactivate alarm
if (menu == 7)
{
if (!digitalRead(SW1)) // set jam ++
{
Jam++;
if (Jam > 23) Jam = 0;
delay(100);
}
for(int i = 20 ; i >0 ; i--)
{
displayNumber30(Jam);
}
delay(1);
if (!(digitalRead(SW0)))
{
menu = 8; //go to menu for change minute
delay(1000);
}
} // end menu for change hour alarm
if (menu == 8)
{
if (!digitalRead(SW1)) // set menit ++
{
Menit++;
if (Menit > 59) Menit = 0;
delay(100);
}
for(int i = 20 ; i >0 ; i--)
{
displayNumber31(Menit);
}
delay(1);
if (!(digitalRead(SW0)))
{
menu = 9; //go to menu for usual style
delay(500);
}
} // end menu for change menit alarm
if (menu == 9) // store data in RTC
{
// date and jam
RTC.adjust(DateTime(tahun, bulan, tanggal, jam, menit, 0));
EEPROM.write(100,Alarm%2);
EEPROM.write(101,Jam);
EEPROM.write(102,Menit);
delay(500);
menu = 0;
}
} // end main program
//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {
switch (numberToDisplay){
case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
case 1:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 2:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 3:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 4:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 5:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 6:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 7:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 8:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 9:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// all segment are ON
case 10:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
// degree symbol made by B_Mz
case 11:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// C letter made by B_Mz
case 12:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// H letter made by B_Mz
case 13:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// L letter made by B_Mz
case 14:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// A letter made by B_Mz
case 15:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// F letter made by B_Mz
case 16:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// n letter made by B_Mz
case 17:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// O letter made by B_Mz
case 18:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// "Y" letter made by B_Mz
case 19:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// "r" letter made by B_Mz
case 20:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// "d" letter made by B_Mz
case 21:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
// "=" letter made by B_Mz
case 22:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
}
}
//////////////////////////////////////////////////// display DATE/DAY
void displayNumber01(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
else digitalWrite(segDP, SEGMENT_OFF);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
digitalWrite(segDP, SEGMENT_ON);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
////////////////////////////////////////////////// display clock wih small hour (8:31) with second on
void displayNumber02(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
lightNumber(10);
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP,SEGMENT_OFF);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, SEGMENT_ON);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
else digitalWrite(segDP, SEGMENT_OFF);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
digitalWrite(segDP, SEGMENT_ON);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
/////////////////////////////////////////////////////// display clock with second off
void displayNumber03(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
else digitalWrite(segDP, SEGMENT_OFF);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
digitalWrite(segDP, SEGMENT_OFF);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// display clock for small hour (8:31) with second off
void displayNumber04(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
lightNumber(10);
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP,SEGMENT_OFF);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, SEGMENT_OFF);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
else digitalWrite(segDP, SEGMENT_ON);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
digitalWrite(segDP, SEGMENT_OFF);
//Turn off all segments
lightNumber(10);
digitalWrite(segDP, SEGMENT_OFF);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// display temperature
void displayNumber(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(11); // display degree symbol
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(12); // display C letter
if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
else digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
digitalWrite(segDP, SEGMENT_OFF);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// display humidity
void displayNumber1(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit3, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit4, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit2, DIGIT_ON);
lightNumber(22); // display off
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit1, DIGIT_ON);
lightNumber(13); // display H letter
if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
else digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
digitalWrite(segDP, SEGMENT_OFF);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// hour clock adjust
void displayNumber20(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(12); // C letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(14); // L letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// minute clock adjust
void displayNumber21(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(12); // C letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(14); // L letter
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// hour alarm adjust
void displayNumber30(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(15); // A letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(14); // L letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// minute alarm adjust
void displayNumber31(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(15); // A letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(14); // L letter
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// alarm on
void displayNumber32() {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(15); // A letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(14); // L letter
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(18); // o letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(17); // n letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// alarm off
void displayNumber33() {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(15); // A letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(14); // L letter
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(18); // o letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(16); // F letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// year adjust
void displayNumber41(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(19); // Y letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(20); // r letter
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// month adjust
void displayNumber42(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(13); // H letter (instead M)
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(18); // o letter
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
// day adjust
void displayNumber43(int toDisplay) {
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(21); // d letter
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(19); // Y letter
digitalWrite(segDP, SEGMENT_ON);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
digitalWrite(segDP, SEGMENT_OFF);
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
Line = maxbright - DISPLAY_BRIGHTNESS;
delayMicroseconds(Line);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, SEGMENT_OFF);
}
}
13>
Dibawah ini merupakan Produk Jadi dari beberapa Versi Sebelumnya.
Pada Versi ini saya lebih banyak mebggunakan Komponen DIP agar mempermudah dalam menyolder. Bisa dilihat seperti pada gambar dibawah ini.
Untuk membeli PCB Langsung klik Icon TOKOPEDIA Dibawah ini.
Video Dokumentasi
VIDEO
VIDEO
VIDEO
No comments
Post a Comment