Anda di halaman 1dari 7

MODUL 4

MASUKAN DAN KELUARAN DIGITAL

CAPAIAN PEMBELAJARAN

1. Praktikan dapat menyiapkan dan menggunakan masukan/keluaran digital.


2. Praktikan dapat mengkoneksikan peralatan masukan/keluaran digital

KEBUTUHAN ALAT/BAHAN/SOFTWARE

1. Board Arduino dan aksesorisnya


2. LED x 4
3. Resistor 100 Ohm x 4
4. Microswitch x 1

DASAR TEORI

Pin input/output digital pada Arduino sebanyak 14 pin yang diberi nomor 0 s/d
13 , yang masing-masingnya harus dikonfigurasi apakah menjadi input atau
output. Input/Output 0 dan 1 juga digunakan untuk komunikasi serial pin 0=RX
dan pin 1=TX. input/output 13 juga dihubungkan dengan LED pada board
Arduino. Pengkonfigurasian dilakukan pada saat awal program dijalankan dan
umumnya tidak berubah selama dijalankan. Letak pin input dan output
diperlihatkan pada Gambar 1.
Gambar 1. Nomor Pin Digital

Fungsi yang berhubungan dengan input/output digital adalah:

1. pinMode(noPin, mode)
noPin = nomor Pin Digital (0 s/d 13) yang akan diatur modenya.

mode = INPUT, INPUT_PULLUP, atau OUTPUT

2. digitalWrite(noPin, logika)
noPin= nomor Pin Digital (0 s/d 13) yang akan ditulis (output).

logika= HIGH, LOW

3. digitalRead(noPin)
noPin= nomor Pin Digital (0 s/d 13) yang akan dibaca.

Menggunakan Masukan/Keluaran Digital Arduino


Masukan/Keluaran digital adalah masukan/keluaran yang hanya mempunyai dua
nilai atau kondisi, yaitu HIGH atau LOW . Arduino menggunakan tegangan 0 Volt
untuk menyatakan LOW dan tegangan +5 Volt untuk menyatakan HIGH.

Langkah menggunakan masukan/keluaran digital


Langkah 1, inisialisasi pin digital agar menjadi masukan/keluaran dengan
menggunakan fungsi pinMode. Inisialisasi dilakukan pada fungsi setup().

Sintaks: pinMode(noPin, mode)

mode: INPUT, INPUT_PULLUP, dan OUTPUT

Contoh mode OUTPUT:


pinMode(5,OUTPUT); //pin 5 dijadikan output
pinMode(0,OUTPUT); //pin 0 dijadikan output.
pinMode(13,OUTPUT); // pin 13 dijadikan output

Contoh mode INPUT:


pinMode(5,INPUT); //pin 5 dijadikan masukan
pinMode(4,INPUT); //pin 4 dijadikan masukan.
Contoh mode INPUT_PULLUP:
pinMode(5,INPUT_PULLUP); //pin 5 dijadikan masukan
pinMode(4,INPUT_PULLUP);//pin 4 dijadikan masukan.

Perbedaan antara mode INPUT dan INPUT_PULLUP terletak pada resistor


PULLUP internal, yaitu resistor (di dalam mikrokontroller) yang dikoneksikan ke
tegangan +VCC. Pada mode INPUT pin terputus dengan resistor Pullup internal,
sedangkan pada mode INPUT_PULLUP terkoneksi dengan resistor Pullup.
Apa pengaruh dari mode INPUT_PULLUP? Pengaruhnya peralatan masukan
dinyatakan aktif (On) jika berlogika LOW dan tidak aktif (Off) jika berlogika HIGH.

Langkah 2,

Jika sebagai keluaran maka menggunakan fungsi digitalWrite( )

Sintaks: digitalWrite(noPin, logika)

Contoh:

digitalWrite(5,HIGH); // pin 5 berlogika 1


digitalWrite(3,LOW); // pin 3 berlogika 0

Nomor Pin juga dapat dideklarasikan sebagai variabel atau konstanta. Deklarasi
konstanta lebih disarankan karena tidak membutuhkan memori RAM.

Contoh:

int LED1=13; //deklarasi variabel


const int LED1=13; //deklarasi konstanta

Jika sebagai masukan maka membaca logika pin menggunakan fungsi


digitalRead(noPin).
Sintakas: digitalRead(noPin).
digitalRead(noPin) // nilai baliknya HIGH atau LOW
Contoh:
boolean Saklar1, Saklar2; //variabel boolean
Saklar1=digitalRead(4); //baca logika pin 5
Saklar2=digitalRead(5);//baca logika pin 5
PRAKTIK

1. Mengeluarkan data beberapa pin dengan data sama


 Buat rangkaian di breadboard seperti pada gambar berikut ini.

 Tulis listing program dan upload lsiting berikut ini


Tekniik Pertama:
int LED0=2; //deklarasi pin seperti variabel
int LED1=3;
int LED2=4;
int LED3=5;

void setup()
{
pinMode(LED0,OUTPUT); //pengaturan pin menjadi keluaran
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
}

void loop()
{
digitalWrite(LED0,HIGH);//mengeluarkan data 1 ke keluaran
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
delay(1000);
digitalWrite(LED0,LOW);
digitalWrite(LED1,LOW);//mengeluarkan data 1 ke keluaran
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);

delay(1000);
}
Teknik Kedua:
int LED[4]={2,3,4,5}; //deklarasi pin dengan larik
void setup()
{
int i;
for(i=0;i<4;i++)
{
pinMode(LED[i],OUTPUT); //pengaturan pin menjadi keluaran
}

void loop()
{
int i;
for(i=0;i<4;i++)
{
digitalWrite(LED[i],HIGH);//mengeluarkan data 1 ke
keluaran
}
delay(1000);
for(i=0;i<4;i++)
{
digitalWrite(LED[i],LOW);//mengeluarkan data 1 ke keluaran
}
delay(1000);
}

2. Mengeluarkan data pada beberapa pin dengan data berbeda


Masih menggunakan rangkaian yang sama, tulis listing program berikut
ini.

unsigned char data4bit=0b00000001; //


int pinDigArdu[4]={2,3,4,5}; //pinDigArdu[0] = bit ke 0(LSB)
unsigned char bitke; //dapat juga dengan tipe byte
void setup()
{
int i;
for(i=0;i<4;i++)
{
pinMode(pinDigArdu[i],OUTPUT); //konfigurasi pin menjadi
output
}
}
void loop()
{
tampil(data4bit);
delay(1000);
data4bit<<= 1;
if (data4bit==0b00010000){
data4bit=0b00000001;
}
}
void tampil(unsigned char data)
{
for (bitke=0;bitke<4; bitke++)
{
if(bitRead(data,bitke)==0)
{
digitalWrite(pinDigArdu[bitke],LOW);
}
else
{
digitalWrite(pinDigArdu[bitke],HIGH);
}
}
}

3. Membaca pin digital untuk beberpa fungsi


int S1=8;
int pinOut[4]={2,3,4,5};//D2 s/d D5
int counter=0;
void setup() {
Serial.begin(9600); //untuk debugging
pinMode(S1,INPUT_PULLUP);
for(int i=0;i<4;i++) {
pinMode(pinOut[i],OUTPUT);
}
Serial.println("Cek Serial");//untuk debugging
}

void loop() {
if(digitalRead(S1)==LOW) {
Serial.println("setelah ditekan");//untuk debugging
while(digitalRead(S1)==LOW);
counter++;
if(counter==4){
counter=0;
}
}
Serial.println(counter); //untuk debugging
tampil(counter);
}
void tampil(unsigned char data)
{
for (int bitke=0;bitke<4; bitke++)
{
if(bitRead(data,bitke)==0)
{
digitalWrite(pinOut[bitke],LOW);
}
else
{
digitalWrite(pinOut[bitke],HIGH);
}
}
}
LATIHAN

1. Kembangkan praktik no. 3 untuk memilih variasi nyala LED:


- kedip-kedip semua
- geser ke kiri
-geser ke kanan

TUGAS

1. Buat diagram alir hasil latihan di naskah laporan.

REFERENSI

Anda mungkin juga menyukai