This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

2011/05/10

Robotic Petani: Prospero






  • Judul: Robotic Petani: Prospero
  • Author: Author:
  • Description: This is just a short video of the hexapod robot, Prospero, planting. Keterangan: Ini hanyalah sebuah video pendek dari robot hexapod, Prospero, tanam. Prospero is an autonomous robotic farmer that would be used as part of a group or swarm of identical robots. Prospero adalah seorang petani robot otonom yang akan digunakan sebagai bagian dari kelompok atau kawanan robot identik. Imagine a hundred of these robots walking across a field, planting and working together like a colony of ants or bees. Bayangkan seratus robot ini berjalan melintasi ladang, menanam dan bekerja sama seperti koloni semut atau lebah. For more a longer video that goes more in depth, search for "vanmunch36" and look for the other Prospero videos. Untuk lebih video lagi yang berlangsung lebih mendalam, cari "vanmunch36" dan mencari video Prospero lainnya. Prospero is the working prototype of an Autonomous Micro Planter (AMP) that uses a combination of swarm and game theory and is the first of four steps. Prospero adalah prototipe kerja yang Otonom Mikro Planter (AMP) yang menggunakan kombinasi teori mengeriap dan permainan dan merupakan yang pertama dari empat langkah. It is meant to be deployed as a group or "swarm". Hal ini dimaksudkan untuk digunakan sebagai kelompok atau "kawanan". The other three steps involve autonomous robots that tend the crops, harvest them, and finally one robot that can plant, tend, and harvest--autonomously transitioning from one phase to another. Tiga lainnya langkah melibatkan robot otonom yang merawat tanaman, panen mereka, dan akhirnya satu robot yang dapat menanam, cenderung, dan panen - mandiri transisi dari satu fase yang lain. Prospero is controlled with a Parallax Propeller chip mounted on a Schmart Board. Prospero dikendalikan dengan Parallax Propeller chip dipasang di Dewan Schmart. Its body is designed by Lynxmotion and the orginal programming allows it to walk autonomously in any direction while avoiding objects with its duel ultrasonic Ping))) without turning it's body. Tubuhnya dirancang oleh Lynxmotion dan pemrograman asli memungkinkan untuk berjalan secara mandiri ke segala arah sambil menghindari benda dengan Ping duel ultrasonik nya))) tanpa membalikkan tubuh itu. An underbody sensor array allows the robot to know if a seed has been planted in the area at the optimal spacing and depth. Sebuah array sensor bagian bawah bodi mobil memungkinkan robot untuk mengetahui apakah benih telah ditanam di daerah tersebut pada jarak optimal dan kedalaman. Prospero can then dig a hole, plant a seed in the hole, cover the seed with soil, and apply any pre-emergence fertilizers and/or herbicides along with the marking agent. Prospero kemudian dapat menggali lubang, menanam benih di dalam lubang, menutupi benih dengan tanah, dan menerapkan pupuk setiap munculnya pra dan / atau herbisida bersama dengan agen menandai. Prospero can then talk to other robots in the immediate proximity that it needs help planting in that area or that this area has been planted and to move on via IR (currently represented with a green and red LED ). Prospero kemudian dapat berbicara dengan robot lainnya di kedekatan lansung yang membutuhkan bantuan tanam di daerah itu atau bahwa daerah ini telah ditanam dan untuk pindah melalui IR (saat ini diwakili dengan LED hijau dan merah). The more seeds it plants, the more the "green" LED lights up, the more it draws other robots nearby (+2). Semakin banyak bibit tanaman itu, semakin banyak "hijau" lampu LED Facebook, semakin ia menarik robot lainnya terdekat (+2). The more it detects planted seeds, the more it repulses other robots with the "red" LED (-1) Why small, autonomous robots? Semakin banyak mendeteksi benih ditanam, semakin merasa jijik robot lain dengan LED "merah" (-1) Mengapa kecil, robot otonom? Robotics in Agriculture Despite its quaint reputation, agriculture has always been an early adapter of technology. Robotika dalam Pertanian meskipun memiliki reputasi kuno, pertanian selalu menjadi adaptor awal teknologi. This is evident from the beginning of mechanization with the cotton gin, McCormick's Reaper, tractors, hybrid seed, to genetically engineered plants that protect themselves and grow in arid environments. Hal ini terbukti dari awal mekanisasi dengan gin kapas, McCormick's Reaper, traktor, benih hibrida, untuk tanaman yang direkayasa secara genetis yang melindungi diri mereka sendiri dan tumbuh di lingkungan gersang. Yields have grown quickly, but demand from developing countries and population growth are growing faster We know that we need to continue to find ways to increase the productivity of land on a per unit basis. Hasil telah tumbuh dengan cepat, namun permintaan dari negara-negara berkembang dan pertumbuhan populasi tumbuh lebih cepat Kita tahu bahwa kita perlu terus menemukan cara untuk meningkatkan produktivitas lahan pada basis per unit. Agriculture has started to add computerization and automation to the current machinery with things like GPS based precision farming systems that can autonomously drive tractors, monitor yield, and apply fertilizer. Pertanian telah mulai menambahkan komputerisasi dan otomasi ke mesin saat ini dengan hal-hal seperti sistem presisi GPS berbasis pertanian yang mandiri dapat mendorong traktor, memonitor hasil, dan menerapkan pupuk. However, these aftermarket add-ons are built around the single most expensive and awkward part of the equipment. Namun, aftermarket add-ons yang dibangun di sekitar bagian yang paling mahal dan canggung peralatan. The person controlling the tractor. Orang yang mengendalikan traktor. Today's agricultural equipment has been designed around a person sitting in a chair. peralatan pertanian hari ini telah dirancang di sekitar orang yang duduk di kursi. It cost a lot to employ a single person so the equipment grew larger in order to maximize the productivity of that one person. Banyak biaya untuk mempekerjakan satu orang sehingga peralatan tumbuh lebih besar dalam rangka memaksimalkan produktivitas dari satu orang. However, this method has its drawbacks. Namun, metode ini memiliki kekurangan. Farming decisions have to be made at the field level. Pertanian keputusan harus dibuat pada tingkat lapangan. Nature is chaotic and dynamic. Alam adalah kacau dan dinamis. Soil nutrients and moisture change from foot to foot. Tanah nutrisi dan perubahan kelembaban dari kaki ke kaki. Having equipment that allows a single person to plant a thousand acres in a day comes at the cost of productivity per acre as a result of treating all those acres as the same. Memiliki peralatan yang memungkinkan satu orang menanam seribu hektar dalam satu hari datang pada biaya produktivitas per hektar sebagai akibat dari memperlakukan semua orang hektar sebagai sama. A swarm of small robots like Prospero would have the ability to farm inch by inch, examining the soil before planting each seed and choosing the best variety for that spot. Sebuah segerombolan robot kecil seperti Prospero akan memiliki kemampuan untuk pertanian inci demi inci, memeriksa tanah sebelum penanaman bibit masing-masing dan memilih varietas terbaik untuk tempat itu. This would maximizing the productivity of each acre, allow less land to be converted to farm land, feed more people, and provide a higher standard of living for those people because they would spend less of their money on food. Hal ini akan memaksimalkan produktivitas setiap hektar, memungkinkan lahan yang kurang untuk dikonversi menjadi lahan pertanian, pakan lebih banyak orang, dan menyediakan standar hidup yang lebih tinggi bagi orang-orang karena mereka akan menghabiskan kurang dari uang mereka pada makanan. Please let me know if you have any questions. Tolong beritahu saya jika Anda memiliki pertanyaan. Thanks! Terima kasih!
  • Date: Tanggal:
  • Length: 43 Durasi: 43
  • Tags: Farming Robot , Robotic Farmer , Parallax , Parallax Propeller , Lynxmotion , Schmart Board , Hexapod , Hexapod robot , corn , robot , farmer , planting , farming , technology , electronics , swarm robot , swarm , ant , ants , game theory , swarm theory , insect behavior , future Tags: Pertanian Robot , Robot Farmer , Parallax , Parallax Propeller , Lynxmotion , Dewan Schmart , Hexapod , Hexapod robot , jagung , robot , petani , penanaman , pertanian , teknologi , elektronik , kawanan robot , kawanan , semut , semut , teori permainan , kawanan teori , perilaku serangga , masa depan
  • Downloads: - Last from: Downloads: - Terakhir dari: (Your Blog here!) (Blog Anda di sini!)

