• Tidak ada hasil yang ditemukan

DAFTAR PUSTAKA. Anton, 2007, Sensor Suhu LM35, com/sensor Suhu LM35.htm

N/A
N/A
Protected

Academic year: 2021

Membagikan "DAFTAR PUSTAKA. Anton, 2007, Sensor Suhu LM35, com/sensor Suhu LM35.htm"

Copied!
41
0
0

Teks penuh

(1)

DAFTAR PUSTAKA

Anonim, 20012, 8-bit Microcontroller with 4K Bytes In-System Programmable Flash, Atmel Corporation

Anton, 2007, Sensor Suhu LM35, http://www.elektronika-elekronika.blogspot. com/Sensor Suhu LM35.htm

Dr. S.S.Riaz Ahamed. Role of Zigbee technology in future data communication system. Journal of Theoretical and Applied Information Technology, Vol.5 No. 2, pp 129-135, 2005.

Arifin, Z., 2008, Sistem Akuisisi Data Suhu Menggunakan Mikrokontroler AT89S51, http://www.electronicslab.com/SistemAkuisisi Data Suhu

Menggunakan Mikrokontroler AT89S51.htm Joaldera, 2010, ISD1420 Sebagai Penyimpan Suara, http://jo-elektricsblogs.com/

ISD1420 Sebagai Penyimpan Suara.htm Malvino, A., 1984, Prinsip-Prinsip Elektronika Jilid 1, Jakarta: Erlangga.

Schommers, 1982, Elektronika Untuk Pemula, Jakarta: Penerbit Gramedia.

Suryono, 2005, Mikrokontroler ISP MCS-5,Lab Elektronika & Instrumentasi Fisika Undip.

Suryono, 2005, Workshop Elektronika Dasar, Lab Elektronika & Instrumentasi Fisika Undip.

Sutrisno. 1987, Elektronka dan Penerapannya Jilid 2, Bandung: Penerbit ITB. Woollard, B., 1999, Elektronika Praktis, Jakarta: Pradnya Paramita.

(2)
(3)

#include <mega16.h> #include <stdio.h> #include <stdlib.h> #include <delay.h> #include <string.h> #include <ctype.h>

// Alphanumeric LCD Module functions

#include <alcd.h> #define ADC_VREF_TYPE 0x00 #ifndef RXB8 #define RXB8 1 #endif #ifndef TXB8 #define TXB8 0 #endif #ifndef UPE #define UPE 2 #endif #ifndef DOR

(4)

#define DOR 3 #endif #ifndef FE #define FE 4 #endif #ifndef UDRE #define UDRE 5 #endif #ifndef RXC #define RXC 7 #endif

#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR)

#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

#define LED1 PORTA.6 #define LED2 PORTA.5 #define LED3 PORTA.4

(5)

#define button1 PIND.5 #define button2 PIND.6 #define button3 PIND.7

#define Relay1 PORTB.2 #define Relay2 PORTB.3

// USART Receiver buffer #define RX_BUFFER_SIZE 8 char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE <= 256

unsigned char rx_wr_index,rx_rd_index,rx_counter; #else

unsigned int rx_wr_index,rx_rd_index,rx_counter; #endif

// This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow;

// USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void){ char status,data;

(6)

