0% menganggap dokumen ini bermanfaat (0 suara)
3K tayangan12 halaman

Kumpulan Project Proteus

Lampu lalu lintas berfungsi untuk mengatur lalu lintas kendaraan dengan menyalakan dan mematikan lampu merah, kuning, dan hijau secara bergantian; simulasi lampu lalu lintas di persimpangan jalan menggunakan Arduino dan Proteus mengatur waktu menyala tiap lampu.

Diunggah oleh

MCS Candra Saputro
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
3K tayangan12 halaman

Kumpulan Project Proteus

Lampu lalu lintas berfungsi untuk mengatur lalu lintas kendaraan dengan menyalakan dan mematikan lampu merah, kuning, dan hijau secara bergantian; simulasi lampu lalu lintas di persimpangan jalan menggunakan Arduino dan Proteus mengatur waktu menyala tiap lampu.

Diunggah oleh

MCS Candra Saputro
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

Lampu lalu lintas berfungsi untuk mengatur kelancaran dan ketertiban lalu lintas kendaraaan

bermotor. Lampu lalu lintas tersebut harus dapat beroperasi secara terus menerus dan sesuai
dengan kebutuhan yang diperlukan oleh keadaan lalu lintas setempat.

Setelah postingan sebelumnya Simulasi Traffict Light dengan ATmega8535.


Kali ini saya masih ingin berbagi tentang simulasi Traffict Light, tapi pada kali ini saya menggunakan
mikrokontroller Arduino, dan pada kali ini akan mensimulasikan Traffict light di perempatan jalan.

Untuk mensimulasikan Arduino dengan Proteus, maka anda harus menambahkan library arduino ke
dalam software Proteus.

Berikut ini adalah skema traffict light dengan Arduino

Setelah skema tersebut di rangkai pada software proteus, maka untuk bisa menjalankan
simulasinya dibutuhkan file .hex dari program yang sudah di compile dengan software Arduino.

Berikut ini adalah sketch dari simulasi traffict light tersebut.

// Traffict Light IndoProteus


int merah1 = 2;
int merah2 = 3;
int merah3 = 4;
int merah4 = 5;
int kuning1 = 6;
int kuning2 = 7;
int kuning3 = 8;
int kuning4 = 9;
int hijau1 = 10;
int hijau2 = 11;
int hijau3 = 12;
int hijau4 = 13;