2011/04/30

WinToFlash

pada kesempatan kali ini saya akan  memberi info tantang tools yang di gunakan untuk membuat usb menjadi flashboot,,,,,,,,

adapun nama dari softwere ini adalah     WinToFlash,,,,,,,,,,,,,

download di sini

Membuat Robot Line Follower Dengan AVR

Membuat Robot Line Follower Dengan AVR

Robot Line Follower dengan AVR ATMega8535

Membuat robot line follwer memang seru, apalagi bagi teman2 yang suka berexperimen dengan mikrokontroler AVR ATMega. “Robot Line Follower” merupakan robot yang di desain untuk mengikuti jejak (bisa garis bisa garis putus2 atau bahkan titik titik). Membuat Robot Line Follower menggunakan prosesor mikrokontroler AVR ATMega 8535 sangat mungkin dan sangat bisa diandalkan. Karena dalam desain suatu Robot Line Follower perlu kita pikirkan bahwa jejak yang akan di ikuti atau langkah2 yang akan dilakukan Robot Line Follower terhadap track atau lintasan yang di lewati Robot Line Follower tersebut. Dan dari kebutuhan Robot Line Follower tersbut feature2 yang dimiliki oleh mikrokontroler AVR ATMega 8535 sangat mencukupi dan memenuhi kebutuhan dari Robot Line Follower. dalam artikel Robot Line Follower dengan AVR ATMega8535 ini saya membuat coretan sederhana yang harus dimiliki oleh Robot Line Follower.

