Translate

Membuat Rangkaian Komunikasi 2 Mikrokontroller Master - Slave Menggunakan INPUT / OUTPUT Bascom AVR

Membuat Rangkaian Komunikasi 2 Mikrokontroller Master - Slave Menggunakan INPUT / OUTPUT Bascom AVR


       Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara untuk membuat sebuah rangkaian dengan 3 master sebagai transmitter dan 1 buah slave sebagai receiver, jadi data yang akan dikirimkan master ke slave maksimal 8 bit atau 256 data. pada simulasi kali ini hanya menggunakan push button sebagai sensornya pada tiap-tiap master kemudian pada bagian slave akan ditampilkan nilainya di LCD display. untuk skema dan rangkaiannya seperti berikut ini.




a. Skema Proteus





b. Program Bascom AVR

//master1
$regfile = "m128def.dat"
$crystal = 12000000

Config Porte = Output
Porte = 0

Dim X1 As Integer
Dim X2 As Integer
Dim X3 As Integer
Dim X4 As Integer
Dim X5 As Integer
Dim Z1 As Integer
Dim Z2 As Integer
Dim Z3 As Integer
Dim Z4 As Integer


Ddrc.0 = 0
Ddrc.1 = 0
Ddrc.2 = 0
Ddrc.3 = 0
Ddrc.4 = 0

Ddrf.0 = 1
Ddrf.1 = 1
Ddrf.2 = 1
Ddrf.3 = 1
Ddrf.4 = 1
Ddrf.5 = 1
Ddrf.6 = 1
Ddrf.7 = 1


Do

'000
If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 0 Then
Portf = 1
End If

'100
If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 0 Then
Portf = 2
End If


'010
If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 0 Then
Portf = 3
End If


'001
If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 1 Then
Portf = 4
End If


'110
If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 0 Then
Portf = 5
End If


'101
If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 1 Then
Portf = 6
End If


'011
If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 1 Then
Portf = 7
End If


'111
If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 1 Then
Portf = 8
End If


Loop





//master2
$regfile = "m128def.dat"
$crystal = 12000000

Config Porte = Output
Porte = 0

Dim X1 As Integer
Dim X2 As Integer
Dim X3 As Integer
Dim X4 As Integer
Dim X5 As Integer
Dim Z1 As Integer
Dim Z2 As Integer
Dim Z3 As Integer
Dim Z4 As Integer


Ddrc.0 = 0
Ddrc.1 = 0
Ddrc.2 = 0
Ddrc.3 = 0
Ddrc.4 = 0

Ddre.0 = 1
Ddre.1 = 1
Ddre.2 = 1
Ddre.3 = 1
Ddre.4 = 1
Ddre.5 = 1
Ddre.6 = 1
Ddre.7 = 1


Do


'000
If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 0 Then
Porte = 1
End If

'100
If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 0 Then
Porte = 2
End If


'010
If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 0 Then
Porte = 3
End If


'001
If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 1 Then
Porte = 4
End If


'110
If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 0 Then
Porte = 5
End If


'101
If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 1 Then
Porte = 6
End If


'011
If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 1 Then
Porte = 7
End If


'111
If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 1 Then
Porte = 8
End If

Loop


 


//master3
$regfile = "m128def.dat"
$crystal = 12000000

Config Porte = Output
Porte = 0

Dim X1 As Integer
Dim X2 As Integer
Dim X3 As Integer
Dim X4 As Integer
Dim X5 As Integer
Dim Z1 As Integer
Dim Z2 As Integer
Dim Z3 As Integer
Dim Z4 As Integer


Ddrc.0 = 0
Ddrc.1 = 0
Ddrc.2 = 0
Ddrc.3 = 0
Ddrc.4 = 0

Ddre.0 = 1
Ddre.1 = 1
Ddre.2 = 1
Ddre.3 = 1
Ddre.4 = 1
Ddre.5 = 1
Ddre.6 = 1
Ddre.7 = 1


Do


'000
If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 0 Then
Porte = 1
End If

'100
If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 0 Then
Porte = 2
End If


'010
If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 0 Then
Porte = 3
End If


'001
If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 1 Then
Porte = 4
End If


'110
If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 0 Then
Porte = 5
End If


'101
If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 1 Then
Porte = 6
End If


'011
If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 1 Then
Porte = 7
End If


'111
If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 1 Then
Porte = 8
End If


Loop





//slave
$regfile = "m128def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portf.0 , E = Portf.1 , Db4 = Portf.2 , Db5 = Portf.3 , Db6 = Portf.4 , Db7 = Portf.5
Config Lcd = 16 * 2

Cls
Cursor Off

