Mei 29, 2012

Tips Dapatkan Tidur yang Berkualitas



Tidur, selain bertujuan untuk mengistirahatkan diri dari kepenatan aktivitas sehari-hari, juga saat yang tepat untuk mengistirahatkan fisik dan mental. Cukup tidur tak hanya ditentukan dari kuantitas atau lamanya waktu tidur, tetapi juga dari kualitas tidur itu sendiri.
Nah, untuk mendapatkan tidur yang berkualitas, beberapa tips ini layak untuk Anda simak:
- Mandi air hangat sebelum tidur
- Alokasikan waktu setidaknya setengah jam untuk bersantai sebelum waktu tidur.
- Buatlah rutinitas dan ritual sebelum tidur, seperti membersihkan kulit yang diikuti dengan penggunaan produk perawatan tubuh, atau membaca buku yang ringan atau kitab suci serta berdoa.
- Pilihlah kasur atau matras yang paling nyaman. Jangan terlalu “ngirit” dalam memilih matras, jika ingin tidur yangberkualitas.
- Kenakan pakaian katun yang longgar untuk tidur.
- Penggunaan kaus kaki saat tidur dapat mempermudah sesorang untuk tidur karena saat tubuh lebih hangat, Anda akan lebih cepat tertidur.
- Jika pikiran sedang sibuk memikirkan masalah tertentu, coba pikirkan momen-momen bahagia atau gunakan teknik visualisasi.
- Hindari gangguan saat tidur dengan menutup pintu kamar, menyetel temperatur kamar senyaman mungkin, tidak terlalu panas atau dingin, serta meminimalisasi cahaya dan suara.
- Jaga rutinitas kapan Anda bangun di pagi hari, bahkan di saat akhir pekan, jam berapapun Anda mulai tidur, untuk menjaga keseimbangan tubuh.

7 Kebiasaan yang Membuat Sulit Tidur







Apakah Anda kesulitan tidur di malam hari? Solusinya adalah menghilangkan beberapa kebiasaan di bawah ini. 


Kurangi begadang
Siapa bilang waktu tidur itu hanya untuk anak-anak? Perhatikan jadwal tidur Anda, khususnya di akhir pekan. Tubuh kita menyesuaikan dengan rutinitas. Jika waktu tidur Anda tidak teratur — pukul 11 malam selama beberapa hari, lalu begadang sampai jam 1 pagi di hari lain  otak Anda tidak siap untuk tidur di hari kerja.

Membawa buku ke tempat tidur
Membaca sebelum tidur adalah kebiasaan banyak orang. Masalahnya, tubuh Anda akan beradaptasi dengan rutinitas tersebut — tubuh akan menolak godaan tidur sebelum Anda menyelesaikan beberapa bab. Lebih baik duduk nyaman di sofa bila Anda ingin membaca. Tempat tidur seharusnya dibatasi hanya untuk tidur atau seks. 

Membuka Facebook sampai lupa waktu
Kecerahan dari layar komputer Anda bisa menstimulasi otak. Ditambah, otak Anda akan sulit berhenti berpikir soal hal-hal menarik di Internet, meski Anda sudah keluar dari situs tersebut. Hindari main Internet di malam hari dan matikan komputer Anda. Berikan diri Anda waktu bebas dari barang elektronik.

Tempat tidur yang tidak nyaman
Tempat tidur yang bagus hanya berharga mulai dari $ 500 (Rp 4,6 juta) sampai $ 3.000 (Rp 28 juta). Uang Anda tidak terbuang sia-sia. Matras yang bagus akan membuat tidur Anda lebih lelap. Hal yang sama juga berlaku untuk seprai dan bantal. Pilih bantal yang lembut jika Anda tidur tengkurap. Beli bantal yang lebih keras jika Anda tidur menyamping.

Jam alarm yang terang
Cahaya dari jam bisa sangat mengganggu jika Anda ingin tidur. Tujuannya adalah membuat kamar segelap mungkin. Tutupi jam tersebut dengan buku atau beli jam kecil. Anda juga bisa menggunakan alarm di telepon seluler.

Menghitung domba
Ketika tidak bisa tidur, sia-sia saja bila terus berada di tempat tidur. Jika Anda sudah berusaha tidur selama lebih dari 30 menit, National Sleep Foundation menyarankan untuk melakukan sesuatu yang biasa, seperti membaca atau menonton TV. Aktivitas yang membutuhkan sedikit daya kerja otak akan menenangkan pikiran Anda. Sebelum menyadarinya, Anda akan segera kembali ke tempat tidur.

Berolahraga malam hari
Berolahraga di siang hari akan membuat Anda segar selama berjam-jam. Itulah mengapa Anda tidak boleh berolahraga tiga jam sebelum tidur. Aktivitas fisik yang intens akan menaikkan temperatur tubuh dan menambah tenaga Anda — keduanya mengganggu transisi ketenangan dalam tidur.


sumber

Mei 19, 2012

Efek Negatif Online



1. Kurangnya Aktifitas Sosial Diluar Rumah (Out Door)

Kecanduan internet seperti jejaring sosial, facebook, twitter, memberikan efek negatif yang tentu tidak baik bagi kehidupan sosial seseorang. Seseorang akan cenderung tidak aktif dan selalu duduk di depan komputer untuk bermain internet. Apalagi kecanduan game online yang membuat seseorang rela berjam jam duduk bermain internet dan terkadang sampai lupa sarapan.

