Minggu, 17 Juni 2012

inspirasi





Setiap manusia dilahirkan dengan hati yang bersih, walau kemudian suatu hari cinta dapat membuatnya patah tak terperi. Banyak kata, banyak makna dan banyak renungan ketika kita patah hati. Terasa begitu menyakitkan, walau hanya sekedar menghela nafas… sakitnya akan beranak puluhan kali lipat..

Hidup bukan tentang mendapatkan apa yg kamu inginkan, tapi tentang menghargai apa yg kamu miliki, dan sabar menanti yg akan menghampiri.


Sikap menunda2 adalah 1 dari penyakit yg plng umum&mematikan, &itu membuat jln kpd kesuksesan & kebahagian menjadi berat




Terkadang yg buruk menurut kita adalah yg terbaik menurut Tuhan. Dan hanya kebesaran hati yg dapat menyikapi hal itu.






Dalam usia muda, hari terasa cepat dan tahun terasa panjang. Dalam usia lanjut, tahun terasa cepat dan hari terasa panjang






Hargai orang lain, siapapun itu, dan jangan pernah menaruh dendam kepada siapapun. Isi setiap harimu dengan kebaikan.




Cinta sejati tak datang dari tatapan mata tapi dari hati. Jika ada keraguan di hati, dia bukan untuk Anda.






BICARA DENGAN BAHASA HATI








Tak ada musuh yang tak dapat ditaklukkan oleh cinta.Tak ada penyakit yang tak dapat disembuhkan oleh kasih sayang.Tak ada permusuhan yang tak dapat dimaafkan oleh ketulusan.Tak ada kesulitan yang tak dapat dipecahkan oleh ketekunan.Tak ada batu keras yang tak dapat dipecahkan oleh kesabaran.




Semua itu haruslah berasal dari hati anda.Bicaralah dengan bahasa hati, maka akan sampai ke hati pula.




Kesuksesan bukan semata-mata betapa keras otot dan betapa tajam otak anda, namun juga betapa lembut hati anda dalam menjalani segala sesuatunya.




Anda tak kan dapat menghentikan tangis seorang bayi hanya dengan merengkuhnya dalam lengan yang kuat. Atau, membujuknya dengan berbagai gula-gula dan kata-kata manis. Anda harus mendekapnya hingga ia merasakan detak jantung yang tenang jauh di dalam dada anda.Mulailah dengan melembutkan hati sebelum memberikannya pada keberhasilan anda.




Jika kita tidak mampu menjadi pelita yang menerangi malam ...maka jadilah kunang-kunang yang menghiasi malam ...Bila kegagalan itu bagai hujan dan keberhasilan bagaikan matahari ...maka butuh keduanya untuk melihat pelangi ...






Bermimpilah tentang apa yang ingin kamu impikan, pergilah ke tempat-tempat yang kamu inginkan, Jadilah seperti yang kamu inginkan, karena kamu hanya memiliki satu kehidupan dan satu kesempatan untuk melakukan hal-hal yang ingin kamu lakukan.




Bukan apa yang Anda lakukan sekali-sekali, melainkan apa yang Anda lakukan hari demi hari yang membuat perbedaan




Ingatlah bahwa Kita menunjukkan penghargaan pada orang lain bukan karena siapa mereka, tetapi karena siapakah diri Kita sendiri.


Persahabatan bukan ttng siapa yg datang lebih dulu, bukan siapa yg lebih lama kamu kenal, tapi mereka yg datang & tak pernah pergi!




Pandanglah setiap masalah sebagai kesempatan.




Waktu kamu lahir, kamu menangis dan orang-orang di sekelilingmu tersenyum. Jalanilah hidupmu dengan berusaha melakukan hal-hal yang baik sehingga pada waktu kamu meninggal, kamu tersenyum dan orang-orang di sekelilingmu menangis.

MAKNA PERSAHABATAN


MAKNA PERSAHABATAN

Apa yang kita alami demi teman kadang-kadang melelahkan
dan menjengkelkan, tetapi itulah yang membuat persahabatan
mempunyai nilai yang indah.

Persahabatan sering menyuguhkan beberapa cobaan, tetapi
persahabatan sejati bisa mengatasi cobaan itu bahkan

bertumbuh bersama karenanya…

