Anda di halaman 1dari 16

Program

Robot Line Follower


Robotika 1
Teknik Mekatronika
Politeknik Bosowa
Program Pembacaan Sensor Cahaya
• Sensor Cahaya (Review) Schematic
Memasukkan Libary
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
#include <alcd.h>
Jenis Instruksi pada library alcd.h
• lcd_init(n); // Menginisialisasi LCD dengan n adalah jumlah koomyang tersedia di
LCD.
• lcd_clear(); // Membersihkan layar LCD dan memposisikan kursor pada baris
pertama awal (0,0).
• lcd_gotoxy(m,n); // Memposisikan kursor pada koordinat x = m dan y = n , titik
awal koordinat adalah (0,0).
• lcd_putchar(n); // Menampilkan karakter ASCII yang dengan kode n.
• lcd_putsf(”string”); // Menampilkan seluruh karakter yang berada di antara dua
tanda kutip.
• lcd_puts(var_string); // Menampilkan isi dari var_string, variabel bertipe char
dengan isi berupa kode ASCII.
Library pendukung pemrograman LCD
stdio.h
• sprintf(var_strings,”%u”,var_num Contoh:
#include <stdio.h>
ber); #include <alcd.h>
• Mengubah nilai pada var_number char var_strings[16], var_number=100;
menjadi kode-kode ASCII yang void main (void)

hasilnya diisikan ke var_strings. {


sprintf (var_strings,”%u”, var_number);
• sprintf(data,"%5d", hasil); lcd_puts(var_strings); // Menampilkan
nilai 100 pada LCD
lcd_puts(data); }
Library pendukung pemrograman LCD
stdlib.h
• ftoa(var_float , n ,
#include <stdlib.h>
#include <alcd.h>

var_strings); char var_strings[16];


float var_float=10.123;
• // Mengubah nilai pada var_float menjadi kode- void main (void)
kode ASCII yang hasilnya diisikan ke var_strings {

dengan n adalah jumlah angka di belakang koma ftoa (var_float, 2 , var_strings);


lcd_puts(var_strings); // Menampilkan
yang diinginkan untuk dihasilkan. nilai 10.12 pada LCD
}
Pendeklaarasian Variabel
#define Low 50
#define High 150
#define Mid 100
eeprom unsigned char B[8];
char data[33];
unsigned char a[8], c[8], S[8], SS[8];
Program Pembacaan Sensor
void scan()
{
a[0]=read_adc(0); a[1]=read_adc(1); a[2]=read_adc(2);
a[3]=read_adc(3);a[4]=read_adc(4); a[5]=read_adc(5);
a[6]=read_adc(6); a[7]=read_adc(7);
c[0]=B[0]; c[1]=B[1]; c[2]=B[2]; c[3]=B[3]; c[4]=B[4];
c[5]=B[5]; c[6]=B[6]; c[7]=B[7];
Program Pembacaan Sensor
if (a[0]>c[0]) {SS[0]=Low;} if (a[0]<c[0]) {SS[0]=High;}
if (a[1]>c[1]) {SS[1]=Low;} if (a[1]<c[1]) {SS[1]=High;}
if (a[2]>c[2]) {SS[2]=Low;} if (a[2]<c[2]) {SS[2]=High;}
if (a[3]>c[3]) {SS[3]=Low;} if (a[3]<c[3]) {SS[3]=High;}
if (a[4]>c[4]) {SS[4]=Low;} if (a[4]<c[4]) {SS[4]=High;}
if (a[5]>c[5]) {SS[5]=Low;} if (a[5]<c[5]) {SS[5]=High;}
if (a[6]>c[6]) {SS[6]=Low;} if (a[6]<c[6]) {SS[6]=High;}
if (a[7]>c[7]) {SS[7]=Low;} if (a[7]<c[7]) {SS[7]=High;}
Program Pembacaan Sensor
lcd_gotoxy(0,0);
if (SS[0]>Mid) {S[0]=1; lcd_putchar('1');} if (SS[0]<Mid) {S[0]=0; lcd_putchar('0');}
if (SS[1]>Mid) {S[1]=1; lcd_putchar('1');} if (SS[1]<Mid) {S[1]=0; lcd_putchar('0');}
if (SS[2]>Mid) {S[2]=1; lcd_putchar('1');} if (SS[2]<Mid) {S[2]=0; lcd_putchar('0');}
if (SS[3]>Mid) {S[3]=1; lcd_putchar('1');} if (SS[3]<Mid) {S[3]=0; lcd_putchar('0');}
if (SS[4]>Mid) {S[4]=1; lcd_putchar('1');} if (SS[4]<Mid) {S[4]=0; lcd_putchar('0');}
if (SS[5]>Mid) {S[5]=1; lcd_putchar('1');} if (SS[5]<Mid) {S[5]=0; lcd_putchar('0');}
if (SS[6]>Mid) {S[6]=1; lcd_putchar('1');} if (SS[6]<Mid) {S[6]=0; lcd_putchar('0');}
if (SS[7]>Mid) {S[7]=1; lcd_putchar('1');} if (SS[7]<Mid) {S[7]=0; lcd_putchar('0');}
}
Tugas!
• Buatlah diagram Alir pembacaan Sensor Cahaya menggunakan ADC!
Program Pembuatan Menu
Deklarasi Input & Output:
#define down PINB.1
#define up PINB.0
#define cancel PINB.2
#define ok PINB.3
PORTB=0xFF;DDRB=0x00;
Program Pembuatan Menu