Ddra.0 = 0
Ddra.1 = 0
Ddra.2 = 0
Ddra.3 = 0
Ddra.4 = 0
Ddra.5 = 0
Ddra.6 = 0
Ddra.7 = 0

'buzzer
Ddrf.7 = 1

Dim X As Integer
Dim Y As Integer
Dim Z As Integer


Do

X = Pina
Y = Pinb
Z = Pinc

If X = 8 And Y = 8 And Z = 8 Then
Locate 1 , 1
Lcd "ALL GOOD"
Portf.7 = 0
Else
Portf.7 = 1
End If

If X = 1 Then
Locate 1 , 1
Lcd "1 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "2 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "3 OPEN"
Waitms 100
Cls


Elseif X = 2 Then
Locate 1 , 1
Lcd "2 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "3 OPEN"
Waitms 100
Cls

Elseif X = 3 Then
Locate 1 , 1
Lcd "1 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "3 OPEN"
Waitms 100
Cls


Elseif X = 4 Then
Locate 1 , 1
Lcd "1 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "2 OPEN"
Waitms 100
Cls

Elseif X = 5 Then
Locate 1 , 1
Lcd "3 OPEN"
Waitms 100
Cls

Elseif X = 6 Then
Locate 1 , 1
Lcd "2 OPEN"
Waitms 100
Cls

Elseif X = 7 Then
Locate 1 , 1
Lcd "! OPEN"
Waitms 100
Cls

End If



If Y = 1 Then
Locate 1 , 1
Lcd "4 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "5 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "6 OPEN"
Waitms 100
Cls


Elseif Y = 2 Then
Locate 1 , 1
Lcd "5 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "6 OPEN"
Waitms 100
Cls

Elseif Y = 3 Then
Locate 1 , 1
Lcd "4 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "6 OPEN"
Waitms 100
Cls


Elseif Y = 4 Then
Locate 1 , 1
Lcd "4 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "5 OPEN"
Waitms 100
Cls

Elseif Y = 5 Then
Locate 1 , 1
Lcd "6 OPEN"
Waitms 100
Cls

Elseif Y = 6 Then
Locate 1 , 1
Lcd "5 OPEN"
Waitms 100
Cls

Elseif Y = 7 Then
Locate 1 , 1
Lcd "4 OPEN"
Waitms 100
Cls

End If


If Z = 1 Then
Locate 1 , 1
Lcd "7 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "8 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "9 OPEN"
Waitms 100
Cls


Elseif Z = 2 Then
Locate 1 , 1
Lcd "8 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "9 OPEN"
Waitms 100
Cls

Elseif Z = 3 Then
Locate 1 , 1
Lcd "7 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "9 OPEN"
Waitms 100
Cls


Elseif Z = 4 Then
Locate 1 , 1
Lcd "7 OPEN"
Waitms 100
Cls
Locate 1 , 1
Lcd "8 OPEN"
Waitms 100
Cls

Elseif Z = 5 Then
Locate 1 , 1
Lcd "9 OPEN"
Waitms 100
Cls

Elseif Z = 6 Then
Locate 1 , 1
Lcd "8 OPEN"
Waitms 100
Cls

Elseif Z = 7 Then
Locate 1 , 1
Lcd "7 OPEN"
Waitms 100
Cls

End If


'Locate 1 , 1
'Lcd X
'Locate 2 , 1
'Lcd Y
'Locate 3 , 1
'Lcd Z

'Waitms 100
'Cls


Loop



 



c. VIDEO HASILNYA












Membuat Alat Penampil Angka 0 sampai 9 Menggunakan 7-segment dan IC 74147, IC 7404, IC 7447

Membuat Alat Penampil Angka 0 sampai 9 Menggunakan 7-segment dan IC 74147, IC 7404, IC 7447


        Pada tulisan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang bisa digunakan untuk menampilkan angka dari 0 sampai 9 menggunakan push button, jadi pada alat ini terdapat 9 buah push button yang mana jika tiap push button ditekan maka 7segment akan menampilkan nilai yang berurutan, misal push button 1 akan menampilkan nilai 1 dan push button 2 akan menampilkan nilai 2 pada 7segment, begitu seterusnya hingga 9 push button. IC yang digunakan ada 3 yaitu IC 74147, IC 1404, IC 7447. untuk lebih jelasnya berikut adalah skemanya



a. Skema rangkaian 




b. Komponen

1. IC 74147
2. IC 7404
3. IC 7447
4. 7segment
5. Resistor
6. Capasitor
7. Push button
8. Power supply 5v





c. VIDEO HASILNYA














Membuat Dadu Digital 7-Segment Rangkaian ANALOG IC 4017, IC 4026, NE555