Persahabatan tidak terjalin secara otomatis tetapi
membutuhkan proses yang panjang seperti besi menajamkanbesi,
demikianlah sahabat menajamkan sahabatnya. Persahabatan
diwarnai dengan berbagai pengalaman suka dan duka, dihibur-disakiti,
diperhatikan-dikecewakan, didengar-diabaikan, dibantu-ditolak,
namun semua ini tidak pernah sengaja dilakukan
dengan tujuan kebencian. Seorang sahabat tidak akan menyembunyikan kesalahan
untuk menghindari perselisihan, justru karena kasihnya
ia memberanikan diri menegur apa adanya.

Sahabat tidak pernah membungkus pukulan dengan ciuman,
tetapi menyatakan apa yang amat menyakitkan
dengan tujuan sahabatnya mau berubah.

Proses dari teman menjadi sahabat membutuhkan usaha
pemeliharaan dari kesetiaan, tetapi bukan pada saat kita
membutuhkan bantuan barulah kita memiliki motivasi
mencari perhatian, pertolongan dan pernyataaan kasih
dari orang lain, tetapi justru ia beriinisiatif memberikan
dan mewujudkan apa yang dibutuhkan oleh sahabatnya.

Kerinduannya adalah menjadi bagian dari kehidupan sahabatnya,
karena tidak ada persahabatan yang diawali dengan sikap egoistis.
Semua orang pasti membutuhkan sahabat sejati,
namun tidak semua orang berhasil mendapatkannya.

Banyak pula orang yang telah menikmati indahnya persahabatan, namun
ada juga yang begitu hancur karena dikhianati sahabatnya.

Membuat Traffict Light sendiri,


Membuat Traffict Light sendiri, mudah!!!!

Kali ini kita belajar simulasi membuat traffict light sederhana. Kenapa sederhana?? hhm…. konsep traffict light sangat mudah dipahami bila kita mulai dari yang sederhana. :D Yaah.. kita bikin 2 lampu traffict light dulu, biar pembaca paham bagaimana cara membuat programnya.
Idenya sederhana, cuma menghidupkan lampu hijau dan merah bergantian, plus counternya. yuuk,, kita simak!
1. Siapkan PROTEUS kamu!
2. Ini dia komponen yang diperlukan.
  • Atmega32
  • 7Segment 4 buah (2 hijau, 2 merah)
  • TRAFFICT LIGHT (Sudah disediakan oleh PROTEUS)
  • Transistor BC107 (untuk saklar counter)
  • dan resistor 10K
Gambar 1. Komponen
3. Rangkainnya seperti ini
Klik untuk memperbesar gambar
Gambar 2. Rangkaian
Gambar 2, saya menggunakan fasilitas wireless cable. Blok Traffict2 nampak tidak berhubungan langsung dengan AVR, namun karena dimasing2 port namanya sama, maka otomatis mereka saling berhubungan sesuai namanya. Klik pada gambar untuk melihat lebih jelas.
4. Bagaimana programnya?? yuph, ini dia program dalam bahasa BASCInya. Silakan co-pas ke BASCOM-AVR kamu.
$crystal = 12000000 
$regfile = “m32def.dat”
Config Porta = Output
Config Portb = Output
Config Portc = Output
Merah1 Alias Porta.0
Kuning1 Alias Porta.1
Hijau1 Alias Porta.2
Merah2 Alias Porta.3
Kuning2 Alias Porta.4
Hijau2 Alias Porta.5
Hijaucounter1 Alias Porta.6
Merahcounter1 Alias Porta.7
Hijaucounter2 Alias Portb.0
Merahcounter2 Alias Portb.1
Dim C As Integer
Declare Sub Segment(byval Dataa As Integer)
Do
Hijau1 = 1
Kuning1 = 0
Merah1 = 0
Hijaucounter1 = 1
Merahcounter1 = 0
Hijau2 = 0
Kuning2 = 0
Merah2 = 1
Hijaucounter2 = 0
Merahcounter2 = 1
C = 10
Do
Call Segment(c)
Waitms 100
Decr C
Loop Until C = 0
Hijaucounter1 = 0
Merahcounter2 = 0
Hijau1 = 0
Kuning1 = 1
Waitms 100
Hijau1 = 0
Hijaucounter1 = 0
Merahcounter1 = 1
Kuning1 = 0
Merah1 = 1
Hijau2 = 1
Kuning2 = 0
Merah2 = 0
Hijaucounter2 = 1
Merahcounter2 = 0
C = 10
Do
Call Segment(c)
Waitms 100
Decr C
Loop Until C = 0
Hijaucounter2 = 0
Merahcounter1 = 0
Hijau2 = 0
Kuning2 = 1
Waitms 100
Loop
End
Sub Segment()
Select Case Dataa
Case 0 : Portc = 0
Case 1 : Portc = 63                          ’0
Case 2 : Portc = 6                           ’1
Case 3 : Portc = 91                          ’2
Case 4 : Portc = 79                          ’3
Case 5 : Portc = 102                         ’4
Case 6 : Portc = 109                         ’5
Case 7 : Portc = 125                         ’6
Case 8 : Portc = 7                           ’7
Case 9 : Portc = 127                         ’8
Case 10 : Portc = 111                        ’9
End Select
End Sub
5. Menggunakan BASCOM-AVR, simpan dengan nama Traffict.BAS, kemudian compile.
6. Download file Traffict.HEX (hasil compile) dari AVR di PROTEUS.
7. jalankan simulasi… :D
Klik untuk memperbesar gambar
Gambar 3. Hasil
mudah bukan?? selanjutnya silahkan mengembangkan aplikasi ini menjadi 4 atau lebih percabangan jalan.