status=UCSRA; data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) {

rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256

// special case for receiver buffer size=256 if (++rx_counter == 0)

{ #else

if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; #endif rx_buffer_overflow=1; } } } #ifndef _DEBUG_TERMINAL_IO_

// Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_

(7)

char getchar(void) { char data; while (rx_counter==0); data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256

if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif #asm("cli") --rx_counter; #asm("sei") return data; } #pragma used- #endif

// USART Transmitter buffer #define TX_BUFFER_SIZE 8 char tx_buffer[TX_BUFFER_SIZE];

#if TX_BUFFER_SIZE <= 256

unsigned char tx_wr_index,tx_rd_index,tx_counter; #else

(8)

#endif

// USART Transmitter interrupt service routine interrupt [USART_TXC] void usart_tx_isr(void) { if (tx_counter) { --tx_counter; UDR=tx_buffer[tx_rd_index++]; #if TX_BUFFER_SIZE != 256

if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; #endif

} }

#ifndef _DEBUG_TERMINAL_IO_

// Write a character to the USART Transmitter buffer #define _ALTERNATE_PUTCHAR_

#pragma used+ void putchar(char c) {

while (tx_counter == TX_BUFFER_SIZE); #asm("cli")

(9)

{

tx_buffer[tx_wr_index++]=c; #if TX_BUFFER_SIZE != 256

if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; #endif ++tx_counter; } else UDR=c; #asm("sei") } #pragma used- #endif

//Declare your global variables here

//============================================================ =====================

lash unsigned char *nomor="081338645290";

flash unsigned char *isi1="WARNING: LCD MATI : PULSA: "; flash unsigned char *isi2="WARNING: LCD MATI : PULSA: ";

flash unsigned char *isi4="WARNING: LCD Telah Hidup Kembali : PULSA: "; //============================================================ ==========

int a=0; //int b; int sensor;

(10)

char temp[6];

int eeprom *pointer_eeprom;

int data; int data2; int abc; //======================================== unsigned char rk=0; void send_sms(void); void sms_init(void); void sms_init_at(void); void send_sms_pulsa (void); void send_sms_return(void); //void check_jam(void);

// Read the AD conversion result

unsigned int read_adc(unsigned char adc_input) {

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage delay_us(10);

// Start the AD conversion ADCSRA|=0x40;

(11)

while ((ADCSRA & 0x10)==0); ADCSRA|=0x10;

return ADCW; }

interrupt [EXT_INT0] void ext_int0_isr(void) { unsigned char rr=0; PORTA.7=0; while (rr<120) { LED1=1;delay_ms(100); LED1=0;delay_ms(100); sensor=read_adc(0); if(sensor<=data) { goto selesai; } ++rr; lcd_clear();lcd_gotoxy(0,0);lcd_putsf("LCD MATI"); } a=1;

(12)

Relay1=1;Relay2=1; delay_ms(100);

lcd_clear();lcd_gotoxy(0,0);lcd_putsf("sms init"); sms_init();

LED2=1;

lcd_clear();lcd_gotoxy(0,0);lcd_putsf("sms init success");delay_ms(100); lcd_clear();lcd_gotoxy(0,0);lcd_putsf("sending sms ");delay_ms(100); send_sms_pulsa(); LED1=0; goto selesai2; selesai: selesai2: delay_ms(200); //LED1=0; LED3=0;LED2=0;Relay2=0;Relay1=0; lcd_clear(); } //======================================================= void sms_init(void) {

printf("ATE0"); //set command tanpa echo putchar(0x0D);//ENTER

while(getchar()!='K'){}; //menunggu OK

(13)

LED2=0; delay_ms(100); };

void sms_init_at(void) {

printf("AT"); //set command tanpa echo putchar(0x0D);//ENTER

while(getchar()!='K'){}; //menunggu OK

//while(getchar()!=0x0A){}; //menunggu new line delay_ms(100);

};

//======================================================= // Send SMS pada saat lcd mati

void send_sms(void){ char dat; awal_sms: LED2=0; delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Kirim SMS"); sms_init_at(); LED2=1;

(14)

printf("AT+CMGF=1"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGS=\""); printf(nomor); printf("\""); putchar(0x0D);//ENTER while(getchar()!=0x20){}; //spasi delay_ms(100); printf(isi1); putchar(0x1A); //kirim Ctrl+z putchar(0x0D);//ENTER while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear();

(15)

lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } };

(16)

while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar();

(17)

delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; delay_ms(500); lcd_clear();lcd_gotoxy(0,0);lcd_putsf("sending Succces"); } //======================================================= // Kirim sms Plus check Pulsa apabila lcd mati

void send_sms_pulsa(void){ char ram_bebas3;

unsigned char take_char3[]; char dat_cusd;

char data_pulsa[]; int w3;

(18)

int count; int nilai; char *temporary; char dat; dat_cusd=0; ram_bebas3=0; temporary=0; w3=0; nilai=0; count=0; sms_init(); LED2=1;delay_ms(10); ulang: dat_cusd=0; lcd_clear(); printf("AT+CUSD=1,*888#"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while (getchar()!='+'){}; for (b=0;b<=13;b++) { dat_cusd=getchar();

(19)

if(dat_cusd=='4') {

b=0;

lcd_clear();lcd_gotoxy(0,0);lcd_putsf("gagal ulang lagi"); count++;

itoa(count,temporary);

lcd_gotoxy(0,1);lcd_puts(temporary);

if(count>=20) //jika gagal CUSD sebanyak 20 kali { lcd_gotoxy(0,5);lcd_puts("wait"); count=0; LED2=0; delay_ms(60000); sms_init_at(); } goto ulang; } } while(getchar()!='.'){}; while(ram_bebas3!='.') { ram_bebas3=getchar(); take_char3[w3] = ram_bebas3; w3++;

(20)

} lcd_clear(); for (a=0;a<=w3-2;a++) { lcd_gotoxy(a,1); lcd_putchar(take_char3[a]); data_pulsa[a]=take_char3[a]; }; delay_ms(300); nilai= atol(data_pulsa); if(nilai<=5000) { LED2=0; lcd_clear();lcd_gotoxy(0,0); lcd_putsf("Pulsa habis"); //send_sms_2(); awal_sms: LED2=0; delay_ms(500); lcd_clear(); lcd_puts(""); lcd_gotoxy(0,0); lcd_putsf("sms_init"); sms_init();

(21)

LED2=1; printf("AT+CMGF=1"); putchar(0x0D);//ENTER while(getchar()!='K'){}; delay_ms(10); lcd_clear();lcd_gotoxy(0,0);lcd_putsf("AT+CMGF Success"); LED2=0; delay_ms(100); LED2=1; lcd_clear();lcd_gotoxy(0,0);lcd_putsf("AT+CMGS"); //sms_init_at(); printf("AT+CMGS=\""); printf(nomor); printf("\""); putchar(0x0D);//ENTER while(getchar()!=0x20){}; //spasi lcd_clear();lcd_gotoxy(0,0);lcd_putsf("AT+CMGS spasi"); LED2=0; delay_ms(100); LED2=1; printf(isi2); putchar(0x0D);//ENTER puts(data_pulsa); putchar(0x1A); //kirim Ctrl+z

(22)

putchar(0x0D);//ENTER while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar();

(23)

delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms;

(24)

} } }; while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; //delay_ms(400); lcd_clear();lcd_gotoxy(0,0);lcd_putsf("sending Succces"); delay_ms(100); goto lewat;

(25)

}