Membuat Dadu Digital 7-Segment Rangkaian ANALOG IC 4017, IC 4026, NE555


        Pada tulisan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk menampilkan angka pada saat tombol ditekan dan jika tombol tidak ditekan maka akan tampil angka acak pada 7segment, jadi seperti halnya alat pengocok dadu digital yang mana akan menampilkan angka acak saat tombol ditekan. IC yang digunakan ada 3 yaitu IC 4017, IC 4026 dan NE555. untuk lebih jelasnya berikut adalah skemanya.



a. Skema Rangkaian




b. Komponen

1. IC 4017
2. IC 4026
3. NE555
4. BD139
5. 7segment
6. Resistor 
7. Kapasitor
8. Push Button
9. Power Supply 5v





c. VIDEO HASILNYA












Membuat Pasien Monitor Alat Deteksi Heart Beat BPM, Deteksi Jarak SRF04 dan Tekanan Paru-Paru MPX5700AP (Codevision AVR)

Membuat Pasien Monitor Alat Deteksi Heart Beat BPM, Deteksi Jarak SRF04 dan Tekanan Paru-Paru MPX5700AP (Codevision AVR)


      Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara memebuat sebuah alat yang memiliki 3 fungsi sekaligus yaitu sebagai pengukur heart beat atau BPM kemudian pengukur jarak dan pengukur tekanan paru-paru, sensor yang digunakan adalah pulse sensor, HC-SRF04 dan MPX5700AP. untuk mikrokontroller menggunakan Arduino dan penampil lcd sebagai user interfacenya, bahasa program yang digunakan adalah CV AVR atau codevision avr. untuk lebih jelasnya berikut adalah program dan skemanya.




a. Minimum System ATMega16





b. Sensor Pulse / Heart Beat





c. Sensor jarak HC-SRF04





d. Sensor Tekanan MPX5700AP






e. Program codevision AVR

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 2/8/2017
Author  : NeVaDa
Company :
Comments:


Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>
// Alphanumeric LCD Module functions
#include <alcd.h>

#define ADC_VREF_TYPE 0x40
#define trigger1    PORTB.0
#define echo1       PINB.1
#define OUT         1
#define IN          0

int cacah;
int ok;
int mark;
int adcbpm;
char temp1[10];
char temp2[10];
int bpmxx;
char temp[10];
int bpmx;
float adcmpx, x, Vout, Tekanan_kpa;
char lcd[16];
unsigned int count1;
unsigned long sens1, waktu1;
unsigned char baris1[16];

// Read the AD conversion result
unsigned int 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 ADCW;
}

// Declare your global variables here

void bpm(){

          adcbpm = read_adc(1);
          delay_ms(200);
          if((adcbpm >= 400)&&(mark == 0)){
            bpmx++;
            mark = 1;
          }
         
          if((adcbpm <= 400)&&(mark == 1)){
            mark = 0;
          }
                          
          itoa(bpmx,temp1);
          lcd_gotoxy(11,0);
          lcd_puts(temp1);
         
          cacah++;
         
          if(cacah < 25 ){
          bpm();
          }
         
          if(cacah > 25 ){
          bpmxx = bpmx * 12;
          itoa(bpmxx,temp2);
          lcd_gotoxy(10,1);
          lcd_putsf("B=");
          lcd_puts(temp2);
         
          bpmx = 0;
          ok = 0;
          cacah = 0;

         
          }
         

}



void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=0
PORTB=0x00;
DDRB=0xFD;

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA4;
SFIOR&=0x1F;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 7
// EN - PORTC Bit 1
// D4 - PORTC Bit 2
// D5 - PORTC Bit 3
// D6 - PORTC Bit 4
// D7 - PORTC Bit 5
// Characters/line: 16
lcd_init(16);

while (1)
      {
       adcmpx = read_adc(0);
         Vout = (float)(adcmpx*5.0)/1023.0;
         Tekanan_kpa = (float)((Vout/5)-0.04)/0.0012858;
         ftoa(Tekanan_kpa,1,temp);
        

      
          count1 = 0;
          trigger1 = 0;
          delay_us(10);
          trigger1 = 1;
          delay_us(20);
          trigger1 = 0;
                 
          while(echo1 == 0) {};
          while(echo1 == 1)
          {
            count1++;
          }       
         
          waktu1=(count1*0.090422453703703703703703703703704);
          sens1=((waktu1*0.3495)/2);
          
          lcd_gotoxy(0,1);
          sprintf(baris1,"J= %3d",sens1);
          lcd_puts(baris1);
         
          lcd_gotoxy(0,0);
          lcd_putsf("kpa= ");
          lcd_puts(temp);
     
        bpm();          
         
                 
          delay_ms(5000);
          lcd_clear();
      
      }
}