Blok Diagram Robot Line Follower dengan AVR ATMega8535

Fungsi bagian Blok Diagram Robot Line Follower dengan AVR ATMega 8535

  • Sensor pada Robot Line Follower dapat menggunakan foto dioda atau foto transistor, bagian ini berfungsi mendeteksi keberadaan lintasan track.
  • Keypad, Bagian ini berupa tombol yang berfungsi untuk start/stop Robot Line Follower dan sebagai pemilih konfigurasi seting Robot Line Follower terhadap medan yang di akan di lalui.
  • Display, merupakan bagian yang berfungsi untuk menampilkan pilihan seting dan hasil seting (cukup itu saja yg perlu di tampilan) bagian ini bisa menggunakan LCD atau penampil 7 segmen.
  • Driver Motor, bagian ini berupa rangkaian H Bridge driver motor DC. Bagian ini yang mengendalikan putaran motor secara langsun. Bagian ini merupakan interface anatara mikrokontroler AVR ATMega dengan motor DC. Saya suka menggunakan IC keluarga L298 untuk driver motor.
  • Mikrokontroler AVR ATMega8535, bagian ini merupakan bagian yang menentukan kemana robot akan di bawa berdasarkan data dari sensor. Bagian ini yang mengatur langkah2 Robot Line Follower dalam menaklukan lintasan.

Sensor, dapat dianalogikan sebagai ‘mata’ sebuah robot yang berfungsi untuk ‘membaca’ garis hitam dari track robot atau sebaliknya. Sehingga robot mampu mengetahui kapan dia akan berbelok ke kanan, kapan dia berbelok ke kiri dan kapan dia berhenti. Sensor yang dipakai biasanya photo reflector,LDR (Light Dependent Resistor), Photo Dioda, dan Photo Transistor – yang dipasang dua atau lebih dibagian depan bawah robot line follower. Ada juga yang menggunakan kamera sebagi sensor (atau image sensor) agar resolusi pembacaan garis lebih tinggi, sehingga menjadikan gerakan robot lebih akurat.

