Kamis, 02 Januari 2014

contoh listing program Tampilan Ke Layar LCD



  1. Buka Codevision, klik new-->file-->project
  2.  
  3. Pada tab Chip : ATmega16, Clock:12 MHz
  4.   
  5. Pada tab LCD : PORTC 


Kemudian klik File--> Generate, Save and Exit 

Beri nama sesuai selera



#include <mega16.h>
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×15 ; //PORTC, untuk PORT yang lain gunakan codeWizard
#endasm
char lcd_buffer[33];
unsigned char nilai;
void main (void)
{
// LCD module initialization
lcd_init (16);
nilai=100;
lcd_gotoxy (0,0);
lcd_putsf (“Mau Kuliah Di”);
lcd_gotoxy (0,1);
sprintf (lcd_buffer,”BSI Aja???”,nilai);
lcd_puts (lcd_buffer);
delay_ms (100);
}

listing program Robot Line Follower tanpa LCD

include <mega16.h>
#include <delay.h>
#include <stdio.h>
#define ADC_VREF_TYPE 0x20
int i; 
int mj,md;// data buat maju (mj) dan mundur (md)

unsigned char read_adc(unsigned char adc_input)
{
        ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
        // Delay needed for the stabilization of the ADC input voltage
        delay_us(10);
        // Start the AD conversion
        ADCSRA|=0x40;
        // Wait for the AD conversion to complete
        while ((ADCSRA & 0x10)==0);
        ADCSRA|=0x10;
        return ADCH;
}
          

void maju()
{  
   PORTC=0x77;    
   delay_ms(70);
   PORTC=0xFF;
   delay_ms(100);
  
}
void mundur()
{                             
       PORTC=0xDD;    
       delay_ms(70);
       PORTC=0xFF;
       delay_ms(100);
      
    
}
void blkkiristgh()
{
        PORTC=0xF7;
        delay_ms(50);
        PORTC=0xFF; 
        delay_ms(100);
        i=0;       
}    
void blkkananstgh()
{
        PORTC=0x7F;
        delay_ms(50);
        PORTC=0xFF;
        delay_ms(100);
         i=0;
}        
// Declare your global variables here
void main(void)
{
unsigned int ADCIN1, ADCIN3, ADCIN5, ADCIN7,S4,S3,S2,S1;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
  
UCSRB=0x48;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;    */
                  

DDRC=0xFF;
DDRB=0xFF;
while (1)
      {
      ADCIN1=read_adc(1);
      ADCIN3=read_adc(3);
      ADCIN5=read_adc(5);
      ADCIN7=read_adc(7);   
     
       ADCIN1=ADCIN1+2; //  2 adalah penyamaan nilai
                   
          S4=ADCIN7*20;  // 20 adalah penguatan nilai
          S3=ADCIN5*20;
          S2=ADCIN3*20;
          S1=ADCIN1*20;         
 //==========KONDISI BELOK KANAN=========================
        if (S1 > 135 && S2 < 135 && S3 < 135 && S4 < 135)
        {        PORTC=0x7D;
            delay_ms(50);
            PORTC=0xFF; 
            delay_ms(100);
             i=0;              // belok kanan full
     }
   
     else if (S1 > 135 && S2 > 135 && S3 < 135 && S4 < 135)
              blkkananstgh();        

    else if (S1 > 135 && S2 > 135 && S3 > 135 && S4 < 135)  
        blkkananstgh();

  //=================KONDISI BELOK KIRI=====================
     else if (S1 < 135 && S2 < 135 && S3 < 135 && S4 > 135)
        {
            PORTC=0xD7;
            delay_ms(50);
            PORTC=0xFF;
            delay_ms(100); 
             i=0;          // belok kiri full
    }
       
    else if (S1 < 135 && S2 < 135 && S3 > 135 && S4 > 135)
           blkkiristgh();
   
else if (S1 < 135 && S2 > 135 && S3 > 135 && S4 > 135)
        blkkiristgh();       
         
//==================KONDISI MAJU===========================
          
    else if (S2 >135 && S3 > 135 && S1 < 135 && S4 < 135)
       {
       maju();
       mj=mj+1; 
       }
     else if (S2 >135 && S3 < 135 && S1 < 135 && S4 < 135)
       {
       maju();
       mj=mj+1; 
       }
    else if (S2 < 135 && S3 > 135 && S1 < 135 && S4 < 135)
       {
       maju();
       mj=mj+1; 
       }             
     else if (S2 > 135 && S3 > 135 && S1 > 135 && S4 > 135)
       {
       maju();
       mj=mj+1; 
       }
                  
//================KONDISI MUNDUR=======================
      
     else if  (S2 < 135 && S3 < 135 && S1 < 135 && S4 < 135)            
    {                      
                mundur();
                md=md+2;
        }
     else if  (S2 < 135 && S3 < 135 && S1 > 135 && S4 > 135)            
    {     
                mundur();
                md=md+2;                                         
     }
       
      else
      PORTC=0x77;      
                                 
        if (md>mj)
        {
            mj=0;
            md=0;   
             for(i=1;i>1000;i++)  // perintah mundur jika menemukan jalan buntu beberapa kali
                       {
                       PORTC=0xDD;                     
                       }
        }
                    
//==================KOMUNIKASI TO HYPERTERMINAL=============
    /*                                         
         printf("S4 = %u     ",S4);   
        printf("S3 = %u     ",S3);   
    printf("S2 = %u     ",S2);
    printf("S1 = %u     ",S1);     
    printf("mj = %u     ",mj);     
    printf("md = %u    \r ",md);            */

       
   
      };
}




