- Beranda
- Hobby & Community
Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks
...
TS
ahocool
Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks
DIGITAL ELECTRONICS HOBBY FORUM

UPDATE 8/JUNI/2014
DUKUN FUSEBIT AKAN MENGHIDUPKAN IC MU YANG MATI !

Selengkapnya dibahas di sini gan !!
CLINOMETER SEDERHANA MEMANFAATKAN ADC

Selengkapnya dibahas di post berikut
Proyek2 micro yg sudah jadi
I.N.D.E.X F.O.R.U.M
Biar ngiler, ane kasih contoh hasil karya TS...
.

Spoiler for apa aja sih yang dibahas?:
Spoiler for "Hobby Microcontroller Itu Mahal ? Kreativitasmu Itu yg Mahal Gan !":
UPDATE 8/JUNI/2014
DUKUN FUSEBIT AKAN MENGHIDUPKAN IC MU YANG MATI !

Selengkapnya dibahas di sini gan !!
CLINOMETER SEDERHANA MEMANFAATKAN ADC

Selengkapnya dibahas di post berikut
Spoiler for Buka Jika Mau Paket Belajar:
Proyek2 micro yg sudah jadi
Quote:
I.N.D.E.X F.O.R.U.M
Quote:
Biar ngiler, ane kasih contoh hasil karya TS...
Spoiler for Contact TS lewat dimari yahh:
.
Diubah oleh ahocool 14-06-2025 11:27
0
1M
8.6K
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Hobby & Community
10.5KThread•7.1KAnggota
Tampilkan semua post
TS
ahocool
#5325
>> SAMBUNGAN ..
![kaskus-image]()
5. Pengaturan Tombol
6. Pengolah Data Pemotongan kabel
7. PROGRAM UTAMA
AYO KALO MAU DIBAHAS..DENGAN SENANG HATI AKAN SAYA KUPAS TUNTAS ..
SELAMAT MENCOBA

5. Pengaturan Tombol
Code:
void tombol(void)
{
if(bit_is_clear(PIND, PIND5) && start == 0)
{
//start timer sekaligus simpan eeprom
eeprom_write_byte(&detikee,detik);
eeprom_write_byte(&menitee,menit);
start=1;
timer1();
_delay_ms(150);
}
if(bit_is_clear(PIND, PIND5) && start == 2)
{
//ini bagian menyimpan sususan potong kabel
eeprom_write_byte(&fusee,fusemem);
detik=eeprom_read_byte(&detikee);
menit=eeprom_read_byte(&menitee);
start=0;
_delay_ms(150);
}
//pemencetan 2 tombol untuk ke menu setting urutan defuse
else if(bit_is_clear(PIND, PIND6) && bit_is_clear(PIND, PIND7) && start == 0)
{
start=2;
_delay_ms(150);
}
else if(bit_is_clear(PIND, PIND6) && start == 0)
{
//tambah menit
menit++;
if(menit == 100) menit=0 ;
_delay_ms(150);
}
else if(bit_is_clear(PIND, PIND7) && start == 0)
{ //tambah detik
detik++;
if(detik == 60) detik=0 ;
_delay_ms(150);
}
else if(bit_is_clear(PIND, PIND6) && start == 2)
{
//ke urutan defuse sebelumnya
if (fusemem == 1) fusemem = 2;
fusemem--;
_delay_ms(150);
}
else if(bit_is_clear(PIND, PIND7) && start == 2)
{
//ke urutan defuse selanjutnya
fusemem++;
if (fusemem > 24) fusemem = 24;
_delay_ms(150);
}
}
6. Pengolah Data Pemotongan kabel
Code:
//jika salah urutan potong
void salah(void)
{ sequence=4;
detik =5;
menit =0;
gagal =1;
timer0();
OCR0=50;
}
void defuse(void)
{
//pembacaan code di array fusecode[]
uint8_t sol1,sol2,sol3,sol4;
//perumusan urutan berdasarkan variabel fusemem
sol1=fusecode[fusemem * 4];
sol2=fusecode[(fusemem * 4) +1];
sol3=fusecode[(fusemem * 4) +2];
sol4=fusecode[(fusemem * 4) +3];
//(fusemem disimpan di eeprom agar tidak terhapus)
//pembacaan PIN sesuai urutan code defuse
if(sequence == 0)
{
if( bit_is_set(PINB, sol1)) sequence =1;
if( bit_is_set(PINB, sol2) || bit_is_set(PINB, sol3) || bit_is_set(PINB, sol4) ) salah();
}
else if (sequence == 1)
{
if( bit_is_set(PINB, sol2)) sequence =2;
if( bit_is_set(PINB, sol3) || bit_is_set(PINB, sol4) ) salah();
}
else if (sequence == 2)
{
if( bit_is_set(PINB, sol3)) sequence =3;
if( bit_is_set(PINB, sol4)) salah();
}
//jika urutan terakhir benar maka akan menghentikan timer
//jika tidak maka akan mentriger dunction salah
else if (sequence == 3 && bit_is_set(PINB, sol4))
{
TCCR1B = 0;
TCCR0 = 0;
defused=1;
}
}
7. PROGRAM UTAMA
Code:
int main(void)
{
//deklarasi PIN input/output
DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA3) ; //scan 7 seg
DDRD &= ~_BV(PD5) & ~_BV(PD6) & ~_BV(PD7) ; // input tombol
DDRB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) ; // defuser
DDRD |= _BV(PD4); //buzzer dan LED
DDRC |= _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3) | _BV(PC4) | _BV(PC5) | _BV(PC6) | _BV(PC7) ; // segmen
//inisialisasi variabel awal
start=0;
gagal=0;
kritis=0;
defused=0;
sequence=0;
dor=0;
//baca eeprom
detik=eeprom_read_byte(&detikee);
menit=eeprom_read_byte(&menitee);
fusemem=eeprom_read_byte(&fusee);
//trigger transistor switch sirene (bisa diabaikan jika tidak memakai sirene)
PORTD &= ~_BV(PD4);
sei();
while(1)
{
tombol();
if(start == 1) defuse();
if (dor == 1) boom();
else
{
if(defused == 0) tulis();
else sukses();
}
}
return 0;
}
AYO KALO MAU DIBAHAS..DENGAN SENANG HATI AKAN SAYA KUPAS TUNTAS ..
SELAMAT MENCOBA
0