Rangkaian Sensor Robot Line Follower Dengan AVR ATMega

Prinsip kerja dari sensor tersebut sederhana, Ketika transmitter (infrared) memancarkan cahaya ke bidang berwarna putih, cahaya akan dipantulkan kembali ke bagian receiver oleh bidang berwarna putih tersebut dan sebaliknya. Hal ini memberikan perubahan level tegangan pada output bagian receiver, tetapi biasanya perubahan tegangan tersebut belum bisa di terima sebagai level logika TTL. Agar mampu 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 seperti terlihat pada gambar diatas.
Op Amp yang digunakan sebagai komparator adalah IC LM324, karena IC tersebut dapat bekerja di range VCC 5 Volt dan terdapat 4 buah Op Amp dalam 1 IC yang sesuai dengan jumlah Sensor yang digunakan. Sensitifitas sensor ini dapat di atur melalui R9 yang berfungsi mengatur titik referensi Komparator.

Membuat Robot Pencari Api Dengan Mikrokontroler ATMEGA 8535

Membuat Robot Pencari Api Dengan Mikrokontroler ATMEGA 8535

Api bisa jadi temen kadang juga bisa jadi musuh, nah kali ini api akan jadi musuh dalam permainan ini. Nama permainannya “PEMUSNAH API”
Yuk kita simak bagaimana api dimusnahkan, eitss!!! Terlalu ga pas, maksudnya adalah bagaimana api di padamkan oleh sebuah robot gitu.

Pertaman-tama siapkan komponen utama berikut:
Untuk komponen tambahan, ntr aja karna kita bisa cari di OM GOOGLE kok
Komponen-komponen robot:
1. ATMEGA 8535

2. Sensor UVtron (mendeteksi api)

3. Sensor ultrasonic (mendeteksi dinding)

4. LDR (mendeteksi cahaya api)

5. Motor DC (kanan dan kiri)

6. LCD 16×2