Keterangan Flow Chart
< 135              : sensor medeteksi warna putih
> 135              : sensor medeteksi warna hitam
Robot maju     : motor kanan berputar searah jarum jam, motor kiri berputar searah jarum jam (dilihat pada satu sisi)
Robot  belok kiri         : motor kanan berputar searah jarum jam, motor kiri berputar berlawanan jarum jam (dilihat pada satu sisi)
Robot  belok kanan   : motor kanan berputar berlawanan jarum jam, motor kiri berputar searah jarum jam (dilihat pada satu sisi)
Robot  mundur              : motor kanan berputar berlawanan jarum jam, motor kiri                berputar berlawanan jarum jam (dilihat pada satu sisi)

Cara Kerja Robot
-       Pada saat sensor S2 dan S3 mendeteksi warna hitam serta S1 dan S4 mendeteksi warna putih maka robot akan bergerak maju sebab S2 dan S3 bernilai > 135 dan S1, S4 < 135
-       Ada tiga kondisi untuk robot agar belok ke kiri yaitu pada saat  S1 > 135, atau S1 dan S2 > dari 135, atau S1, S2, dan S3 > 135
-       Dan ada tiga kondisi juga untuk robot agar belok ke kanan yaitu pada saat  S4 > 135, atau S4 dan S3 > dari 135, atau S4, S3, dan S2 > 135
-       Untuk perintah mundur akan dieksekusi pada saat sensor membaca S1, S2, S3, S4 < 135 atau S1, S4 > 135 dan S2, S3 > 135.


Tabel 2.2 Input Output dari robot
Input
Output
Sensor
Port A
Pin Driver
Port C
Putaran Motor
S1
Pin 1
1A 
Pin 1
M Kanan CW
S2
Pin 3
 2A
Pin 3
M Kanan CCW
S3
Pin 5
 3A
Pin 5
M Kiri CCW
S4
Pin 7
 4A
Pin 7
M Kiri CW




Sabtu, 21 Desember 2013

Driver Moor DC L293 dan Motor Gear Box

 1. Gambar IC L 293D
 2. Gambar Layout Circuit IC L 293D
 3. Skema Rangkaian Driver Motor DC/Gear Box IC L 293D
 4. Gambar Motor DC Gear Box
 5. Gambar Motor DC Gear Box
 6. Gambar Gear Box Motor DC Mainan Anak
 7. Gambar Motor DC 2 Menjadi 1
 8. Gambar IC L 293D (Driver Motor DC)
 9. Gambar Layout Motor DC L 293D
10. Gambar Layout Motor DC L 293D

Jumat, 20 Desember 2013

Skema Rangkaian Sensor Robot Line Follower


 2. IC Penguat LM 324
 3. Gambar Data Sheet IC Penguat LM 324
 4. Skema Layout Sensor Infra Red
 5. Gambar Layout Driver sensor Infra Red IC LM 324
 6. Layout Jalur IC Penguat LM 324
 7. Layout Jalur Penguat IC LM 324
 8. Gambar Layout Sensor Infra Red
 9. Gambar Skema Keseluruhan Rangkaian Sensor Infra Red Robot Line Follower
10. Gambar Sensor Infra Red ( Pemancar dan Penerima)

Kamis, 12 Desember 2013

contoh program memutar motor dc kekanan atau kekiri

;-------------------------------------------------------------------------------------------------------
;                                Contoh Program Memutar Motor DC kekiri dan Kekanan
;-------------------------------------------------------------------------------------------------------


$mod51

                          org    00h

motor1               bit        p2.0    ; data untuk motor dc berputar kekanan
motor2               bit        p2.1    ; data untuk motor dc berputar kekiri

mulai :
               clr        motor1         ; motor dc keadaan tidak berputar
               clr        motor2         ; motor dc keadaan tidak berputar
              acall      delay            ; Memanggil Labeb delay/waktu tunda
              acall      delay
               setb     motor1          ; motor dc berputar ke kanan
               clr       motor2          
               acall   delay               ; Memanggil Labeb delay/waktu tunda
               acall   delay
               clr       motor1          ; motor dc keadaan tidak berputar
               clr       motor2          ; motor dc keadaan tidak berputar
              acall     delay             ; Memanggil Labeb delay/waktu tunda
                clr      motor1
               setb    motor2           ; motor dc berputar kekiri
               acall    delay             ; Memanggil Labeb delay/waktu tunda
               acall    delay
               sjmp     mulai             ; melompat ke label mulai
delay:       mov   R0,#65           ; waktu tunda sebesar 65/mikrosecen
delay1:     mov    R1,#0FFH
delay2:     mov     R2,#0
               djnz      R2,$
               djnz      R1,delay2
               djnz      R0,delay1
                ret                             ; kembali ke sun rutin sebelumnya
                end                            ; akhiran program / penutup program


      
     
- See more at: http://winnerparluhutan.blogspot.com/2012/12/cara-membuat-link-otomatis-di-blogger.html#sthash.c0OKL0fD.dpuf