2. Munculnya Berbagai Penyakit

Poin ini melanjutkan poin pertama, yaitu kurang nya beraktifitas. Yang mengakibatkan tubuh kurang berolahraga atau terkadang sampai mengalami dehidrasi. Hal ini akan memulai penyakit penyakit kecil yang muncul dan pada akhirnya akan berakibat baik bagi tubuh kita. Lain hal nya jika aktifitas di depan komputer diimbangi dengan olahraga dan makan teratur. Sehingga tubuh kita tetap sehat.

3. Game Online Tidak Baik Bagi Perkembangan Anak

Pernahkah agan melewati atau berkunjung ke sebuah warnet?? Game Online?? siapakah yang bermain disana?? Berdasarkan hal umum yang terjadi di lingkungan kita, Sebagian besar yaitu sebanyak 85% adalah anak anak yang masih dalam usia sekolah sd/smp. Tentu kita sangat miris melihat kondisi seperti ini. Disaat anak-anak seharusnya pulang setelah sekolah malah bermain game online di internet. Hal ini menyebabkan kekhawatiran akan membudayanya kegiatan ini dikalangan anak-anak, hilangnya permainan tradisional yang bermanfaat untuk perkembangan anak. Permainan tradisional sebenarnya sangat bermanfaat bagi anak. Karena mengajarkan komunikasi,sosialisasi, dll yang bermanfaat baik bagi perkembangan intelegensi anak.Lain halnya game online yang untuk memainkannya hanya duduk berjam-jam di depan komputer. jadi apakah masih mau nongkrong di depan komputer berjam-jam???

Mei 12, 2012

Misteri Gunung Salak


BOGOR--Boleh dikata Gunung Salak yang ada di Kabupaten Sukabumi dan Kabupaten Bogor, Jawa Barat, menjadi “kuburan” pesawat terbang karena sudah sering kecelakaan pesawat terjadi di gunung ini. Bahkan banyak orang yang mengaitkan gunung ini dengan hal-hal mistis, diantaranya karena selimut tebal kabut di gunung ini yang bagi sebagian orang dianggap misterius. Namun, secara logika, kabut tebal di gunung ini memang secara tidak langsung akan mengganggu perjalanan pesawat terbang seperti terjadi pada pesawat buatan Rusia, Sukhoi Superjet (SJJ) 100 yang diduga menabrak tebing gunung ini. Bagi pegiat alam bebas, karakteristik gunung tersebut terbilang unik dibandingkan gunung-gunung lain di Pulau Jawa. Karakteristiknya menyerupai gunung di Bukit Barisan yang membelah Sumatera. Gunung Salak juga menelan banyak korban dari kalangan pendaki gunung. Medannya yang ekstrem ditambah hutan yang lebat membuat orang yang kurang memahami alam bebas, tersesat. Mengutip Wikipedia, hutan di Gunung Salak terdiri dari hutan pegunungan bawah (submontane forest) dan hutan pegunungan atas (montane forest). Bagian bawah kawasan hutan, semula adalah hutan produksi kelolaan Perum Perhutani. Di antara jenis pohon yang ditanam di sini adalah tusam (Pinus merkusii), rasamala (Altingia excelsa). Pada beberapa lokasi, terutama arah Cidahu, Sukabumi, ditemukan pula jenis tumbuhan langka bernama Rafflesia rochussenii yang menyebar terbatas sampai Gunung Gede dan Gunung Pangrango di dekatnya. Bukan Jalur Penerbangan Lalu, mengapa Gunung Salak disebut sebagai “kuburan” pesawat terbang? Dari catatan sejumlah media online, di gunung yang masuk ke wilayah Taman Nasional Gunung Salak Halimun ini memang kerap terjadi rangkaian kecelakaan pesawat. Pada 15 April 2004, pesawat Paralayang Red Baron GT 500 milik Lido Aero Sport, jatuh di Desa Wates Jaya, Kecamatan Cijeruk, Kabupaten Bogor. Tiga orang tewas akibat kecelakaan ini. 20 Juni 2004, pesawat Cessna 185 Skywagon, jatuh di Danau Lido, Cijeruk, Bogor. Lima orang tewas. Kemudian pada Juni 2008, pesawat Casa 212 TNI AU jatuh di Gunung Salak di ketinggian 4.200 kaki dari permukaan laut. Kecelakaan ini menewaskan 18 orang. 30 April 2009, tiga orang tewas setelah kecelakaan terjadi pada pesawat latih Donner milik Pusat Pelatihan Penerbangan Curug jatuh di Kampung Cibunar, Desa Tenjo, Kecamatan Tenjo, Kabupaten Bogor. Selanjutnya yang terakhir ini, pesawat SSJ-100 buatan Rusia berpenumpang 46 orang jatuh pada 9 Mei 2012. Sejumlah kalangan keheranan mengapa Sukhoi yang malang ini turun ke ketinggian yang justru di bawah tinggi gunung. Staf Ahli Menristek Bidang Pertahanan Keamanan Hari Purwanto bahkan menyatakan penerbangan melalui kawasan Gunung Salak seharusnya tidak dilakukan pada ketinggian 6.000 kaki karena tinggi gunung itu sendiri sekitar 2.200 meter. Belum lagi awan tebal selalu meliputi pegunungan itu. “Biasanya penerbangan dari Halim menuju Pelabuhan Ratu di ketinggian 12.000 kaki dan standar minimum 8.000 kaki, tapi Sukhoi ini terbang dari ketinggian 10.000 kaki, mengapa turun ke 6.000 kaki,” kata Hari Purwanto di Makassar, Kamis. Pesawat Sukhoi Super Jet 100 buatan Rusia yang sempat hilang kontak saat Joy Flight dari Halim Perdanakusuma ke Pelabuhan Ratu diperkirakan menabrak pinggir tebing Gunung Salak. 45 orang yang menumpangi pesawat ini diperkirakan tewas. Hari menyebutan tiga faktor yang mungkin menyebabkan sebuah pesawat jatuh di Gunung Salah. Ketiganya adalah faktor cuaca, faktor kesalahan manusia, dan faktor kelaikan pesawat. Ia mengingatkan bahwa jalur penerbangan Bandara Halim Perdanakusuma ke Pelabuhan Ratu via Gunung Salak, bukan jalur penerbangan. Pun bukan area aman untuk penerbangan, apalagi bagi pilot yang tidak terlalu mengerti medan di sana. Pesawat Sukhoi yang telah dipesan penerbangan swasta Indonesia untuk penerbangan komersil itu diakuinya sudah diuji di sejumlah negara lain sebelum diuji di Indonesia, seperti Myanmar atau negara yang pasarnya terbuka bagi pesawat di luar Boeing, Airbus dan lainnya. Hari mengungkapkan, di masa lalu, semua pesawat yang akan digunakan di Indonesia harus melalui kajian (review) teknologi dari BPPT. Namun sejak satu dekade ini review itu tidak dilakukan lagi.