Cara kerjanya:
Ketika tidak ada api maka robot akan diam dan sensor api mendeteksi keadaan disekitarnya. ketika ada api robot akan berputar mencari dimana posisi api, setelah posisi api tepat di depan robot maka robot akan berjalan maju hingga mendekati api dan meniupnya hingga padam. Jika api dipindahkan tiba-tiba atau terlalu jauh maka robot akan kembali mencari posisi api tersebut.
Program:
Berikut ini adalah script untuk robot pencari api, project ini dibuat dalam rangka pembelajaran, jadi mohon maaf kalo masih kurang sempurna.
Pemprograman menggunakan Codevision AVR yang mendukung pemprograman bahasa C.
———————————————————————————————–
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0×18 ;PORTB
#endasm
#include <lcd.h>
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 2
#define ADC_VREF_TYPE 0×60
#define pwm_kiri     OCR1A
#define arah_kiri1   PORTD.0
#define arah_kiri2   PORTD.1
#define pwm_kanan    OCR1B
#define arah_kanan1  PORTD.2
#define arah_kanan2  PORTD.3
#define ut_kiri     PINA.6
#define ut_depan    PINA.5
#define ut_kanan    PINA.4
#define uvtron      PINA.3
#define kipas       PORTD.7
unsigned char api,api_old1,api_old2;
unsigned int adc_data[30],count;
unsigned int adc0,adc1,adc2,adc0_old,adc1_old,adc2_old;
unsigned char ratus,puluh,satuan;
unsigned char k,adc_lengkap,buffer[30];
static unsigned char input_index=0;
void cek_adc();
void baca_adc();
void baca_sensor_api();
void mundur();
void maju();
void berhenti();
void belok_kiri();
void belok_kanan();
interrupt [ADC_INT] void adc_isr(void)
{
adc_data[count]=ADCH;
if(++input_index>2) input_index=0;
if (++count > (29))
{
count=0;
input_index=0;
adc_lengkap=1;
return;
}
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
ADCSRA|=0×40;
}
void main(void)
{
PORTA=0xFF;
DDRA=0×00;
PORTB=0×00;
DDRB=0×00;
PORTC=0×00;
DDRC=0xFF;
PORTD=0x7F;
DDRD=0xFF;
TCCR0=0×00;
TCNT0=0×00;
OCR0=0×00;
TCCR1A=0xA3;
TCCR1B=0x0D;
TCNT1H=0×00;
TCNT1L=0×00;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;
ASSR=0×00;
TCCR2=0×00;
TCNT2=0×00;
OCR2=0×00;
MCUCR=0×00;
MCUCSR=0×00;
TIMSK=0×00;
ACSR=0×80;
SFIOR=0×00;
ADCSRA=0x8F;
SFIOR&=0x0F;
lcd_init(16);
#asm(“sei”)
adc0_old=0;
adc1_old=0;
adc2_old=0;
api_old1=0;
api_old2=0;
while (1)
{
target1:     if(ut_kiri==1 && ut_kanan==1 && ut_depan==1)
{
mundur();
}
else if(ut_kiri==1 && ut_kanan==1)
{
mundur();
}
else if(ut_kiri==1  && ut_depan==1)
{
mundur();
delay_ms(1000);
belok_kanan();
delay_ms(1000);
}
else if(ut_kanan==1 && ut_depan==1)
{
mundur();
delay_ms(1000);
belok_kiri();
delay_ms(1000);
}
else if(ut_kiri==1)
{
belok_kanan();
}
else if(ut_depan==1)
{
mundur();
}
else if(ut_kanan==1)
{
belok_kiri();
}
else if((ut_depan==0)&&(ut_kiri==0)&&(ut_kanan==0))
{
berhenti();
goto target2;
}
target2:     for(k=1; k<=5;k++)
{
baca_sensor_api();
}
if(api_old1>=1 && api_old2>=1)
{
lcd_gotoxy(0,0);
lcd_putsf(“ADA-API          “);
api=0;
goto target3;
}
else if(api_old1<1 && api_old2<1)
{
lcd_gotoxy(0,0);
lcd_putsf(“TIDAK ADA-API    “);
goto target1;
}
target3:     cek_adc();
if(adc0_old<=adc1_old && adc0_old<=adc2_old)
{
belok_kanan();
goto target2;
}
else if(adc2_old<=adc0_old && adc2_old<=adc1_old)
{
belok_kiri();
goto target2;
}
else if(adc1_old<=adc0_old && adc1_old<=adc2_old)
{
maju();
if(ut_depan==1)
{
for(k=1; k<=5;k++)
{
baca_sensor_api();
}
if((api_old1>=5 && api_old2>=5))
{
lcd_gotoxy(0,0);
lcd_putsf(“ADA-API          “);
maju();
delay_ms(500);
berhenti();
kipas=1;
delay_ms(500);
kipas=0;
delay_ms(5000);
api=0;
for(k=1; k<=5;k++)
{
baca_sensor_api();
}
if((api_old1>=5 && api_old2>=5))
{
lcd_gotoxy(0,0);
lcd_putsf(“MASIH ADA-API          “);
api=0;
}
else goto target1;
cek_adc();
if(adc1_old<=adc0_old && adc1_old<=adc2_old)
{
goto target4;
}
}
}
}
goto target3;
target4:     lcd_gotoxy(0,0);
lcd_putsf(“API JAUH          “);
delay_ms(5000);
cek_adc();
if(adc1_old>=adc0_old && adc1_old>=adc2_old)
{
goto target1;
}
};
}
void cek_adc(void)
{
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
ADCSRA|=0×40;
puter:          if(adc_lengkap!=1) goto puter;
adc_lengkap=0;
baca_adc();
}
void baca_adc(void)
{
adc0=(adc0_old+adc_data[0]+adc_data[3]+adc_data[6]+adc_data[9]+adc_data[12]
+adc_data[15]+adc_data[18]+adc_data[21]+adc_data[24])/10;
adc0_old=adc0;
ratus=adc0/100; adc0%=100;
puluh=adc0/10; adc0%=10;
satuan=adc0%10;
lcd_gotoxy(0,1);
sprintf(buffer, “%d%d%d  “,ratus,puluh,satuan);
lcd_puts(buffer);
adc1=(adc1_old+adc_data[1]+adc_data[4]+adc_data[7]+adc_data[10]+adc_data[13]
+adc_data[16]+adc_data[19]+adc_data[22]+adc_data[25])/10;
adc1_old=adc1;
ratus=adc1/100; adc1%=100;
puluh=adc1/10; adc1%=10;
satuan=adc1%10;
lcd_gotoxy(5,1);
sprintf(buffer, “%d%d%d  “,ratus,puluh,satuan);
lcd_puts(buffer);
adc2=(adc2_old+adc_data[2]+adc_data[5]+adc_data[8]+adc_data[11]+adc_data[14]
+adc_data[17]+adc_data[20]+adc_data[23]+adc_data[26])/10;
adc2_old=adc2;
ratus=adc2/100; adc2%=100;
puluh=adc2/10; adc2%=10;
satuan=adc2%10;
lcd_gotoxy(10,1);
sprintf(buffer, “%d%d%d  “,ratus,puluh,satuan);
lcd_puts(buffer);
}
void baca_sensor_api(void)
{
unsigned char i;
for(i=0;i<10;i++)
{
if(uvtron==0)
{
api++;
}
delay_ms(10);
}
api_old1=api;
api_old2=api_old1;
}
void maju(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“   JALAN MAJU   “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri1=1;
arah_kanan1=1;
arah_kiri2=0;
arah_kanan2=0;
delay_ms(10);
}
void mundur(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“   JALAN MUNDUR   “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri2=1;
arah_kanan2=1;
arah_kiri1=0;
arah_kanan1=0;
delay_ms(10);
}
void berhenti(void)
{
pwm_kiri=0;
pwm_kanan=0;
arah_kiri1=0;
arah_kanan1=0;
arah_kiri2=0;
arah_kanan2=0;
delay_ms(10);
}
void belok_kiri(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“   BELOK KIRI   “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri2=0;
arah_kanan1=0;
arah_kiri1=1;
arah_kanan2=1;
delay_ms(10);
}
void belok_kanan(void)
{
lcd_gotoxy(0,0);
lcd_putsf(“   BELOK KANAN   “);
pwm_kiri=0x1FFF;
pwm_kanan=0x1FFF;
arah_kiri1=0;
arah_kanan2=0;
arah_kiri2=1;
arah_kanan1=1;
delay_ms(10);
}
———

