Monday, September 30, 2013

PERIPERAL MASUKAN DAN KELUARAN DIGITAL

          

  1.  Pemrograman Digital Output Menggunakan Library Arduino

          Pada kesempatan kali ini akan membuat program yang berfungsi untuk mengontrol 6 buah lampu     LED. 3 buah lampu LED akan dinyalakan dan 3 buah sisanya akan dimatikan melalui program. Program yang dibuat akan menggunakan fungsi yang disediakan oleh Arduino IDE.


Gambar rangkaian schematic


Contoh sintaks program yang dapat digunakan seperti di bawah ini pada Arduino IDE


void setup() { pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT; pinMode(11, 1); pinMode(12, 1); pinMode(13, 1);
}

void loop() { digitalWrite(8,HIGH; digitalWrite(9,HIGH; digitalWrite(10, 1); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13, 0);
}

setelah menuliskan sintaks diatas pada program Arduino Uno maka akan didapat output keluaran seperti berikut :

Pin
Kondisi LED
8
Hidup
9
Hidup
10
Hidup
11
Mati
12
Mati
13
Mati

Penjelasan yang didapat dari program sintaks diatas yaitu :
          PinMode (8,OUTPUT);
          fungsi ini bertujuan untuk menginisialkan bahwa pin 8, 9, dan 10 adalah output
          PinMode (11,1);
          sama halnya dengan diatas 1 berarti output dan 0 berarti input pada PinMode.

     2.     Pemrograman Digital Output Menggunakan Konfigurasi 
        Register
          Sama halnya dengan pemograman digital output menggunakan library Arduino,
   Gantilah sintaks program pada Percobaan no.1 dengan sintaks program berikut
   ini, kemudian lakukan kompilasi dan upload program ke minimum sistem Arduino Uno.

void setup() { DDRB=0x3F;
}

void loop() { PORTB=0x07;
}


Berikut hasil dari compile program diatas :


Pin
Kondisi LED
8
Hidup
9
Hidup
10
Hidup
11
Mati
12
Mati
13
Mati


Perbedaan sintaks program pertama dengan yang kedua :

·      pada fungsi Arduino kita harus menginisialisasikan masing-masing pin dengan kondisi High atau Low sedangkan pada Fungsi register kita menggunakan system angka heksadesimal.
·        pengguanaan Register lebih singkat dari pada fungsi arduino.
   dengan aplikasi penggunakan program diatas yaitu pada lampu merah dan seven segment.

3.     Penggunaan Fungsi Delay
        Pada percobaan kali ini akan dipraktekkan penggunaan fungsi delay pada program. Program yang akan dibuat bertujuan untuk membuat buzzer menyala dan mati secara bergantian dengan sela waktu tertentu. Konfigurasi nyala dan mati buzzer dengan sela waktu tertentu ini akan membuat suara seperti alarm ataupun sirine.











                                                    Gambar rangkaian schematic

Berikut sintaks program dari rangkaian diatas :
void setup() { pinMode(12, OUTPUT);
}

void loop() { digitalWrite(12, HIGH); delay(1000); digitalWrite(12, LOW); delay(1000);

}

Fungsi dari contoh program.
                        ·         Pin Mode (12, Output) adalah untuk mengkonfigurasi pin 12 sebagai output
·        Pada void loop , fungsi digitalWrite(12, HIGH) adalah mengeset pin 12 sebagai
keluaran bernilai HIGH (menyala pada buzzer) delay(1000) adalah waktu pada
buzzer pada kondisi high selama 1 detik
·         Fungsi digitalWrite(12, LOW)  adalah mengeset pin 12 sebagai keluaran bernilai
 LOW (Mati) delay (1000) adalah waktu pada buzzer pada kondisi low
selama 1 detik.


          4.     Pemrograman Digital Input Menggunakan Fungsi Arduino
                Pada  percobaan  kali  ini  akan  dipraktekkan  pemrograman  untuk  mengakses
                 masukan dalam bentuk digital. Program bertujuan untuk menyalakan buzzer ketika
                 tombol ditekan. Untuk melakukan pengkaksesan terhadap mas ukan digital akan
                 digunakan fungsi Ardu ino.
                                                       Gambar rangkaian schematic

         Berikut contoh sintaks program :
void setup() { pinMode(A0, INPUT); digitalWrite(A0, HIGH); pinMode(12, OUTPUT);

}

void loop() { if(digitalRead(A0)==LOW) {

digitalWrite(12, HIGH);
}
else{
digitalWrite(12, LOW);

}
}

Penjelasan dari sintaks program diatas;
·         Fungsi PinMode(A0, INPUT) dalam void setup() untuk mengkonfigurasi AO sebagai INPUT
·         DigitalWrite(A0, HIGH) untuk mengeset pin AO dalam keadaan High ketika tombol tidak di tekan , krna AO berfungsi sebagai switch
·         PinMode(12, OUTPUT) untuk mengkonfigurasi pin 12 sebagi output
·         pada Void loop () fungsi if(digitalRead(A0)==LOW) .maksdnya adalah  pada saat switch ditekan maka akan memenuhi syarat “digitalWrite(12,HIGH)” pin 12 terpenuhi (bernilai HIGH) buzzer akan menyala dan apabila pada saat tidak ditekan maka kondisi digitalWite(12, LOW); buzzer akan tidak berbunyi (pada kondisi LOW).

5.     Pemrograman Digital Input Menggunakan Konfigurasi Register
        Pada percobaan kali ini akan dipraktekkan pemrograman untuk mengakses
   masukan dalam bentuk digital sama seperti Percobaan. Pada percobaan kali ini
   pengkaksesan terhadap masukan digital akan menggunakan konfigurasi register.

Berikut contoh sintaks programdigital input menggunakan konfigurasi register :
void setup() { DDRC = 0x00; PORTC = 0x01; DDRB = 0x10;

}

void loop() { if(bit_is_clear(PINC,0)) {

PORTB = 0x10;
}
else {

PORTB = 0x00;
}
}

Penjelasan dari program diatas :

·   Fungsi dari DDRC=0x00 adalah sebagai  inputan data direct register pada port C dari arduino ,0x yaitu pin pada port c dijadikan input ,00 yaitu jika di konversikan ke biner maka didapat bahwa semua pin A0 –A5 pada port c bernilai low .
·   Fungsi dari portc=0x01 adalah jika 01 di konversikan ke bilangan binner yang dibaca dari kanan maka didapat bahwa pin A0 bernilai 1/high pada port c.
·      Fungsi dari ddrb=0x10 adalah sebagai keluaran data direct register pada port b dari arduino,0x yaitu pin pada port c dijadikan input,10 yaitu jika di konversikan ke bilangan biner yang dibaca dari kanan maka A5 adalah bernilai 1/high.
·      Fungsi dari if(bit_is_clear(pinc,0)) adalah pada saat kondisi dimana Pinc yaitu A0 bernilai 0 ,maka pada portb yaitu 10 yang diubah ke biner di hitung dari kanan yaitu 10000 dan pin 12 bernilai 1/menyala apabila switch ditekan maka buzzer akan berbunyi.
·     Fungsi else(portb=0x00) adalah pada saat kondisi selain kondisi pertama saat switch tidak ditekan maka buzzer mati karena A0 bernilai high. 


TERIMA KASIH
   

No comments:

Post a Comment