sumber

Mei 11, 2012

jakarta oh jakarta

       kata orang jakarta itu lebih kejam dari pada ibu tiri. Sepertinya sudah ada banyak orang yang menggambarkan hal tersebut, baik dalam bentuk tulisan, lagu, maupun pantun. Tapi, kebanyakan itu hanya menggambarkan di Jakarta susah buat cari duit dan di jakarta persaingan sangat ketat.Kalo kamu gak rajin dan kreatif, pasti kalah saingan. Tapi sesungguhnya, Jakarta itu keras gak hanya dalam hal-hal berat seperti pekerjaan lho. Ada beberapa hal-hal yang sesungguhnya sangat sederhana, tapi tetap membutuhkan mental baja kalau dilakukan di Jakarta. 

1.Jalan Kaki di Trotoar 
         Jalan kaki di trotoar adalah hal yang sangat sederhana. Apa lagi yang bisa lebih sederhana dari sekedar jalan kaki di tempat yang emang udah seharusnya ditujukan untuk jalan kaki? Tapi di Jakarta, hal ini terkadang membutuhkan mental baja. Seringkali kamu harus beradu tempat sama motor-motor yang kepengen cepet aja.

  2.Naik Angkot 

         Seperti yang sudah beberapa kali kita bahas sebelumnya, angkot di Indonesia memang bikin kesel. Inilah yang membuat hal yang sebenernya sangat sederhana ini bisa jadi hal yang berat. Untuk naik angkot, kamu harus selalu waspada akan bahaya copet, rampok, penipu, sampe ke pengamen preman. Tanpa mental baja, maka cukup dapat dipastikan kamu akan cepet kapok naik angkot, trus ngerengek untuk minta dijemput terus sama papa kamu. :"""""""(( 

 Gitu deh. Jakarta emang aneh. Siapa suruh datang ke Jakarta. :P

Mei 08, 2012

Cerita Tentang Einstein

Penjelasan Mengenai "Teori Relativitas"


Pada suatu kesempatan saat di rumahnya, ilmuwan Albert Einstein dikelilingi sekelompok orang yang meminta padanya menjelaskan teori relativitasnya dengan kata yang paling sederhana.
Pada saat itu, diseluruh dunia hanya beberapa ilmuwan saja yang benar-benar memahami buku teori relativitasnya.
Einstein mengatakan kepada orang-orang itu, “Sebagai contoh saya katakan, Anda dengan orang yang paling engkau cintai duduk disebelah tungku api, satu jam telah berlalu, tetapi engkau merasa seperti baru 5 menit yang lalu! Sebaliknya, engkau sendirian dengan kesepian duduk disebelah tungku api yang panas, hanya 5 menit berlalu, tetapi engkau akan merasa engkau telah duduk disana selama 1 jam! Nah, ini adalah teori relativitas.”

Keranjang Sampah Besar

Ketika Einstein datang ke kantor Princeton University, ada seseorang yang bertanya kepadanya, peralatan apa yang diperlukannya?
Einstein menjawab, “Kelihatannya, saya perlu sebuah meja, kursi, peralatan tulis sertas kertas, oh ya masih ada satu lagi yaitu keranjang sampah yang besar.”
“Mengapa harus yang besar?” Tanya orang itu.
“Supaya saya dapat melempar masuk semua kesalahan yang telah saya lakukan,” jawab Einstein.

Kesadaran

Edward putra ke 2 Einstein bertanya kepadanya, “Papa, kenapa engkau bisa menjadi tokoh terkenal?”
Setelah mendengar perkataan puteranya terlebih dahulu dia tertawa dengan keras lalu menjawab, “Engkau lihat! Ulat ini merangkak diatas bola, tetapi dia tidak sadar jalan yang dilaluinya adalah jalan bengkok, sedangkan saya sadar!”

Teori Keberhasilan dan Kebangsaan