Pemrograman Bahasa C untuk AVR

 articles.jpgBahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler. Bahasa ini sudah merupakan high level language, dimana memudahkan programmer menuangkan algoritmanya. Untuk mengetahui dasar bahasa C dapat dipelajari sebagai berikut.
1. Struktur penulisan program
#include < [library1.h] > // Opsional
#include < [library2.h] > // Opsional
#define [nama1] [nilai] ; // Opsional
#define [nama2] [nilai] ; // Opsional
[global variables] // Opsional
[functions] // Opsional
void main(void) // Program Utama
{
[Deklarasi local variable/constant]
[Isi Program Utama]
}

2. Tipe data
  • char : 1 byte ( -128 s/d 127 )
  • unsigned char : 1 byte ( 0 s/d 255 )
  • int : 2 byte ( -32768 s/d 32767 )
  • unsigned int : 2 byte ( 0 s/d 65535 )
  • long : 4 byte ( -2147483648 s/d 2147483647 )
  • unsigned long : 4 byte ( 0 s/d 4294967295 )
  • float : bilangan desimal
  • array : kumpulan data-data yang sama tipenya.

3. Deklarasi variabel & konstanta
  • Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.
    Penulisan : [tipe data] [nama] = [nilai] ;
  • Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.
    Penulisan : const [nama] = [nilai] ;
  • Tambahan:
    Global variabel/konstanta yang dapat diakses di seluruh bagian program.
    Local variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya.