lcd_clear();lcd_gotoxy(0,0); lcd_putsf("Pulsa Masih banyak"); send_sms();

lewat: };

//======================================================= // Kirim sms Plus check Pulsa apabila lcd mati

void send_sms_return(void){ char ram_bebas3;

unsigned char take_char3[]; char dat_cusd; char data_pulsa[]; int w3; int a;int b; int count; char *temporary; char dat; dat_cusd=0; ram_bebas3=0; temporary=0; w3=0; count=0;

(26)

sms_init(); LED2=1;delay_ms(10); ulang: dat_cusd=0; lcd_clear(); printf("AT+CUSD=1,*888#"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while (getchar()!='+'){}; for (b=0;b<=13;b++) { dat_cusd=getchar(); if(dat_cusd=='4') { b=0;

lcd_clear();lcd_gotoxy(0,0);lcd_putsf("gagal ulang lagi"); count++;

itoa(count,temporary);

lcd_gotoxy(0,1);lcd_puts(temporary);

if(count>=20) //jika gagal CUSD sebanyak 20 kali {

lcd_gotoxy(0,5);lcd_puts("wait"); count=0;

(27)

LED2=0; delay_ms(60000); sms_init_at(); } goto ulang; } } while(getchar()!='.'){}; while(ram_bebas3!='.') { ram_bebas3=getchar(); take_char3[w3] = ram_bebas3; w3++; } lcd_clear(); for (a=0;a<=w3-2;a++) { lcd_gotoxy(a,1); lcd_putchar(take_char3[a]); data_pulsa[a]=take_char3[a]; }; delay_ms(300); awal_sms: LED2=0;

(28)

delay_ms(500); lcd_clear(); lcd_puts(""); lcd_gotoxy(0,0); lcd_putsf("sms_init"); sms_init(); LED2=1; printf("AT+CMGF=1"); putchar(0x0D);//ENTER while(getchar()!='K'){}; delay_ms(10); lcd_clear();lcd_gotoxy(0,0);lcd_putsf("AT+CMGF Success"); LED2=0; delay_ms(100); LED2=1; lcd_clear();lcd_gotoxy(0,0);lcd_putsf("AT+CMGS"); printf("AT+CMGS=\""); printf(nomor); printf("\""); putchar(0x0D);//ENTER while(getchar()!=0x20){}; //spasi lcd_clear();lcd_gotoxy(0,0);lcd_putsf("AT+CMGS spasi"); LED2=0; delay_ms(100);

(29)

LED2=1; printf(isi4); putchar(0x0D);//ENTER puts(data_pulsa); putchar(0x1A); //kirim Ctrl+z putchar(0x0D);//ENTER while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; while((dat=getchar())!=0x0A) {

(30)

if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500);

(31)

lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } } }; while((dat=getchar())!=0x0A) { if (dat=='O') { if(getchar()=='R') { getchar(); delay_ms(500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Gagal kirim SMS"); goto awal_sms; } }

(32)

}; lcd_clear();lcd_gotoxy(0,0);lcd_putsf("sending Succces"); delay_ms(100); }; //======================================================= void tulis_data_ke_eeprom(void){ //pointer_eeprom = index; *pointer_eeprom=data; } //======================================================= void baca_data_ke_eeprom(void){ data=*pointer_eeprom; } //======================================================= // Declare your global variables here

void main(void) {

// Declare your local variables here PORTA=0x00;

DDRA=0xFC;

(33)

DDRB=0xFF; PORTC=0x00; DDRC =0x00; PORTD=0xE0; DDRD=0x00; //TCCR0=0x02; //TCNT0=0x00; //OCR0=0x96; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: kHz

// Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off

// Input Capture on Falling Edge TCCR1A=0x00;

TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00;

(34)

OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00;

/*

// ADC initialization

// ADC Clock frequency: 1000.000 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: ADC Stopped // Only the 8 most significant bits of

// the AD conversion result are used

// ADMUX=ADC_VREF_TYPE & 0xff; // ADCSRA=0x83;

*/

// ADC initialization

(35)

// ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: ADC Stopped ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x87;

// External Interrupt(s) initialization // INT0: On

// INT0 Mode: Falling Edge // INT1: Off // INT2: Off GICR|=0x40; MCUCR=0x03; MCUCSR=0x00; GIFR=0x40; // USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On

// USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00;

UCSRB=0xD8; UCSRC=0x86;

(36)

UBRRH=0x00; UBRRL=0x33;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00;

// Alphanumeric LCD initialization // Connections specified in the

// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16);

//=== Global enable interrupts #asm("sei")

(37)

abc=0; PORTA.7=0;

pointer_eeprom=0;//alamat eeprom yg akan ditulis/dibaca //pointer_eeprom_suhu=2;

baca_data_ke_eeprom();//memanggil fungsi baca eeprom while (1)

{

//============================================================ ==========

//Tombol 1 untuk testing Kirim sms if (button2==0) { Relay1=1;Relay2=1; delay_ms(700); send_sms_pulsa(); delay_ms(500); Relay1=0;Relay2=0; LED2=0; }; //============================================================ ==========

(38)

if (button3==0) { delay_ms(100); while(1) { lcd_gotoxy(1,0);lcd_putsf("setting"); LED3=1; delay_ms(100); sensor=read_adc(0);

itoa(sensor,temp);//menampilkan nilai ADC potensio1 lcd_gotoxy(0,1) ;

lcd_puts(temp);

if (button2==0)//jika ditekan maka akan menulis data=0 ke EEPROM { sensor=read_adc(0); data=sensor; lcd_clear(); delay_ms(300); tulis_data_ke_eeprom(); LED3=0;delay_ms(100); goto mulai; } }

(39)

}; //================monitoring lcd mati ====================================================== if (a==0) { sensor=read_adc(0);

itoa(sensor,temp);//menampilkan nilai ADC potensio1 lcd_gotoxy(0,1) ; lcd_puts(temp); if(sensor>=data) { PORTA.7=1; }; } if (a==1) { sensor=read_adc(0);

itoa(sensor,temp); //menampilkan nilai ADC potensio1 lcd_gotoxy(0,1) ; lcd_puts(temp); data2=data-10; if(sensor<data2) { while (rk<100)

(40)

{ LED1=1;delay_ms(100); sensor=read_adc(0); if(sensor>=data) { goto selesai3; } LED1=0;delay_ms(100); ++rk; } a=0; lcd_clear();

lcd_gotoxy(0,0);lcd_putsf("LCD hidup kembali"); Relay1=1;Relay2=1;

delay_ms(200);

lcd_gotoxy(0,0);lcd_putsf("sms initing..."); sms_init_at();

lcd_gotoxy(0,0);lcd_putsf("sms init succes...");delay_ms(100); lcd_clear();lcd_gotoxy(0,0);lcd_putsf("semding sms return...");delay_ms(100); send_sms_return(); selesai3: Relay1=0;Relay2=0; LED1=0;LED2=0;

(41)

} }

} }

Referensi

Dokumen terkait

Peraturan Pemerintah Nomor 64 Tahun 1957 tentang Penyerahan Sebagian Urusan Pemerintah Pusat d i Lapangan Perikanan Laut, Kehutanan dan Karet Rakyat kepada Daerah Swatantra

Pada tanggal 31 Maret 2012, Obligasi BTN XIII mendapat penilaian peringkat idAA, dari PT Pemeringkat Efek Indonesia (PT Pefindo). Bertindak sebagai wali amanat

Tidak hanya mimikri, hibriditas terhadap kebudayaan Barat juga dilakukan oleh tokoh Asri dan beberapa tokoh lainnya dalam novel Salah Pilih karya Nur St

Perubahan kapitalisasi sewa dapat menyebabkan perubahan pada laporan keuangan perusahaan (adanya peningkatan dalam jumlah total asset, liabilitas dan penurunan total

Dalam penelitian ini, Laskar Pelangi akan diteliti menggunakan pendekatan strukturalisme genetik Lucien Goldmann untuk melihat hubungan struktur novel tersebut dengan

Siswa lebih senang belajar dengan media yang menunjukkan cara kerja, gambar- gambar atau materi secara lebih mendetail (real) dibandingkan belajar dengan hanya menggunakan buku

peneliti terhadap suatu masalah juga untuk mendeskripsikan pemberdayaan keluarga melalui program microfinance pada kelompok simpan pinjam perempuan (SPP) di Desa Pawenang

[r]