Pada 1930-an, Einstein pada pidatonya di universitas Paris pernah mengatakan, “Jika teori relativitas saya terbukti benar, Jerman akan mendeklarasikan saya sebagai seorang warga Jerman, Prancis akan mengatakan bahwa saya warga dunia, tetapi jika teori saya terbukti salah, maka Prancis akan menekankan bahwa saya seorang Jerman dan Jerman akan mengatakan bahwa saya seorang Yahudi."

Mengapa Harus Begitu Banyak Orang?

Pada 1930, Jerman menerbitkan sebuah buku kritis mengenai teori relativitas, judul buku ini disebut "seratus profesor maju untuk membuktikan bahwa teori Einstein salah."
Einstein, setelah mendengar berita itu, hanya mengangkat bahu dan berkata: "100? Mengapa begitu banyak orang yang membuktikan bahwa aku benar-benar salah? Bahkan jika benar-benar salah, seorang saja sudah cukup.” (hui/rhb)


April 30, 2012

Kunci Otomatis menggunakan AVR ATMEGA16

Ini postingan pertama saya dalam hal mikrokontroller seri ATMEGA16. Saya anggap yang sedang membaca artikel saya ini telah mengerti tentang mikrokontroler khususnya ATMEGA. Disini saya menggunakan compiler CVAVR Codevison dengan simulasi proteus. Program ini saya ambil dari elektro-kontrol.blogspot.com tapi dengan menggunakan keypad 3x4...(kalo di web aslinya pakai keypad 4x4). Jadi saya cuma modif sedikit saja.


berikut penjelasan dari elektro-kontrol.blogspot.com

Mungkin teman-teman semua sudah tahu tentang aplikasi yang bernama pengunci pintu (door lock) berpassword, pada aplikasi ini sudah saya realisasikan pada hardware yang sesungguhnya dan berhasil.

Kesulitan utama dari aplikasi ini adalah ketika seorang user memasukkan password dengan menggunakan keypad, kita harus dapat menyimpan input yang berasal dari keypad kedalam satu variabel. Misalnya user menekan 6, lalu 2, lalu 0 dan 4 berarti passwornya adalah 6204 (misalkan). Nilai tersebut harus dijadikan dalam 1 variabel yang kemudian akan dibandingkan dengan password yang sebenarnya. Jika user memasukkan password dengan benar maka akan membuka kunci, jika salah maka kunci tidak akan terbuka.

Untuk mengatasi masalah tersebut saya menggunakan array untuk mendeteksi berapa kali penekanan keypad dan angka berapa yang akan ditekan. Baiklah disini saya akan menjelaskan algoritma yang saya buat. Jika user menekan 6, lalu 2 lalu 0 dan 4 maka seperti ini logikanya:

Awalnya saya deklarasikan array sebagai berikut:
array[10], i=0;

saat terjadi penekanan angka 6 maka;
i++ (saya increamentkan) jadi i=1
kemudian angka 6 saya simpan pada variabel array[i] jadi array[1]=6

kemudian saat terjadi penekanan angka 2, maka:
i++ (saya increamentkan lagi) jadi i=2
kemudian angka 2 saya simpan pada variabel array[i] jadi array[2]=2

kemudian saat terjadi penekanan angka 0, maka:
i++ (saya increamentkan lagi) jadi i=3
kemudian angka 0 saya simpan pada variabel array[i] jadi array[3]=0

kemudian saat terjadi penekanan angka 4, maka:
i++ (saya increamentkan lagi) jadi i=4
kemudian angka 4 saya simpan pada variabel array[i] jadi array[4]=4
maka didapat array[1]=6, array[2]=2, array[3]=0, array[4]=4

kalo sudah didapat seperti diatas maka kita tinggal kumpulkan dalam satu variabel (nama variabelnya misalkan nilai) caranya:

saat i bernilai 1, i=1 kita hitung dengan rumus:
nilai=array[1]  //jadi nilai=6

saat i bernilai 2, i=2 kita hitung dengan rumus:
nilai=(array[1]*10)+array[2]  //jadi nilai=62

saat i bernilai 3, i=3 kita hitung dengan rumus:
nilai=(array[1]*100)+(array[2]*10)+array[3]  //jadi nilai=620

saat i bernilai 4, i=4 kita hitung dengan rumus:
nilai=(array[1]*1000)+(array[2]*100)+(array[3]*10)+array[4]  //jadi nilai=6204
Sudah mengerti bukan, dari rumus-rumus diatas masih dapat disederhanakan, menjadi:

jika i=1
nilai=array[i]

jika i bernilai (i>=2 dan i<=8)
nilai=(nilai*10)+array[i]
Banyaknya penekanan tombol saya batasi sampai 8 kali. Sebenarnya saya ingin membuatnya sampai 10 kali tetapi saat saya coba tidak berjalan dengan lancar saat penekanan ke 9 kali. Saya tidak tahu kenapa? Jika teman-teman bisa memecahkannya tolong beri tahu saya!

Baiklah kembali lagi ke aplikasi yang akan kita buat. Langsung saja ke cara kerjanya, gambar rangkaiannya bisa anda lihat dibawah ini. Saat pertama kali alat ini saya nyalakan maka dalam keadaan tidak terkunci (unlock), untuk menguncinya (lock) anda harus menekan tombol = (lihat gambar keypad dibawah). Setelah terkunci, jika anda ingin membukanya kembali anda harus memasukkan passwordnya (jika sudah mengetikan password tekan tombol + untuk memasukkannya). Jika benar maka akan membuka kunci, tetapi jika salah kunci tidak akan terbuka. Ketika sudah terbuka maka cara kerjanya kembali lagi ke awal. Sedangkan tombol ON/C saya gunakan untuk menghapus password jika salah dalam pengetikannya. Untuk indikator kuncinya saya menggunakan sebuah LED, jika LED menyala maka dalam keadaan tidak terkunci dan jika mati dalam keadaan terkunci.