4. Statement
Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga comments / komentar.
Contoh:
suhu=adc/255*100; //contoh rumus perhitungan suhu
 
5. Function
Function adalah bagian program yang dapat dipanggil oleh program utama.
Penulisan :
[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2])
{
[statement] ;
}
 
6. Conditional statement dan looping
if else : digunakan untuk penyeleksian kondisi
if ( [persyaratan] ) {
[statement1];
[statement2];
}
else {
[statement3];
[statement4];
}
for : digunakan untuk looping dengan jumlah yang sudah diketahui
for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) {
[statement1];
[statement2];
}
while : digunakan untuk looping jika dan salama memenuhi syarat tertentu
while ( [persyaratan] ) {
[statement1];
[statement2];
}
do while : digunakan untuk looping jika dan salama memenuhi syarat tertentu, namun min 1 kali
do {
[statement1];
[statement2];
}
while ( [persyaratan] )
switch case : digunakan untuk seleksi dengan banyak kondisi
switch ( [nama variabel] ) {
case [nilai1]: [statement];
break;
case [nilai2]: [statement];
break;
}

7. Operasi logika dan biner
  • Logika
    AND :&&
    NOT : !
    OR : ||
  • Biner
    AND : &
    OR : |
    XOR : ^
    Shift right: >>
    Shift left : <<
    Komplemen : ~
8. Operasi relasional (perbandingan)
  • Sama dengan : ==
  • Tidak sama dengan : !=
  • Lebih besar : >
  • Lebih besar sama dengan : >=
  • Lebih kecil : <
  • Lebih kecil sama dengan : <=
9. Operasi aritmatika
  • + , - , * , / : tambah,kurang,kali,bagi
  • += , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di sebelah kanan operator
  • % : sisa bagi
  • ++ , -- : tambah satu (increment) , kurang satu (decrement)
  • Contoh :
    a = 5 * 6 + 2 / 2 -1 ; maka nilai a adalah 30
    a *= 5 ; jika nilai awal a adalah 30, maka nilai a = 30x5 = 150.
    a += 3 ; jika nilai awal a adalah 30, maka nilai a = 30+5 = 33.
    a++ ; jika nilai awal a adalah 5 maka nilai a = a+1 = 6.
    a-- ; jika nilai awal a adalah 5 maka nilai a = a-1 = 4.
 
Ditulis oleh: Tim Prasimax

Rangkaian Sistem Minimum AVR 8535

Rangkaian Sistem Minimum AVR 8535 solusi.jpgSistem minimum (sismin) mikrokontroler adalah rangkaian elektronik minimum yang diperlukan untuk beroperasinya IC mikrokontroler. Sismin ini kemudian bisa dihubungkan dengan rangkaian lain untuk menjalankan fungsi tertentu. Di keluarga mikrokontroler AVR, seri 8535 adalah salah satu seri yang sangat banyak digunakan.
Untuk membuat rangkaian sismin Atmel AVR 8535 diperlukan beberapa komponen yaitu:
  • IC mikrokontroler ATmega8535
  • 1 XTAL 4 MHz atau 8 MHz (XTAL1)
  • 3 kapasitor kertas yaitu dua 22 pF (C2 dan C3) serta 100 nF (C4)
  • 1 kapasitor elektrolit 4.7 uF (C12) 2 resistor yaitu 100 ohm (R1) dan 10 Kohm (R3)
  • 1 tombol reset pushbutton (PB1) 
Selain itu tentunya diperlukan power suply yang bisa memberikan tegangan 5V DC.
Rangkaian sistem minimum ini sudah siap untuk menerima sinyal analog (fasilitas ADC) di port A. Gambar rangkaiannya adalah sebagai berikut.
 
Active Image
 
 
Ditulis oleh: Tim Prasimax

Arsitektur Mikrokontroler AVR