Sabtu, 16 Juni 2012

Robot Line Tracker /Line follower.



Pada project kali ini kita akan membahas cara membuat robot line tracker yang dapat bergerak mengikuti track berupa garis hitam setebal 3 cm. Garis hitam tersebut disusun membentuk sejumlah persimpangan-persimpangan. Robot diprogram untuk dapat menghitung jumlah persimpangan yang sudah dilaluinya, kemudian belok sesuai dengan arah yang diinginkan.  Untuk membaca garis, robot dilengkapi dengan sensor proximity yang dapat membedakan antara garis hitam dengan lantai putih. Sensor proximity ini dapat dikalibrasi untuk menyesuaikan pembacaan sensor terhadap kondisi pencahayaan ruangan. Sehingga pembacaan sensor selalu akurat. Agar pergerakan robot menjadi lebih halus, maka kecepatan robot diatur sesuai dengan kondisi pembacaan sensor proximity. Jika posisi robot menyimpang dari garis, maka robot akan melambat. Namun jika robot tepat berada diatas garis, maka robot akan bergerak cepat. Robot juga dapat kembali ke garis pada saat robot terlepas sama sekali dari garis. Hal ini bisa dilakukan karena robot selalu mengingat kondisi terakhir pembacaan sensor. Jika terakhir kondisinya adalah disebelah kiri garis, maka robot akan bergerak ke kanan, demikian pula sebaliknya.

Sensor Proximity
Sensor proximity bisa kita buat sendiri. Prinsip kerjanya sederhana, hanya memanfaatkan sifat cahaya yang akan dipantulkan jika mengenai benda berwarna terang dan akan diserap jika mengenai benda berwarna gelap. Sebagai sumber cahaya kita gunakan LED (Light Emiting Diode) yang akan memancarkan cahaya merah. Dan untuk menangkap pantulan cahaya LED, kita gunakan photodiode. Jika sensor berada diatas garis hitam maka photodioda akan menerima sedikit sekali cahaya pantulan. Tetapi jika sensor berada diatas garis putih maka photodioda akan menerima banyak cahaya pantulan. Berikut adalah ilustrasinya :




Sifat dari photodioda adalah jika semakin banyak cahaya yang diterima, maka nilai resistansi diodanya semakin kecil. Dengan melakukan sedikit modifikasi, maka besaran resistansi tersebut dapat diubah menjadi tegangan. Sehingga jika sensor berada diatas garis hitam, maka tegangan keluaran sensor akan kecil, demikian pula sebaliknya. Berikut adalah gambar rangkaian sensor proximity yang digunakan pada robot ini :
Agar dapat dibaca oleh mikrokontroler, maka tegangan sensor harus disesuaikan dengan level tegangan TTL yaitu 0 – 1 volt untuk logika 0 dan 3 – 5 volt untuk logika 1. Hal ini bisa dilakukan dengan memasang operational amplifier yang difungsikan sebagai komparator. Output dari photodiode yang masuk ke input inverting op-amp akan dibandingkan dengan tegangan tertentu dari variable resistor VR. Tegangan dari VR inilah yang kita atur agar sensor proximity dapat menyesuaikan dengan kondisi cahaya ruangan.

Sensor proximity terdiri dari 6 pasang LED dan photodiode yang disusun sedemikian rupa sehingga jarak antara satu sensor dengan yang lainnya lebih kecil dari lebar garis hitam. Perhatikan gambar berikut :




















