ROBOTIKA

5

Click here to load reader

description

ROBOTIKA

Transcript of ROBOTIKA

Page 1: ROBOTIKA

Nama= Anita Rini Astuti (120534400679) Eliyawati (120534400687) Hidayatul Kharomah (120534400678) Novi Lailatul M. (120534431470) Novita Sari (120534431499) Nur Kholifah hidayah (120534400681) Ulfa Devayuni U. (120534431501) Yuliati Rahmatika (120534431452)Prodi: S1 PTE 2012 Off B

Intinya tracking warna putih diganti dengan tracking warna hitam.Putih= 0x0F Hitam= 0x00

/*****************************************************Chip type : ATmega168Program type : ApplicationClock frequency : 8,000000 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 256*****************************************************/

#include <mega168.h>#include <delay.h>#include <otherRoutine.h>#include <testing.h>#include <LCDRoutine.h>

//-------------------------------------------------------// Main Function//-------------------------------------------------------void main(void) {

// Declare your local variables here // I/O and peripheral initializations initMain(); // Sensor LED = on SEN = 1;

while (1) { // Place your code here buttonCheck(); // Baca ADC data1 = read_adc(4); data2 = read_adc(5); data3 = read_adc(6); data4 = read_adc(7);

xsensor = sensor; sensor = 0; // Jika nilai DATA lebih besar dari BATAS, maka sensor berada di atas permukaan terang if (data1>batas) sensor |= 0x01; if (data2>batas) sensor |= 0x02; if (data3>batas) sensor |= 0x04;

Page 2: ROBOTIKA

if (data4>batas) sensor |= 0x08; // Invert nilai sensor untuk jalur terang di atas permukaan gelap if (trackWarnaPutih) { sensor = sensor ^ 0x0F; } ///////////////////////////////////////////////////////////////////////// // START TRACKING /////////////////////////////////////////////////////////////////////////

if (start) { if (xsensor!=sensor) { // Hasil pembacaan sensor tidak sama dengan hasil pembacaan sebelumnya

///////////////////////////////////////////////////////////////////////// // Algoritma Line-Following ///////////////////////////////////////////////////////////////////////// if (sensor == 0x00) { //Track hilang if (xstatus == tikunganKiri) { //sebelum track hilang, sedang menikung ke kiri

motorKiri(mundur,350); motorKanan(maju,350); } else if (xstatus == tikunganKanan) { //sebelum track hilang, sedang menikung ke kanan motorKiri(maju,350); motorKanan(mundur,350); } else { //sebelum track hilang, sedang melaju lurus motorKiri(mundur,350); motorKanan(mundur,350); }

} else if (sensor == 0x01) { // hasil pembacaan sensor "0001" -> track berada di ujung kanan sensor motorKiri(maju,150); motorKanan(mundur,150); } else if (sensor == 0x02) { // hasil pembacaan sensor "0010" -> track berada di sisi kanan sensor motorKiri(maju,150); motorKanan(stop,0);

} else if (sensor == 0x03) {

// hasil pembacaan sensor "0011" -> track berada di sisi kanan sensor motorKiri(maju,150); motorKanan(mundur,30);

} else if (sensor == 0x06) {

// hasil pembacaan sensor "0110" -> track tepat berada di tengah motorKiri(maju,350); motorKanan(maju,350);

} else if (sensor == 0x04) {

Page 3: ROBOTIKA

// hasil pembacaan sensor "0100" -> track berada di sisi kiri sensor motorKanan(maju,150); motorKiri(stop,0);

} else if (sensor == 0x0C) {

// hasil pembacaan sensor "1100" -> track berada di sisi kiri sensor motorKanan(maju,150); motorKiri(mundur,30); } else if (sensor == 0x08) {

// hasil pembacaan sensor "1000" -> track berada di ujung kiri sensor motorKanan(maju,150); motorKiri(mundur,150);

} else if (sensor == 0x07) {

// hasil pembacaan sensor "0111" -> kemungkinan tikungan ke kanan motorKiri(maju,150); motorKanan(mundur,30); } else if (sensor == 0x0E) {

// hasil pembacaan sensor "1110" -> kemungkinan tikungan ke kiri motorKanan(maju,150); motorKiri(mundur,30); } else if (sensor == 0x0F) {

// hasil pembacaan sensor "1111" -> kemungkinan perempatan motorKiri(maju,350); motorKanan(maju,350); } ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // Bagian untuk menyimpan status track terakhir ///////////////////////////////////////////////////////////////////////// if ((sensor & 0x09) == 0x08) { if (xstatus == lurus) xstatus = tikunganKiri; } else if ((sensor & 0x09) == 0x01) { if (xstatus == lurus) xstatus = tikunganKanan; } else if (sensor == 0x06) { xstatus = lurus; } ///////////////////////////////////////////////////////////////////////// } }

Page 4: ROBOTIKA

///////////////////////////////////////////////////////////////////////// // STOP TRACKING ///////////////////////////////////////////////////////////////////////// else { updateDisplay();

// All motor stop motorKanan(stop,0); motorKiri(stop,0); delay_ms(50); }

};}