f. VIDEO HASILNYA










Membuat Alat Untuk Deteksi Jarak Benda atau Sensor Mobil Parkir Mundur Menggunakan Ultrasonic JSN SR04T ARDUINO

Membuat Alat Untuk Deteksi Jarak Benda atau Sensor Mobil Parkir Mundur Menggunakan Ultrasonic JSN SR04T ARDUINO


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk mendeteksi jarak benda menggunakan Arduino dan output led beserta alarm buzzer, jadi alat ini sebenarnya digunakan untuk mobil parkir yang mana saat dia mundur pasti akan membutuhkan sebuah indikator pada saat jarak lebih dari 3 meter, jarak diantara 3 meter sampai 1,5 meter dan jarak kurang dari 1,5 meter. alarm buzzer dan led akan berbunyi blink ketika jarak diantara 2,5 sampai 1,5 meter, kemudian jika jarak kurang dari 1,5 meter led dan buzzer akan menyala secara kontinyu atau terus menerus. jika jarak 3 meter atau lebih dari 2,5 meter maka led dan buzzer akan mati. sensor yang digunakan adalah sensor ultrasonic JSN SR04T. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino Uno





b. Sensor Jarak JSN SR04T





c. Led dan Buzzer






d. Program Arduino IDE

#include "Wire.h"
#include <LiquidCrystal.h>

const int pingPin = 7;
int inPin = 6;
const int pingPin2 = 5;
int inPin2 = 4;

LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
long duration, cm;
long duration2, cm2;
int mark;
int mark2;

//lebih dari 3 meter = 190
//antara 1,5 sampai 2,5 = 80
//kurang dari 1,5 = 50  

void setup() {
  pinMode(pingPin, OUTPUT);
  pinMode(inPin, INPUT);
  pinMode(pingPin2, OUTPUT);
  pinMode(inPin2, INPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  //Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
 
}

void loop(){

mark = 0;
mark2 = 0;

digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
duration = pulseIn(inPin, HIGH);

cm = microsecondsToCentimeters(duration);

//Serial.println(cm);

digitalWrite(pingPin2, LOW);
delayMicroseconds(2);
digitalWrite(pingPin2, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin2, LOW);
duration2 = pulseIn(inPin2, HIGH);

cm2 = microsecondsToCentimeters(duration2);


if((cm <= 60)&&(cm2 >= 60 )&&(mark == 0)&&(mark2 == 0)){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH); 
  mark = 1;
  mark2 = 1;
  }


if((cm2 <= 60)&&(cm >= 60 )&&(mark == 0)&&(mark2 == 0)){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH); 
  mark = 1;
  mark2 = 1;
  }

if((cm >= 100)&&(mark == 0 )){
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  mark = 1;
  delay(500);
  }

if((cm >= 60)&&(cm <= 100)&&(mark == 0)){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  delay(100);
  mark = 1;
  }

if((cm <= 60)&&(mark == 0 )){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  mark = 1;
  }



if((cm2 >= 100)&&(mark2 == 0)){
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  mark2 = 1;
  delay(500);
  }

if((cm2 >= 60)&&(cm2 <= 100)&&(mark2 == 0)){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  delay(100);
  mark2 = 1;
  }

if((cm2 <= 60)&&(mark2 == 0)){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  mark2 = 1;
  }


lcd.setCursor(0, 0);
lcd.print(cm);
lcd.setCursor(0, 1);
lcd.print(cm2);

}


long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}







e. VIDEO HASILNYA











  

Membuat Audiometer / Audiometri dan Mengakses GLCD Graphic ST7920 Dengan Arduino Untuk Audiometri

Membuat Audiometer / Audiometri dan Mengakses GLCD Graphic ST7920 Dengan Arduino Untuk Audiometri / Audiometer


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses GLCD ST7920 dengan Arduino yang digunakan untuk menampilkan nilai dari nilai frekuensi dan intensitas suaranya, alat ini bertujuan untuk audiometri yaitu alat ukur untuk mendeteksi apakah pasien menderita penyakit pada pendengarannya ataukah tidak, alat ini memiliki fitur bisa merubah frekuensi dari 250 Hz sampai 8000 Hz. penampil yang digunakan adalah GLCD ST7920. sensor intensitas suara yang dipakai bisa FC04 atau sensor suara yang lain yang umum digunakan untuk Arduino. untuk lebih jelasnya berikut adalah program dan skemanya.






a. Arduino Mega





b. GLCD ST7920






c. Sensor Suara