/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.6 Professional
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com

Project : 
Version : 
Date    : 9/20/2011
Author  : F4CG                            
Company : F4CG                            
Comments: 


Chip type           : ATmega16
Program type        : Application
Clock frequency     : 12.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

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


// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

// Declare your global variables here
float nilai=0,password=321;
char temp[12],array[10],i=0,index=0;

void lock()
{
while(index==0)
{
  lcd_gotoxy(0,0);
  lcd_putsf("please press #");
  lcd_gotoxy(0,1);
  lcd_putsf("to lock");
  
  PORTB=0b10111111;
  delay_ms(10);
  if(PINB.3==0)
  {
  index=1;
  PORTD.1=1;//terkunci
  lcd_clear();
  lcd_gotoxy(0,0);
  lcd_putsf("LOCKED");
  delay_ms(100);
  lcd_clear();
  
  }
}
 }

void enter()
{
if(nilai==password)
{                  
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Unlock");
delay_ms(100);
i=0; nilai=0;
PORTD.1=0;//kunci terbuka
index=0;
}       
else
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Wrong Password");
i=0; nilai=0;
index=1;//masih terkunci
}
}                       

void simpan_dalam1variabel()
{
if(i==1)
{nilai=array[i];}
if(i>=2 && i<=11)
{nilai=(nilai*10)+array[i];}
}                           

void scanning_keypad()
{                              

lcd_gotoxy(0,0);
lcd_putsf("enter u'r pass:");

PORTB=0b11101111;
delay_ms(3);
if(PINB.0==0)
{i++;array[i]=1;simpan_dalam1variabel();delay_ms(30);}
if(PINB.1==0)
{i++;array[i]=4;simpan_dalam1variabel();delay_ms(30);}
if(PINB.2==0)
{i++;array[i]=7;simpan_dalam1variabel();delay_ms(30);}
if(PINB.3==0)
{enter();delay_ms(30);}

PORTB=0b11011111;
delay_ms(3);
if(PINB.0==0)
{i++;array[i]=2;simpan_dalam1variabel();delay_ms(30);}
if(PINB.1==0)
{i++;array[i]=5;simpan_dalam1variabel();delay_ms(30);}
if(PINB.2==0)
{i++;array[i]=8;simpan_dalam1variabel();delay_ms(30);}
if(PINB.3==0)
{i++;array[i]=0;simpan_dalam1variabel();delay_ms(30);}

PORTB=0b10111111;
delay_ms(3);
if(PINB.0==0)
{i++;array[i]=3;simpan_dalam1variabel();delay_ms(30);}
if(PINB.1==0)
{i++;array[i]=6;simpan_dalam1variabel();delay_ms(30);}
if(PINB.2==0)
{i++;array[i]=9;simpan_dalam1variabel();delay_ms(30);}
if(PINB.3==0)
{delay_ms(30);}
}        
void tampil_lcd()
{
if(nilai>0)
{
ftoa(nilai,0,temp);
lcd_gotoxy(0,1);
lcd_puts(temp);
}
}
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 

April 19, 2012

Tutorial Seven Segment dengan AVR GCC / winAVR

 
Sebelumnya saya sudah pernah memposting tentang Tutorial Seven Segment dengan CodeVision AVR, untuk mengetahui tentang Seven Segment itu sendiri bisa dilihat pada postingan sebelumnya tersebut.
Kali ini saya akan memberikan tutorial untuk menampilkan dispkay angka pada Seven Segment dengan program AVR Studio atau winAVR.


Rangkaian Skematiknya sbb:




Ada dua cara untuk menampilkan tulisan pada Seven Segment dengan AVR Studio ini, cara pertama listing programnya sebagai berikut:

/*
================================================
Program Seven Segment Display dengan AVR Studio
Programmer     : Wahyu Rahmaniar
Company        : Technologination                
================================================
 */


#include<avr/io.h>
#include<util/delay.h>

#define DATA_DDR     DDRC
#define DATA_PORT      PORTC
#define Pin_a             0
#define Pin_b             1
#define Pin_c             2
#define Pin_d             3
#define Pin_e             4
#define Pin_f             5
#define Pin_g             6
//#define Pin_Dec         7
#define F_CPU 12000000ul

void Display(int a);

  void main(void)
 
  {
  unsigned int i;
  i=0;
  DATA_DDR = 0XFF;
  do
  {
  Display(i);
  i++;
  if(i>9) i=0;
  _delay_ms(3000);
  }
  while(1);
   
 }

  void Display(int a)
  {
  switch(a)
  {
  case 0: 
  DATA_PORT = 0b11000000;
  break;           
  case 1:           
  DATA_PORT = 0b11111001;
  break;           
  case 2: 
  DATA_PORT = 0b10100100;
  break;
           
  case 3: 
  DATA_PORT = 0b10110000;
  break;       
  case 4: 
  DATA_PORT = 0b10011001;
  break;
  case 5: 
  DATA_PORT = 0b10010010;
  break;           
  case 6: 
  DATA_PORT = 0b10000011;
  break;           
  case 7: 
  DATA_PORT = 0b11111000;
  break;           
  case 8: 
  DATA_PORT = 0b10000000;
  break;       
  case 9: 
  DATA_PORT = 0b10011000;
  break;                   
    }
}