void setup() {
pinMode(merah1,OUTPUT);
pinMode(merah2,OUTPUT);
pinMode(merah3,OUTPUT);
pinMode(merah4,OUTPUT);
pinMode(kuning1,OUTPUT);
pinMode(kuning2,OUTPUT);
pinMode(kuning3,OUTPUT);
pinMode(kuning4,OUTPUT);
pinMode(hijau1,OUTPUT);
pinMode(hijau2,OUTPUT);
pinMode(hijau3,OUTPUT);
pinMode(hijau4,OUTPUT);

void loop() {
// Hidupkan M1,M3,H2,H4
digitalWrite(merah1,HIGH);
digitalWrite(merah2,LOW);
digitalWrite(merah3,HIGH);
digitalWrite(merah4,LOW);
digitalWrite(kuning1,LOW);
digitalWrite(kuning2,LOW);
digitalWrite(kuning3,LOW);
digitalWrite(kuning4,LOW);
digitalWrite(hijau1,LOW);
digitalWrite(hijau2,HIGH);
digitalWrite(hijau3,LOW);
digitalWrite(hijau4,HIGH);
delay(8000);

// Matikan M1,M3,H2,H4, Hidupkan K1,K2,K3,K4


digitalWrite(merah1,LOW);
digitalWrite(merah2,LOW);
digitalWrite(merah3,LOW);
digitalWrite(merah4,LOW);
digitalWrite(kuning1,HIGH);
digitalWrite(kuning2,HIGH);
digitalWrite(kuning3,HIGH);
digitalWrite(kuning4,HIGH);
digitalWrite(hijau1,LOW);
digitalWrite(hijau2,LOW);
digitalWrite(hijau3,LOW);
digitalWrite(hijau4,LOW);
delay(2000);
// Matikan K1,K2,K3,K4 Hidupkan H1,H3,M2,M4
digitalWrite(merah1,LOW);
digitalWrite(merah2,HIGH);
digitalWrite(merah3,LOW);
digitalWrite(merah4,HIGH);
digitalWrite(kuning1,LOW);
digitalWrite(kuning2,LOW);
digitalWrite(kuning3,LOW);
digitalWrite(kuning4,LOW);
digitalWrite(hijau1,HIGH);
digitalWrite(hijau2,LOW);
digitalWrite(hijau3,HIGH);
digitalWrite(hijau4,LOW);
delay(8000);

// Matikan H1,H2,H3,H4 Hidupkan K1,K2,K3,K4


digitalWrite(merah1,LOW);
digitalWrite(merah2,LOW);
digitalWrite(merah3,LOW);
digitalWrite(merah4,LOW);
digitalWrite(kuning1,HIGH);
digitalWrite(kuning2,HIGH);
digitalWrite(kuning3,HIGH);
digitalWrite(kuning4,HIGH);
digitalWrite(hijau1,LOW);
digitalWrite(hijau2,LOW);
digitalWrite(hijau3,LOW);
digitalWrite(hijau4,LOW);
delay(2000);

Rangkailah rangkaian dan komponen hingga seperti hasil gambar dibawah :


Proteus Pembuatan Radar sesuai arah mata angin menggunakan Bascom AVR
dengan ditambahkan button untuk merubah arah mata angin.

Source Code:
$regfile = "m16def.dat"
$crystal = 11059200

Config Portb = Output


Config Pinc.0 = Output
Config Pinc.1 = Input

Port_led Alias Portb


Middle_led Alias Pinc.0
Button Alias Pinc.1
Button = 1
Dim Data_led As Byte , X As Byte
Dim Direction As Boolean
Dim Stopped As Boolean

Dim Flag As Boolean


Flag = 1
Stopped = 0
Direction = 0
Data_led = &B00000001

Middle_led = 1
Do
If Button = 0 Then
If Flag = 1 Then
Stopped = Not Stopped

If Stopped = 0 Then
Direction = Not Direction
End If
Flag = 0
End If
Else
Flag = 1
End If

If Stopped = 0 Then
If Direction = 1 Then
Rotate Data_led , Left , 1
Else
Rotate Data_led , Right , 1
End If
End If
Port_led = Data_led
Waitms 200
Loop

Aplikasi pembacaan suhu ( Thermometer Digital ) ini, menggunakan sensor LM35 dan penampil
LCD 16x2 yang akan di simulasikan pada Software Proteus.

Berikut ini adalah skema rangkaian tersebut


Menurut datasheet LM35, untuk kenaikan 1 derajat Celcius akan mengakibatkan perubahan 10mV
terhadap output tegangannya. Dimana saat suhu 0 Celcius sensor ini mempunyai tegangan offset
sebesar 0 V.

Disini saya akan melakukan pembacaan suhu dalam satuan derajat Celcius dengan range
pengukuran 0-100 Celcius. Sehingga tegangan output dari LM35 adalah 0-1V. Tegangan output
tersebut sudah dapat dibaca oleh mikrokontroler melalui ADC tanpa diperlukan sebuah penguat
tegangan. Aplikasi ini telah saya buat dalam bentuk real (sesungguhnya) dan juga saya simulasikan
menggunakan Proteus. Schematic LM35 yang kemudian ditampilkan pada LCD dapat dilihat diatas.

Berikut ini adalah source code program dari Thermometer digital ini yang belum di compile.

int SUHU;
char temp[8];
float suhu_celcius;

#include <mega16.h>
#include <stdlib.h>
#include <lcd.h>
#include <delay.h>

// Fungsi Alfanumerik Pada LCD Modul


#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#define ADC_VREF_TYPE 0x40

// Membaca hasil konversi AD


unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay diperlukan untuk stabilisasi tegangan input ADC


delay_us(10);

// Mulai konversi AD
ADCSRA|=0x40;

// Tunggu konversi AD untuk menyelesaikan


while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{
// Inisialisasi Analog Comparator
ACSR=0x80;
SFIOR=0x00;

// Inisialisasi ADC
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// Inisialisasi LCD Modul


lcd_init(16);
lcd_clear(); // Bersihkan layar LCD Display
lcd_gotoxy(1,0); // Set cursor pada 1,0
lcd_putsf("Akuisisi Data"); // Menampilkan Tulisan Akuisisi Data

lcd_gotoxy(0,1); // Set cursor pada 0,1


lcd_putsf("Suhu Dengan LM35"); // Menampilkan Tulisan Suhu Dengan LM35
delay_ms(700); // Delay selama 700 milli Detik

lcd_clear(); // Bersihkan layar LCD Display


lcd_gotoxy(2,0); // Set cursor pada 2,0
lcd_putsf("Dan LCD 16x2"); // Menampilkan Tulisan Dan LCD 16x2

lcd_gotoxy(1,1); // Set cursor pada 1,1


lcd_putsf("Dengan ATmega16"); // Menampilkan Tulisan Dengan ATmega16
delay_ms(700); // Delay selama 700 milli Detik

lcd_clear(); // Bersihkan layar LCD Display


lcd_gotoxy(3,0); // Set cursor pada 3,0
lcd_putsf("Kelompok 4"); // Menampilkan Tulisan Kelompok 4
lcd_gotoxy(1,1); // Set cursor pada 1,1
lcd_putsf("Teknik Elektro"); // Menampilkan Tulisan Teknik Elektro
delay_ms(700); // Delay 700 milli detik

lcd_clear(); // Bersihkan layar LCD Display


lcd_gotoxy(3,0); // Set cursor pada 3,0
lcd_putsf("Universitas"); // Menampilkan Tulisan Universitas

lcd_gotoxy(3,1); // Set cursor pada 3,1


lcd_putsf("Muhammadiyah"); // Menampilkan Tulisan Muhammadiyah
delay_ms(700); // Delay 700 milli detik

lcd_clear(); // Bersihkan layar LCD Display


lcd_gotoxy(6,0); // Set cursor pada 6,0
lcd_putsf("Kota"); // Menampilkan Tulisan Kota

lcd_gotoxy(4,1); // Set cursor pada 4,1


lcd_putsf("Tangerang"); // Menampilkan Tulisan Tangerang
delay_ms(1300); // Delay 1,3 detik
while (1)
{
lcd_clear( ); // Bersihkan layar LCD Display
SUHU = read_adc(0); // Baca ADC
suhu_celcius = (float)SUHU*500/1023; // Rumus mengubah ke derajat celcius

lcd_gotoxy(0,0); // Set cursor pada 0,0


lcd_putsf("Suhu Saat Ini:"); // Tampilkan Kata Suhu Saat Ini
ftoa(suhu_celcius,1,temp); // Float to array
lcd_gotoxy(0,1); // Set cursor pada 0,1
lcd_puts(temp);

lcd_gotoxy(5,1); // Set cursor pada 5,1


lcd_putchar(0xdf); // Menampilkan karakter derajat
lcd_putsf("C"); // Tampilkan Karakter C (celcius)
delay_ms(500); // Delay selama 500 milli second

}
}

Aplikasi LCD 2*16 dengan simulasi program PROTEUS


Program menuliskan karakter string Selamat Datangdan fahmizal
$regfile = m8535.dat
$crystal = 8000000
konfigurasi pin lcd 16*2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs =
Portc.0
Config Lcd = 16 * 2
cls
Do
Home
Lcd Selamat Datang
Lowerline
Lcd fahmizal
Loop
End

Perintah Cls berfungsi sebagai pembersih layar lcd dari sisa-sisa karakter yang tersimpan pada memori
lcd tersebut. Perintah Home berfungsi untuk meletakan kursor lcd pada baris pertama dan kolom
pertama. Sedangkah perintah Lowerline berfungsi untuk meletakan kursor lcd pada baris kedua dan
kolom pertama. Untuk menghilangkan kursor lcd ditambah dengan instruksi Cursor Off pada konfigurasi
lcd. Perintah Config Lcd = 16 * 2 merupakan deklarasi penggunaan tipe lcd 16*2, jika diiginkan
konfigurasi lcd 16*4 maka perintah diubah menjadi Config Lcd = 16 * 4. Berikut tampilan lcd 16*4:
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs =
Portc.0
Config Lcd = 16 * 4
Do
Home
Lcd Selamat Datang
Lowerline
Lcd fahmizal
Thirdline
Lcd mikrokontroler
Fourthline
Lcd mudah dgn AVR
Loop
End
Perintah Thirdline berfungsi untuk meletakan kursor lcd pada baris ketiga dan kolom pertama.
Sedangkah perintah Fourthline berfungsi untuk meletakan kursor lcd pada baris keempat dan kolom
pertama. Penyederhanaan perintah Home, Lowerline, Thirdline, Fourthline dapat dilakukan dengan
perintah locate. Sebagai contoh karakter AVR akan ditampilkan pada lcd dengan posisis baris kedua
dan kolom ketujuh maka perintahnya menjadi:

Do
Locate 2 , 7
Lcd AVR
Loop
End
Program menuliskan variabel pada LCD 2*16
$regfile = m8535.dat
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs =
Portc.0
Config Lcd = 16 * 4
Cursor Off
Dim Tulisan As String * 10
Do
Tulisan = fahmizal
Locate 1 , 1
Lcd Tulisan
Loop
End
Program percobaan kedua ialah menuliskan suatu variabel pada lcd, prinsipnya ialah menyimpan (buffer)
data tersebut kedalam suatu variabel. Dalam contoh ini perintah Lcd Tulisan ialah menuliskan data yang
tersimpan pada variabel tulisan. Variabel tulisan tersebut sebelumnya harus dideklarasikan sebagai tipe
data jenis apa, pada percobaaan ini variabel tulisan dedeklrasikan sebagai tipe data string. Untuk kasus
variabel data berupa tipe integer ialah sebagai berikut:

Dim Tulisan As integer


Do
Tulisan = 1234
Locate 1 , 1
Lcd Tulisan
Loop
End
Program menggeser kekiri dan kekanan karakter LCD

$regfile = m8535.dat
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.1 , Rs =
Porta.0
Config Lcd = 16 * 4
Dim A As Byte
Do
Cls
Lcd *Belajar LCD*
Lowerline
Waitms 10
Lcd *FAHMIZAL*
Waitms 10
For A = 1 To 25
Shiftlcd Right
Waitms 10
Next
For A = 1 To 25
Shiftlcd Left
Waitms 10
Next
Home Upper
Lcd _UNIVERSITAS_
Waitms 10
Lowerline
Waitms 10
Lcd _Gadjah Mada_
Waitms 10
For A = 1 To 5
Cursor Off Noblink
Waitms 10
Cursor On Blink
Waitms 10
Display Off
Waitms 10
Display On
Next
NEW support for 4-line LCD
Thirdline
Lcd _DIPLOMA_
Fourthline
Lcd _TEKNIK ELEKTRO_
Wait 1
Loop
End

Anda mungkin juga menyukai