Algoritma Pergerakan Robot
Sebelum membuat program, maka kita perlu mendefinisikan seluruh kemungkinan pembacaan sensor proximity. Dengan demikian kita dapat menentukan pergerakan robot yang tujuannya adalah menjaga agar robot selalu berada tepat diatas garis. Berikut adalah beberapa kemungkinan pembacaan garis oleh sensor proximity :


Setelah mengetahui kemungkinan-kemungkinan posisi sensor, maka selanjutnya harus didefinisikan aksi dari setiap kondisi tersebut. Perhatikan tabel berikut ini :
Lapangan Uji Coba
Lapangan berupa garis-garis hitam diatas lantai berwarna putih. Garis hitam disusun  membentuk banyak persimpangan. Ukuran tiap kotak adalah 30 cm x 30 cm. Ketebalan garis hitam adalah 3 cm. Garis hitam ini bisa dibuat menggunakan isolasi hitam kemudian ditempel pada lantai atau kertas karton berwarna putih.

Driver Motor DC
Untuk menggerakkan dua buah motor dc, digunakan IC H-Bridge Motor Driver L298, yang mampu memberikan arus maksimum sebesar 1A ke tiap motor. Input L298 ada 6 jalur, terdiri dari input data arah pergerakan motor dan input untuk PWM (Pulse Width Modulation). Untuk mengatur kecepatan motor, pada input PWM inilah akan diberikan lebar pulsa yang bervariasi dari mikrokontroler.




AVR Microcontroller

Sebagai ”otak” robot digunakan mikrokontroler AVR jenis ATmega8535 yang akan membaca data dari sensor proximity, mengolahnya, kemudian memutuskan arah pergerakan robot.

Pada robot line track ini, keluaran sensor proximity dihubungkan ke PortD.0 dan PortD.5 pada mikrokontroler. Sedangkan driver motor dihubungkan ke PortC.0 s/d PortC.5 seperti terlihat padagambar berikut :

Membuat Source Code
Source code secara lengkap dapat dilihat pada Lampiran A. Source code dibuat dengan menggunakan software CodeVisionAVR dengan langkah-langkah sebagai berikut :

1.      Jalankan CodeVisionAVR, kemudian klik File -> New, Pilih Project
2.     “Do you want to use the CodeWizardAVR?” Klik Yes
3.      Pilih Chip yang digunakan, chip : ATmega8535L, clock : 12.00000 MHz

4.      Lakukan setting sebagai berikut :
Port : Port C sebagai Output dan Port D sebagai Input Pullup
Timers : Timer 0 dengan Clock Value 10,800 KHz, aktifkan Overflow
Interrupt.
5.      Klik File -> Generate, Save and Exit
6.      Buatlah source code seperti pada Lampiran A.
7.      Setelah selesai membuat source code, klik Setting -> Programmer
8.      Pilih AVR Chip Programmer Type : Kanda System STK200+/300 dan pilih Printer Port pada
LPT1 : 378h





9.      Klik Project -> Configure, kemudian pilih menu After Make dan aktifkan Program the Chip.
Klik OK jika sudah.PERHATIAN ! Jangan mengubah setting apapun pada menu ini. Jika salah memilih,chip Anda tidak bisa digunakan lagi !!


10.  Untuk meng-compile project, klik Project -> Make
11.  Jika tidak ada error maka file siap didownload ke chip. Pastikan koneksi kabel downloaderdan chip sudah terpasang dengan benar.
12.  Nyalakan power supply dan klik Program. Tunggu hingga proses download selesai.








Penjelasan Source Code
Berikut adalah penjelasan tiap bagian dari source code.

1.      Membuat definisi port yang digunakan sebagai berikut :

#define SkiXX PIND.0 // Sensor kiri terluar
#define SkiX PIND.1 // Sensor kiri luar
#define Ski PIND.2 // Sensor kiri tengah
#define Ska PIND.3 // Sensor kanan tengah
#define SkaX PIND.4 // Sensor kanan luar
#define SkaXX PIND.5 // Sensor kanan terluar
#define EnKi PORTC.4 // Enable L298 untuk motor kiri
#define dirA_Ki PORTC.0 // Direction A untuk motor kiri
#define dirB_Ki PORTC.1 // Direction B untuk motor kiri
#define EnKa PORTC.5 // Enable L298 untuk motor kanan
#define dirC_Ka PORTC.2 // Direction C untuk motor kanan
#define dirD_Ka PORTC.3 // Direction D untuk motor kanan

