robotika
DESCRIPTION
ROBOTIKATRANSCRIPT
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;
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) {
// 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; } ///////////////////////////////////////////////////////////////////////// } }
///////////////////////////////////////////////////////////////////////// // STOP TRACKING ///////////////////////////////////////////////////////////////////////// else { updateDisplay();
// All motor stop motorKanan(stop,0); motorKiri(stop,0); delay_ms(50); }
};}