d. Headset 






e. Program Arduino TEST GLCD

#include "U8glib.h" 

//Utilize a linha abaixo para utilizar a comunicacao serial
//(Enable, RW, RS, RESET)
//U8GLIB_ST7920_128X64_1X u8g(2, 3, 4 ,5);

//Utilize a linha abaixo para utilizar a comunicacao paralela (8 bits)
//(d0, d1, d2, d3, d4, d5, d6, d7, en, di, rw, reset)
U8GLIB_ST7920_128X64_1X u8g(6, 7, 8, 9, 10, 11, 12, 13, 2, 4, 3, 5);

int display = 1; 
  
void u8g_prepare()

  u8g.setFont(u8g_font_6x10); 
  u8g.setFontRefHeightExtendedText(); 
  u8g.setDefaultForegroundColor(); 
  u8g.setFontPosTop(); 

  
void u8g_Tela1()  //Tela 1 - Arduino e Cia - Retangulos 
{
  u8g.setFont(u8g_font_unifont); 
  u8g.drawStr( 11, 35, "YANUAR M"); 
  u8g.drawStr( 12, 35, "YANUAR M");
  u8g.drawFrame(0,0,128,64); 
  u8g.drawFrame(2,2,124,60);  

  
void u8g_Tela2() //Tela 2 - Linhas horizontais e verticais
{
  for (int i = 0; i<127 ; i=i+2)
  {
    u8g.drawLine(i,0,i,64);
  }
  for (int c = 0; c<64 ; c=c+2)
  {
    u8g.drawLine(0,c,128,c);
  }


void u8g_Tela3() //Tela 3 - Arduino e Cia - Retangulo preenchido 
{
  u8g.setFont(u8g_font_unifont); 
  u8g.drawBox(0,0,128,64); 
  u8g.drawBox(2,2,124,60);  
  u8g.setColorIndex(0); 
  u8g.drawStr( 11, 35, "YANUAR M"); 
  u8g.drawStr( 12, 35, "YANUAR M"); 
  u8g.drawFrame(2,2,124,60); 
}  
  
void draw() //Rotina Desenho 
{
  u8g_prepare(); 
  switch(display) //Carrega a tela correspondente 
  {
   case 1: 
    u8g_Tela1(); 
    break; 
   case 2: 
    u8g_Tela2(); 
    break; 
   case 3: 
    u8g_Tela3(); 
    break; 
  } 

  
void setup()

  // assign default color value 
  if ( u8g.getMode() == U8G_MODE_R3G3B2 )  
   u8g.setColorIndex(255);   // white 
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) 
   u8g.setColorIndex(1);     // max intensity 
  else if ( u8g.getMode() == U8G_MODE_BW ) 
   u8g.setColorIndex(1);     // pixel on 

  
void loop()


  for (display =1; display < 4; display++) 
  { 
    u8g.firstPage();  
    do
    { 
    draw(); 
    }
    while( u8g.nextPage() ); 
    delay(3000); 
  } 
}    





f. Program Arduino Audiometri

#include "U8glib.h" 
#include <PWM.h>

//Utilize a linha abaixo para utilizar a comunicacao serial
//(Enable, RW, RS, RESET)
//U8GLIB_ST7920_128X64_1X u8g(2, 3, 4 ,5);

//Utilize a linha abaixo para utilizar a comunicacao paralela (8 bits)
//(d0, d1, d2, d3, d4, d5, d6, d7, en, di, rw, reset)
U8GLIB_ST7920_128X64_1X u8g(6, 7, 8, 9, 10, 11, 12, 13, 2, 4, 3, 5);

int display = 1; 
char tmp_string[8];
char tmp_string2[8];
int dataadc;   
int pwmpin = 46;        
int duty = 125;         // nilai duty cycle
int button;
int frek = 150;


void draw() 
{
  //konversi ke string
  //dtostrf(dataadc, 4, 2, tmp_string);
  itoa(dataadc,tmp_string,8);
  itoa(frek,tmp_string2,8);
 
  //pilih font
  u8g.setFont(u8g_font_u8glib_4);
  //u8g.setFont(u8g_font_profont11);
  //u8g.setFont(u8g_font_unifont);
 
  //x,y
  u8g.drawStr( 0, 4, "FREK= ");  
  u8g.drawStr( 27, 4, tmp_string2);
  u8g.drawStr( 0, 10, "DB= ");  
  u8g.drawStr( 27, 10, tmp_string);
 

  
void setup()

 
  pinMode(14,INPUT);
  digitalWrite(14,HIGH);
   
  // assign default color value 
  if ( u8g.getMode() == U8G_MODE_R3G3B2 )  
   u8g.setColorIndex(255);   // white 
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) 
   u8g.setColorIndex(1);     // max intensity 
  else if ( u8g.getMode() == U8G_MODE_BW ) 
   u8g.setColorIndex(1);     // pixel on 

  

void loop()


 dataadc = analogRead(A0);

 int32_t frequency = 0; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, 0);
 //bool success = SetPinFrequencySafe(pwmpin, frek);
 
  pwmWrite(pwmpin, 0);
 
 button = digitalRead(14);
 
  if(button == 0){
  delay(200);
  frek = frek + 10;
       
  int32_t frequency = frek; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
 //bool success = SetPinFrequencySafe(pwmpin, frek); 
  pwmWrite(pwmpin, duty);
  delay(20);
 
  }
 
 
    u8g.firstPage();  
    do
    { 
    draw(); 
    }
    while( u8g.nextPage() ); 
    delay(200); 

}    