polbos:
delay_ms(150); lcd_clear(); lcd_gotoxy(3,0);
lcd_putsf("Praktikum"); lcd_gotoxy(3,1); lcd_putsf("Robotika 1");
if (ok==0) { goto aturpid; }
if (cancel==0) { goto start; }
goto polbos;
Program Pembuatan Menu

aturpid:
delay_ms(150); lcd_clear(); lcd_gotoxy(0,0);
lcd_putsf("1.Pengaturan PID");
if (up==0) { goto resetmemori; }
if (down==0) { goto aturkecepatan; }
if (ok==0) { goto atur_kp; }
if (cancel==0) { goto polbos; }
goto aturpid;
SIMULASI RANGKAIAN ROBOT LINE FOLLOWER
RV9 RV2 RV3 RV4 RV5 RV6 RV7 RV8

LCD1

40%

43%

43%

60%

65%

37%

45%

50%
LM016L

RV1
1k 1k 1k 1k 1k 1k 1k 1k

SEND

SENC

SENB

SENA
SENG

SENF
SENH

SENE

50%

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1k
R2 R3

1
2
3

4
5
6

7
8
9
10
11
12
13
14
1k 10k UP

PORTA DOWN U1
K

1 40
PB0/T0/XCK PA0/ADC0 SENH
2 39
D2 D1 CANCEL PB1/T1 PA1/ADC1 SENG
3 38
LED PHOTODIODE PB2/AIN0/INT2 PA2/ADC2 SENF
4 37
A

PB3/AIN1/OC0 PA3/ADC3 SENE


5 36
OK PB4/SS PA4/ADC4 SEND
6 35
PB5/MOSI PA5/ADC5 SENC
7 34
PB6/MISO PA6/ADC6 SENB
8 33
B1 PB7/SCK PA7/ADC7 SENA
14 22
PD0/RXD PC0/SCL
15 23
PD1/TXD PC1/SDA
16 24
PD2/INT0 PC2
12V U2 17 25
8 16 PD3/INT1 PC3
18 26
PD4/OC1B PC4
19 27
3 2 PD5/OC1A PC5
OUT1 VS VSS IN1 20 28
6 7 PD6/ICP1 PC6/TOSC1
OUT2 IN2 21 29
1 PD7/OC2 PC7/TOSC2
EN1
13
XTAL1
0.00 12 32
9 XTAL2 AREF
EN2 9 30
11 10 RESET AVCC
OUT3 IN3
14 15
OUT4 GND GND IN4 ATMEGA8535

0.00 C1
L293D
R1
2
33pF 1k
X1
CRYSTAL
C2 C3
1

47u
33pF
End
• Thank You For Your Attention

Anda mungkin juga menyukai