Arsitektur Mikrokontroler AVR
pastarchives.jpg Mikrokontroler AVR sudah menggunakan konsep arsitektur Harvard yang memisahkan memori dan bus untuk data dan program, serta sudah menerapkan single level pipelining. Selain itu mikrokontroler AVR juga mengimplementasikan RISC (Reduced Instruction Set Computing) sehingga eksekusi instruksi dapat berlangsung sangat cepat dan efisien.
Blok sistem mikrokontroler AVR adalah sebagai berikut.
 
Active Image
 
Salah satu seri mikrokontroler AVR yang banyak menjadi andalan saat ini adalah tipe ATtiny2313 dan ATmega8535. Seri ATtiny2313 banyak digunakan untuk sistem yang relatif sederhana dan berukuran kecil. Berikut adalah feature-feature mikrokontroler seri ATtiny2313.
  • Kapasitas memori Flash 2 Kbytes untuk program
  • Kapasitas memori EEPROM 128 bytes untuk data
  • Maksimal 18 pin I/O
  • 8 interrupt
  • 8-bit timer
  • Analog komparator
  • On-chip oscillator
  • Fasilitas In System Programming (ISP)
Sedangkan ATmega8535 banyak digunakan untuk sistem yang kompleks, memiliki input sinyal analog, dan membutuhkan memori yang relatif lebih besar. Berikut adalah feature-feature mikrokontroler seri ATmega8535.
  • Memori Flash 8 Kbytes untuk program
  • Memori EEPROM 512 bytes untuk data
  • Memori SRAM 512 bytes untuk data  
  • Maksimal 32 pin I/O
  • 20 interrupt
  • Satu 16-bit timer dan dua 8-bit timer
  • 8 channel ADC 10 bit
  • Komunikasi serial melalui SPI dan USART
  • Analog komparator
  • 4 I/O PWM
  • Fasilitas In System Programming (ISP)
 
MEMORY MAP MIKROKONTROLER AVR 
 
Active Image
 
 
PENJELASAN FUNGSI PIN MIKROKONTROLER AVR

IC mikrokontroler dikemas (packaging) dalam bentuk yang berbeda. Namun pada dasarnya fungsi kaki yang ada pada IC memiliki persamaan. Gambar salah satu bentuk IC seri mikrokontroler AVR ATmega8535 dapat dilihat berikut.
Active Image
Berikut adalah penjelasan fungsi tiap kaki.

A. Port A
Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port A dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port A (DDRA) harus disetting terlebih dahulu sebelum Port A digunakan. Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin port A juga digunakan untuk masukan sinyal analog bagi A/D converter.

B. Port B
Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.
 
Port Pin
Fungsi Khusus
PB0
T0 = timer/counter 0 external counter input
PB1
T1 = timer/counter 0 external counter input
PB2
AIN0 = analog comparator positive input
PB3
AIN1 = analog comparator negative input
PB4
SS = SPI slave select input
PB5
MOSI = SPI bus master output / slave input
PB6
MISO = SPI bus master input / slave output
PB7
SCK = SPI bus serial clock
 
C. Port C
Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port C (DDRC) harus disetting terlebih dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2.

D. Port D
Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port D (DDRD) harus disetting terlebih dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.
 
Port Pin
Fungsi Khusus
PD0
RDX (UART input line)
PD1
TDX (UART output line)
PD2
INT0 ( external interrupt 0 input )
PD3
INT1 ( external interrupt 1 input )
PD4
OC1B (Timer/Counter1 output compareB match output)
PD5
OC1A (Timer/Counter1 output compareA match output)
PD6
ICP (Timer/Counter1 input capture pin)
PD7
OC2 (Timer/Counter2 output compare match output)
 
 

E. RESET
RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi masukan low selama minimal 2 machine cycle maka system akan di-reset.

F. XTAL1
XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke internal clock operating circuit.

G. XTAL2
XTAL2 adalah output dari inverting oscillator amplifier.

H. AVcc
Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus secara eksternal terhubung ke Vcc melalui lowpass filter.

I. AREF
AREF adalah kaki masukan referensi bagi A/D Converter. Untuk operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc harus dibeikan ke kaki ini.

J. AGND
AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board memiliki anlaog ground yang terpisah.