g. Program Versi baru

// program ini menggunakan tombol sebagai SAVE atau menyimpan data
// jadi saat pasien mendengarkan bunyi maka akan menekan tombol
// jika tidak terdengar maka jangan tekan tombol
// pada tampilan akhir akan muncul frekuensi yang didengar pada GLCD
// dan tidak akan menampilkan frekuensi yang tidak didengar pada GLCD
// frekuensi bisa dirubah sesuai selera

#include "U8glib.h" 
#include <PWM.h>

//Utilize a linha abaixo para utilizar a comunicacao serial
//(Enable, RW, RS, RESET)
//U8GLIB_ST7920_128X64_1X u8g(2, 3, 4 ,5);

//Utilize a linha abaixo para utilizar a comunicacao paralela (8 bits)
//(d0, d1, d2, d3, d4, d5, d6, d7, en, di, rw, reset)
U8GLIB_ST7920_128X64_1X u8g(6, 7, 8, 9, 10, 11, 12, 13, 2, 4, 3, 5);

int go = 1;
int display = 1; 
char tmp_string[8];
char tmp_string2[8];
int dataadc;   
int pwmpin = 46;        
int duty = 125;         // nilai duty cycle
int button;
int frek = 150;
int i;

int ax = 0;
int bx = 0;
int cx = 0;
int dx = 0;
int ex = 0;
int fx = 0;
int gx = 0;
int hx = 0;
int ix = 0;
int jx = 0;


void draw() 
{
  //konversi ke string
  //dtostrf(dataadc, 4, 2, tmp_string);
  itoa(dataadc,tmp_string,8);
  itoa(frek,tmp_string2,8);
 
  //pilih font
  u8g.setFont(u8g_font_u8glib_4);
  //u8g.setFont(u8g_font_profont11);
  //u8g.setFont(u8g_font_unifont);
 
  //x,y
  
//  u8g.drawStr( 27, 4, tmp_string2);
//  u8g.drawStr( 0, 10, "DB= ");  
//  u8g.drawStr( 27, 10, tmp_string);
if(ax == 1){
  u8g.drawStr( 0, 4,  "FREK= 250");
}
if(bx == 1){
  u8g.drawStr( 0, 10, "FREK= 500");
}
if(cx == 1){
  u8g.drawStr( 0, 16, "FREK= 1000");
}
if(dx == 1){
  u8g.drawStr( 0, 22, "FREK= 2000");
}
if(ex == 1){
  u8g.drawStr( 0, 28, "FREK= 3000");
}
if(fx == 1){
  u8g.drawStr( 0, 34, "FREK= 4000");
}
if(gx == 1){
  u8g.drawStr( 0, 40, "FREK= 5000");
}
if(hx == 1){
  u8g.drawStr( 0, 46, "FREK= 6000");
}
if(ix == 1){
  u8g.drawStr( 0, 52, "FREK= 7000");
}
if(jx == 1){
  u8g.drawStr( 0, 58, "FREK= 8000");

  delay(1000);
 
if(go == 1){  
step1();
 
step2();

step3();

step4();

step5();

step6();

step7();
 
step8();

step9();

step10();
}


  
  
void setup()

 
  pinMode(14,INPUT);
  digitalWrite(14,HIGH);
   
  // assign default color value 
  if ( u8g.getMode() == U8G_MODE_R3G3B2 )  
   u8g.setColorIndex(255);   // white 
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) 
   u8g.setColorIndex(1);     // max intensity 
  else if ( u8g.getMode() == U8G_MODE_BW ) 
   u8g.setColorIndex(1);     // pixel on 

  
  
  
  
void loop()



    u8g.firstPage();  
    do
    { 
    draw(); 
    }
    while( u8g.nextPage() ); 
    delay(200); 


}    