Cara Kedua listing programnya sebagai berikut:

/* 
================================================
Program Seven Segment Display dengan AVR Studio
Programmer     : Wahyu Rahmaniar
Company        : Technologination     
================================================           
*/

#include<avr/io.h>
#include<util/delay.h>

#define DATA_DDR     DDRC
#define DATA_PORT      PORTC
#define Pin_a             0
#define Pin_b             1
#define Pin_c             2
#define Pin_d             3
#define Pin_e             4
#define Pin_f             5
#define Pin_g             6
#define Pin_Dec         7
#define F_CPU 12000000ul

void Display(int a);

  void main(void) 
  {
  unsigned int i;
  i=0;
  DATA_DDR = 0XFF;
  do
  {
  Display(i);
  i++;
  if(i>9) i=0;
  _delay_ms(3000);
  }
  while(1);   
 }

  void Display(int a)
  {
  switch(a)
  {
  case 0: 
            DATA_PORT|=_BV(Pin_g);
            DATA_PORT&=~(_BV(Pin_a)|_BV(Pin_b)|_BV(Pin_c)|_BV(Pin_d)|_BV(Pin_e)|_BV(Pin_f));
            break;           
  case 1:           
            DATA_PORT|=(_BV(Pin_a)|_BV(Pin_d)|_BV(Pin_e)|_BV(Pin_f)|_BV(Pin_g));
            DATA_PORT&=~(_BV(Pin_b)|_BV(Pin_c));
            break;           
  case 2:
            DATA_PORT|=(_BV(Pin_c)|_BV(Pin_f));
            DATA_PORT&=~(_BV(Pin_b)|_BV(Pin_d)|_BV(Pin_e)|_BV(Pin_a)|_BV(Pin_g));
            break;
  case 3: 
            DATA_PORT|=(_BV(Pin_e)|_BV(Pin_f));
            DATA_PORT&=~(_BV(Pin_c)|_BV(Pin_d)|_BV(Pin_a)|_BV(Pin_b)|_BV(Pin_g));
            break;
  case 4: 
            DATA_PORT|=(_BV(Pin_a)|_BV(Pin_d)|_BV(Pin_e));
            DATA_PORT&=~(_BV(Pin_c)|_BV(Pin_b)|_BV(Pin_f)|_BV(Pin_g));
            break;
  case 5: 
            DATA_PORT|=(_BV(Pin_b)|_BV(Pin_e));
            DATA_PORT&=~(_BV(Pin_a)|_BV(Pin_c)|_BV(Pin_d)|_BV(Pin_f)|_BV(Pin_g));
            break;
           
  case 6: 
            DATA_PORT|=(_BV(Pin_a)|_BV(Pin_b));
            DATA_PORT&=~(_BV(Pin_c)|_BV(Pin_d)|_BV(Pin_f)|_BV(Pin_g)|_BV(Pin_e));
            break;
  case 7: 
            DATA_PORT|=(_BV(Pin_d)|_BV(Pin_e)|_BV(Pin_f)|_BV(Pin_g));
            DATA_PORT&=~(_BV(Pin_a)|_BV(Pin_c)|_BV(Pin_b));
            break;
  case 8: 
            DATA_PORT&=~(_BV(Pin_a)|_BV(Pin_d)|_BV(Pin_e)|_BV(Pin_c)|_BV(Pin_b)|_BV(Pin_f)|_BV(Pin_g));
            break;
  case 9: 
            DATA_PORT|=(_BV(Pin_d)|_BV(Pin_e));
            DATA_PORT&=~(_BV(Pin_a)|_BV(Pin_c)|_BV(Pin_b)|_BV(Pin_f)|_BV(Pin_g));
            break;                   
    }
}


Kedua program di atas fungsinya sama yaitu untuk menampilkan angka 0 sampai 9 pada 7 segment display.

Simulasi dan listing program lengkapnya bisa di download disini.


sumber

April 16, 2012

Alasan Koruptor Disamakan dengan Tikus

gambar tikus-tikus berdasi


Kalo DK perhatikan di media kenapa koruptor dilambangkan dengan tikus kenapa tidak tomket saja atau komodo kan lebih asik di lihat? Hmm, mungkin karena mereka memiliki beberapa kesamaan, antara lain sama-sama:
1. Suka Nyolong
Koruptor dan tikus dua-duanya memiliki kesamaan suka nyolong. Bedanya kalo tikus nyolong makanan kamu, sementara kalo koruptor nyolong duit kamu (yang harusnya bisa buat beli makanan juga).Tapi mungkin perbedaan mendasarnya adalah apa yang mendasari mereka nyolong. Tikus nyolong karena memang mereka harus bertahan hidup, sementara koruptor nyolong karena…karena apa ya? Karena hobi mugkin. Hanya dia dan tuhan saja yang tau alasannya :D

2. Susah Ditangkep
Tikus dan koruptor sama-sama susah ditangkap. Mereka sangat gesit dalam hal kabur dan pinter banget sembunyi. Bedanya kalo tikus sembunyi di belakang lemari atau di gorong-gorong, kalo koruptor sembunyinya di luar negeri, pake duit yang dia colong dari kamu.hemmm :3