2.      Menentukan library yang digunakan :

#include <mega8535.h> // Library untuk chip ATmega8535
#include <delay.h> // Library delay

3. Membuat variable sebagai pengingat kondisi pembacaan sensor line terakhir.
bit x;

4. Membuat ISR Timer 0 / Interrupt Service Routine Timer 0.
• ISR ini digunakan untuk menghasilkan pulsa PWM untuk mengendalikan motor kiri dan
   kanan melalui bit EnKi dan EnKa.
• ISR Timer 0 dieksekusi secara periodik ketika Timer 0 overflow. Lamanya tergantung nilai Timer/Counter 0 (TCNT0).
• Periode pulsa ditentukan oleh TCNT0. Nilai maksimumnya 0xFF atau 255d.
• Duty cycle PWM untuk motor kiri ditentukan oleh nilai lpwm. Maksimum 255.
• Duty cycle PWM untuk motor kanan ditentukan oleh nilai rpwm. Maksimum 255.












unsigned char xcount,lpwm,rpwm; // Definisi variable
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
xcount++;            // xcount=xcount+1
if(xcount<=lpwm)EnKi=1;         // EnKi=1 jika xcount <= lpwm
else EnKi=0;        // EnKi=0 jika xcount > lpwm
if(xcount<=rpwm)EnKa=1;        // EnKa=1 jika xcount <= rpwm
else EnKa=0;       // EnKa=0 jika xcount > rpwm
TCNT0=0xFF;     // Timer0 Value Menentukan periode pulsa PWM
}

5. Membuat sub rutin agar robot bergerak maju
void maju()
{
dirA_Ki=1;dirB_Ki=0; // Motor kiri maju
dirC_Ka=1;dirD_Ka=0; // Motor kanan maju
}

6. Membuat sub rutin agar robot belok ke kiri
void belok_kiri()
{
unsigned int i;
lpwm=50; rpwm=50; // Kecepatan pelan
delay_ms(60); // Robot dimajukan sedikit
dirA_Ki=0;dirB_Ki=1; // Motor kiri mundur
dirC_Ka=1;dirD_Ka=0; // Motor kanan maju
for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {};
for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {};
lpwm=0; rpwm=0; // Robot berhenti

Pada program diatas, tampak ada 2 “for while” yang masing-masing diulang 1000 kali untuk
memastikan bahwa sensor benar-benar membaca sebuah garis, bukan noda atau kotoran yang ada di lapangan.
• for(i=0;i<=1000;i++) while (!SkiXX ||!SkiX) {};

Robot akan terus belok kiri selama sensor SkiXX=0 atau SkiX=0 (sensor berada diatas
garis hitam)

• for(i=0;i<=1000;i++) while ( SkiXX || SkiX) {};
Selanjutnya robot tetap belok kiri selama sensor SkiXX=1 atau SkiX=1 (sensor berada
diatas permukaan putih)


7. Membuat sub rutin agar robot belok ke kanan
void belok_kanan()
{
unsigned int i;
lpwm=50; rpwm=50;                   // Kecepatan pelan
delay_ms(60);                              // Robot dimajukan sedikit
dirA_Ki=1;dirB_Ki=0;               // Motor kiri maju
dirC

Jumat, 15 Juni 2012

SEBUAH KOMITMEN, SENYUMAN DAN CINTA



Disaat kamu ingin melepaskan seseorang, ingatlah pada saat kamu ingin mendapatkannya.Disaat kamu mulai tidak mencintainya, ingatlah saat pertama kamu jatuh cinta padanya.Disaat kamu mulai bosan dengannya, ingatlah selalu saat terindah bersamanya.Disaat kamu ingin menduakannya, bayangkan jika dia selalu setia.Disaat kamu ingin membohonginya, ingatlah saat dia jujur padamu.

Maka kamu akan merasakan arti dia untukmu, jangan sampai disaat dia sudah tidak disisimu, kamu baru menyadari semua arti dirinya untukmu.

Yang indah hanya sementara..Yang abadi adalah kenangan..Yang ikhlas hanya dari hati..Yang tulus hanya dari sanubari..Tidak mudah mencari yang hilang..Tidak mudah mengejar impian..Yang lebih susah adalah mempertahankan yang ada, karena walaupun tergenggam bisa terlepas juga…