void step1(){

  int32_t frequency = 250; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  ax = 1;
  }
  delay(30); 
  }
 
  return;
}


void step2(){

  int32_t frequency = 500; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  bx = 1;
  }
  delay(30); 
  }
 
 
  return; 
}


void step3(){
  int32_t frequency = 1000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
  
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
  //bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  cx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step4(){
  int32_t frequency = 2000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  dx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step5(){
  int32_t frequency = 3000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  ex = 1;
  }
  delay(30); 
  }
 
  return; 
}


void step6(){
  int32_t frequency = 4000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  fx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step7(){
  int32_t frequency = 5000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  gx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step8(){
  int32_t frequency = 6000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  hx = 1;
  }
  delay(30); 
  }
 
  return; 
}


void step9(){
  int32_t frequency = 7000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  ix = 1;
  }
  delay(30); 
  }
 
  return; 
}

void step10(){
  int32_t frequency = 8000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  jx = 1;
  }
  delay(30); 
  }
 
  go = 2;

  return; 
}





h. VIDEO HASILNYA
















Membuat Simulasi Traffic Light Mikrokontroller Tampilan 7-segment Display

Membuat Simulasi Traffic Light Mikrokontroller Tampilan 7-segment Display


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk simulasi traffic light dengan penampil 7-segment, jadi pada alat ini terdapat 9 buah 7-segment yang akan menampilkan tiap-tiap angka secara count-down atau hitungan mundur. tidak hanya itu alat ini dilengkapi 3 buah led untuk traffic light yaitu merah, kuning dan hijau. kemudian 2 led lagi untuk penyebrang jalan yaitu merah dan hijau. dua angka diatas diperuntukkan bagi kendaraan, kemudian satu digit dibawah diperuntukkan bagi pejalan kaki yang ingin menyebrang. alat ini menggunakan mikrokontroller ATMega16 dan IC decoder 74138 sebanyak 2 buah. untuk skema dan program berikut adalah penjelasannya.




a. Minimum System ATMega16





b. 7-segment dan LED 







c. IC 74138 Decoder






d. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000

Ddra.0 = 1
Ddra.1 = 1
Ddra.2 = 1
Ddra.3 = 1
Ddra.4 = 1

Ddrb.0 = 1
Ddrb.1 = 1
Ddrb.2 = 1
Ddrb.3 = 1
Ddrb.4 = 1

Ddrb.5 = 1
Ddrb.6 = 1
Ddrb.7 = 1



Ddrd.0 = 1
Ddrd.1 = 1
Ddrd.2 = 1
Ddrd.3 = 1
Ddrd.4 = 1

Ddrd.5 = 1
Ddrd.6 = 1
Ddrd.7 = 1



Ddrc.0 = 1
Ddrc.1 = 1
Ddrc.2 = 1
Ddrc.3 = 1
Ddrc.4 = 1
Ddrc.5 = 1
Ddrc.6 = 1
Ddrc.7 = 1

Dim Datas As Byte
Dim Count As Integer

Dim X1 As Integer
Dim X2 As Integer
Dim X3 As Integer
X1 = 0
X2 = 3
X3 = 1


Dim Y1 As Integer
Dim Y2 As Integer
Dim Y3 As Integer
Y1 = 0
Y2 = 7
Y3 = 5


Dim Z1 As Integer
Dim Z2 As Integer
Dim Z3 As Integer
Z1 = 1
Z2 = 1
Z3 = 9


Dim X As Integer
Dim Y As Integer
Dim Z As Integer
X = 1
Y = 1
Z = 1

Dim Kondisi As Integer
Kondisi = 1

Porta = &B00111111
Portb = &B00111111
Portd = &B00111111

Portc = &B11111111
Waitms 2



Do


Do


If X1 = 1 And X2 >= 0 Then
Porta = &B00001110                                          'merah
Elseif X1 = 0 And X2 > 3 Then
Porta = &B00001110
Elseif X1 = 0 And X2 <= 3 Then
Porta = &B00011001                                          'hijau
End If

If X1 = 0 And X2 = 0 Then
Porta.4 = 1
Porta.3 = 0
Porta.2 = 1
End If

If Y1 = 1 And Y2 >= 0 Then
Portb = &B00001110                                          'merah
Elseif Y1 = 0 And Y2 > 3 Then
Portb = &B00001110
Elseif Y1 = 0 And Y2 <= 3 Then
Portb = &B00010011                                          'hijau
End If

If Y1 = 0 And Y2 = 0 Then
Portb.0 = 1
Portb.1 = 0
Portb.2 = 1
End If