3. Pantesnya Dihukum Mati
Koruptor dan tikus memang pantesnya dihukum mati aja. Bedanya kalo tikus pantesnya dihukum mati karena bisa menyebarkan penyakit, sementara kalo koruptor p dihukum mati karena…menyebarkan penyakit juga sih. Sama nyolong duit kamu. Tapi lebih ke karena mereka nyolong duit kamu. Kampret lah pokoknya.

4. Bermuka Busuk
Yah, biasanya keduanya sama-sama bermuka busuk. Kamu kadang-kadang bisa nemu tikus yang lucu sih, tapi lebih sering kamu udah jijik duluan kan liatnya. Sama halnya dengan koruptor lah.

Yah begitulah kira-kira. Semoga membantu kamu dalam mempelajari perkorupsian. Ada yang kurang? kalo DK_lover ingin menambahkan Silakan tambahkan pendapat kamu di comment. :)



April 14, 2012

Tutorial Seven Segment dengan CodeVision AVR

Tutorial Seven Segment dengan CodeVision AVR

Seven Segment adalah komponen yang terdiri dari tujuh led yang tersusun sedemikian rupa sehingga dapat digunakan untuk menampilkan angka 0-9 dan titik atau koma. Seven Segment seperti led pada umunya memiliki berbagai macam tampilan warna, yaitu merah, kuning, hijau, dsb dan berbagai macam ukuran.
Seven segment berdasarkan input logikanya terbagi menjadi dua macam, yaitu Common Anoda (input logika 0) dan Common Cathoda (input logika 1).
Hal yang perlu diperhatikan dalam setiap komponen seven segment adalah pin-pin pada yang mewakili urutan segmentnya (A-G dan titik), karena tidak semua seven segment sama urutannya walaupun sama ukurannya.

Salah satu contoh urutan kaki pada seven segment adalah sbb:



Ada berbagai macam cara dalam menampilkan seven segment, antara lain dengan menggabungkan langsung setiap pin 7 segment ke pin mikro, menggabungkan pin-pin 7 segment (sehingga yang terhubung ke mikro cuma 7 pin walaupun memakai lebih dari satu buah 7 segment) dengan common setiap 7 segment ke satu pin mikro, menggunakan IC BCD (cara ini lebih mudah, karena tidak perlu memikirkan data setiap led 7 segment, hanya mengirimkan data angka 0-9), dan menggunakan IC Shift Register.

Pada tutorial kali ini saya menggunakan cara kedua, yaitu menggabungkan setiap pin-pin 7 segment (saya menggunakan 3 buah 7 segment) dengan setiap pin common masing-masing 7 segment terhubung pada 1 pin mikrokontroler.


Seven Segment yang saya gunakan adalah Common Anoda, karena logika yang dikirimkan adalah 0 sehingga lebih sedikit power yang terbagi.


Contoh programnya dengan CodeVision AVR adalah sbb:

/*****************************************************
Tutorial 7SEGMENT dengan CodeVision AVR
Programmer : WAHYU RAHMANIAR
Company : TECHNOLOGINATION
*****************************************************/

#include
#include
#include
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include


// Declare your global variables here
char satuan, puluhan, ratusan, urut;
unsigned int data, data_temp;
unsigned int i;
unsigned char Baris1[16];

void tampil()
{
PORTD=ratusan;//mengirimkan data ratusan
PORTB=0x80;//menyalakan digit1
delay_ms(50);

PORTD=puluhan;//mengirimkan data puluhan
PORTB=0x40;//menyalakan digit2
delay_ms(50);

PORTD=satuan;//mengirimkan data satuan
PORTB=0x20;//menyalakan digit3
delay_ms(50);
//lamanya waktu scanning ditentukan oleh intruksi delay
}

void nyala_led()//fungsi untuk mengubah kedalam format 7segment
{
if (urut==0){urut=0xc0;}
if (urut==1){urut=0xf9;}
if (urut==2){urut=0xa4;}
if (urut==3){urut=0xb0;}
if (urut==4){urut=0x99;}
if (urut==5){urut=0x92;}
if (urut==6){urut=0x82;}
if (urut==7){urut=0xf8;}
if (urut==8){urut=0x80;}
if (urut==9){urut=0x90;}
}

void main(void)
{
PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0xE0;

PORTC=0x00;
DDRC=0x00;

PORTD=0xFF;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xD2;
TCNT1L=0x3A;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=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;

// LCD module initialization
lcd_init(16);
//PORTB.0=1;
i=0;
while (1)
{
if(PORTB.0==0)
{
i++;
}

data=i;

sprintf(Baris1,"Counter=%5u",data);
lcd_gotoxy(0,0);
lcd_puts(Baris1);

data_temp=data;
ratusan=data_temp/100;
urut=ratusan;
nyala_led();
ratusan=urut;

data_temp=data_temp%100;
puluhan=data_temp/10;
urut=puluhan;
nyala_led();
puluhan=urut;

satuan=data_temp%10;
urut=satuan;
nyala_led();//fungsi untuk menyalakan led 7segment
satuan=urut;

tampil();//fungsi untuk mengaktifkan 7segment berdasarkan urutan
delay_ms(1000);
lcd_clear();

};
}

Simulasi dengan proteus dan program dengan CV AVR dapat didownload
disini.

sumber

program Jam Digital