If Z1 = 1 And Z2 >= 0 Then
Portd = &B00001110                                          'merah
Elseif Z1 = 0 And Z2 > 3 Then
Portd = &B00001110
Elseif Z1 = 0 And Z2 <= 3 Then
Portd = &B00010011                                          'hijau
End If

If Z1 = 0 And Z2 = 0 Then
Portd.0 = 1
Portd.1 = 0
Portd.2 = 1
End If


Datas = Lookup(x1 , Data7seg)
Portc = Datas

Portd.5 = 0
Portd.6 = 0
Portd.7 = 0
Waitms 2

Datas = Lookup(x2 , Data7seg)
Portc = Datas

Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitms 2

Datas = Lookup(x3 , Data7seg)
Portc = Datas

Portd.5 = 0
Portd.6 = 1
Portd.7 = 0
Waitms 2

Datas = Lookup(y1 , Data7seg)
Portc = Datas

Portd.5 = 1
Portd.6 = 1
Portd.7 = 0
Waitms 2

Datas = Lookup(y2 , Data7seg)
Portc = Datas

Portd.5 = 0
Portd.6 = 0
Portd.7 = 1
Waitms 2

Datas = Lookup(y3 , Data7seg)
Portc = Datas

Portd.5 = 1
Portd.6 = 0
Portd.7 = 1
Waitms 2


Datas = Lookup(z1 , Data7seg)
Portc = Datas

Portb.5 = 0
Portb.6 = 0
Portb.7 = 0
Waitms 2


Datas = Lookup(z2 , Data7seg)
Portc = Datas

Portb.5 = 1
Portb.6 = 0
Portb.7 = 0
Waitms 2

Datas = Lookup(z3 , Data7seg)
Portc = Datas

Portb.5 = 0
Portb.6 = 1
Portb.7 = 0
Waitms 2


Incr Count


Loop Until Count > 100



Decr X2
Decr Y2
Decr Z2

Decr X3
Decr Y3
Decr Z3


If X3 < 0 Then
X3 = 0
End If

If Y3 < 0 Then
Y3 = 0
End If

If Z3 < 0 Then
Z3 = 0
End If


If X1 = 1 And X2 >= 0 Then
Porta = &B00001110                                          'merah
Elseif X1 = 0 And X2 > 3 Then
Porta = &B00001110
Elseif X1 = 0 And X2 <= 3 Then
Porta = &B00011001                                          'hijau
End If


If Y1 = 1 And Y2 >= 0 Then
Portb = &B00001110                                          'merah
Elseif Y1 = 0 And Y2 > 3 Then
Portb = &B00001110
Elseif Y1 = 0 And Y2 <= 3 Then
Portb = &B00010011                                          'hijau
End If


If Z1 = 1 And Z2 >= 0 Then
Portd = &B00001110                                          'merah
Elseif Z1 = 0 And Z2 > 3 Then
Portd = &B00001110
Elseif Z1 = 0 And Z2 <= 3 Then
Portd = &B00010011                                          'hijau
End If




'==================================================

If X2 < 0 And X = 1 And X1 <> 0 Then
X1 = 0
X2 = 9
X = 2
End If

If X2 < 0 And X = 1 And X1 = 0 Then
X1 = 1
X2 = 1
X3 = 9
X = 1
End If

If X2 < 0 And X = 2 Then
X1 = 1
X2 = 1
X3 = 9
X = 1
End If


'====================================================

If Y2 < 0 And Y = 1 And Y1 <> 0 Then
Y1 = 0
Y2 = 9
Y = 2
End If


If Y2 < 0 And Y = 1 And Y1 = 0 Then
Y1 = 1
Y2 = 1
Y3 = 9
Y = 1
End If


If Y2 < 0 And Y = 2 Then
Y1 = 1
Y2 = 1
Y3 = 5
Y = 1
End If


'====================================================

If Z2 < 0 And Z = 1 And Z <> 0 Then
Z1 = 0
Z2 = 9
Z = 2
End If


If Z2 < 0 And Z = 1 And Z1 = 0 Then
Z1 = 1
Z2 = 1
Z3 = 9
Z = 1
End If


If Z2 < 0 And Z = 2 Then
Z1 = 1
Z2 = 1
Z3 = 9
Z = 1
End If


Count = 0

Loop


Data7seg:
Data &B11000000                                             '0
Data &B11111001                                             '1
Data &B10100100                                             '2
Data &B10110000                                             '3
Data &B10011001                                             '4
Data &B10010010                                             '5
Data &B10000010                                             '6
Data &B11111000                                             '7
Data &B10000000                                             '8
Data &B10010000                                             '9






e. VIDEO HASILNYA