DS1307 merupakan IC Real Time Clock (RTC) yang dapat diakses dengan mikrokontroler menggunakan komunikasi serial I2C. Berikut ini saya beri contoh untuk menampilkan RTC DS1307 pada LCD dan Hyperterminal menggunakan Bascom AVR. Dengan adanya RTC ini maka kita dapat menampilkan waktu yang berupa jam, menit, dan detik, serta tanggal, yaitu hari, bulan dan tahun, untuk selengkapnya bisa dilihat di datasheet.

Berhubung gambar dibawah ini dimaksudkan untuk kepentingan simulasi langsung dengan Proteus, maka kalau ingin mempraktekkannya dengan alat yang nyata, virtual terminal ini dapat diganti dengan rangkaian serial atau biasanya menggunakan IC MAX232, sebagai berikut:



Hyperterminal dapat diakses dengan meng-klik Start --> All Programs --> Accessories --> Communications --> Hyperterminal. Kemudian lakukan pengaturan sesuai yang diminta pada wizard jika Hyperterminal baru pertama kali dibuka, selanjutnya pilih COM port yang digunakan atau terhubung dengan kabel DB9 atau USB, dan baud rate yang digunakan, dalam program ini saya menggunakan baud rate 9600.

Contoh tampilan pada Hyperterminal sbb:


Dan jangan lupa, agar jam dan tanggal pada RTC tetap dapat berjalan pada alat, pasang baterai lithium 3 volt pada kaki 3 atau VBat.

Simulasi dengan Proteus:



Data jam dan tanggal pada RTC dapat diubah pada Hyperterminal, tekan huruf "A" pada keyboard untuk mengganti data jam, dan huruf "B" untuk mengganti data tanggal.



Listing program Bascom AVR nya:
'=======================================================
'Programmer: Wahyu Rahmaniar
'Company   : Technologination
'
'RTC DS1307
'=======================================================

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2

$lib "ds1307clock.lib"

Config Sda = Portc.1
Config Scl = Portc.0
Const Ds1307w = &HD0
Const Ds1307r = &HD1

Config Clock = User

Dim Weekday As Byte
Dim Char As String * 10 , Tanda As String * 1
Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10
Dim Hari As String * 10 , Bulan As String * 10 , Tahun As String * 10
Dim A As Byte , B As Byte , C As Byte
Dim X As Byte , Y As Byte , Z As Byte
Dim Waktu As String * 10
Dim Tanggal As String * 10

Print "DS1307"
Waitms 100

Time$ = "15:30:00"
Date$ = "04-30-11"

Print "Tanggal: " ; Date$
Print "Waktu:" ; Time$

  Cls
  Cursor Off
  Locate 1 , 1
  Lcd "Tanggal: " ; _day ; ":" ; _month ; ":" ; _year
  Locate 2 , 1
  Lcd "Waktu : " ; _hour ; "-" ; _min ; "-" ; _sec
  Wait 1

Mulai:
Do
Tanda = Inkey()
   If Tanda = "A" Then
   'untuk ganti settingan waktu RTC tekan huruf A pada keyboard
      Input "Masukkan waktu (hh:mm:ss):" , Waktu
      Jam = Mid(waktu , 1 , 2)
      Menit = Mid(waktu , 4 , 2)
      Detik = Mid(waktu , 7 , 2)
      Time$ = Jam + ":" + Menit + ":" + Detik
      A = Val(jam)
      B = Val(menit)
      C = Val(detik)

      _hour = A
      _min = B
      _sec = C
      Gosub Settime
    End If

    If Tanda = "B" Then
   'untuk ganti settingan tanggal RTC tekan huruf A pada keyboard
      Input "Masukkan Tanggal (mm-dd-yy):" , Tanggal
      Bulan = Mid(tanggal , 1 , 2)
      Hari = Mid(tanggal , 4 , 2)
      Tahun = Mid(tanggal , 7 , 2)
      Date$ = Bulan + "-" + Hari + "-" + Tahun
      X = Val(bulan)
      Y = Val(hari)
      Z = Val(tahun)

      _day = Y
      _month = X
      _year = Z
      Gosub Setdate
    End If

Print "Tanggal: " ; Date$
Print "Waktu:" ; Time$
  Cls
  Cursor Off
  Locate 1 , 1
  Lcd "Tanggal: " ; _day ; ":" ; _month ; ":" ; _year
  Locate 2 , 1
  Lcd "Waktu : " ; _hour ; "-" ; _min ; "-" ; _sec
  Wait 1
Loop
End

'Pengambilan data RTC DS1307
Getdatetime:
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0

  I2cstart
  I2cwbyte Ds1307r
  I2crbyte _sec , Ack
  I2crbyte _min , Ack
  I2crbyte _hour , Ack
  I2crbyte Weekday , Ack
  I2crbyte _day , Ack
  I2crbyte _month , Ack
  I2crbyte _year , Nack
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 4
  I2cwbyte _day
  I2cwbyte _month
  I2cwbyte _year
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart
  I2cwbyte Ds1307w
  I2cwbyte 0
  I2cwbyte _sec
  I2cwbyte _min
  I2cwbyte _hour
  I2cstop
Return


atau download simulasi RTC DS1307 dan source code.

Jika sudah didownload sekali, maka download kembali dengan menghapus bagian program:
Time$ = "15:30:00"
Date$ = "04-30-11"
Karena RTC sekali download sudah tersimpan datanya dan jika ingin diubah bisa menggunakan Hyperterminal seperti yang telah dijelaskan diatas. 

Kalau bagian tsb tidak dihapus maka jam dan tanggal akan terus mengulang dari pengaturan tsb.

sumber