Digital Input Output Arduino pada (LED dan Push Button)

Tutotial arduino kali ini kita mencoba akan mempelajari tentang cara kerja pin arduino pada mode input,input pullup dan output Pada tutorial arduino ini kita menggunakan Arduino Uno, seperti yang kita tau arduino uno memiliki sebanyak 14 pin digital input-output yaitu pada pin 0 sd 13.


Jadi setiap kita akan akan menggunakan pin digital arduino sebagai input maupun sebagai output, terlebih dahulu kita harus mengatur mode pin tersebut. Mode pin ini diatur pada void setup() dengan menggunakan sintaks pinMode(pin, mode). Berikut kita bahas setiap mode input output pada arduino.

Mode Input High Impedance
Sintaks : pinMode(pin, INPUT);
perhatikan Mode input high impedance ini merupakan mode bawaan atau default pin arduino. Pada mode ini seolah-olah terdapat resistor 100 Mega ohm dipasang seri terhadap pin. Ini berarti pada kondisi ini pin membutuh arus yang sedikit untuk merubah kondisi logika, mode ini baik digunakan untuk membaca sensor sentuh kapasitif atau membaca LED sebagai photodioda.

Mode Input Pullup
Sintaks : pinMode(pin, INPUT_PULLUP);
Pada mode ini terdapat internal resistor sebesar 20K pada chip atmega arduino yang diatur melalui program. Resistor pull-up ini diakses dengan mengatur pinMode() sebagai INPUT_PULLUP. Ini berarti berbanding terbalik dengan mode input high impedance, logika HIGH berarti kondisi off dan logika LOW berarti on.

Jadi saat menggunakan pin sebagai input pull-up, ujung lain dari perangkat komponen sensor atau sebagai contoh pada tombol harus terhubung dengan ground. Contoh digunakan tombol push button, jika tombol tidak ditekan atau kondisi terbuka maka arduino akan membaca kondisi HIGH, dan kondisi LOW saat tombol ditekan. Gambar berikut menunjukkan ilustrasi input pull-up.



Mode Output
Sintaks : pinMode(pin, OUTPUT);
Pada saat pin di set pada mode output, pin akan dalam keadaan low impedance. Ini artinya pin dapat memberikan keluaran arus yang cukup ke rangkaian lain. Pin atmega dapat menjadi source (menghasilkan arus positif) atau sink (menghasilkan arus negatif) sebesar 40 mA (milliamper) ke rangkaian lain.

Jika arus beban dari rangkaian lain melebihi arus pin atmega, berakibat bisa merusak pin, bahkan dapat merusak ic atmega tersebut. Maka dari itu untuk mengatasinya disarankan memasang resistor 470 ohm atau 1K ohm pada pin output ke rangkaian lain.

Reference arduino.cc/reference


Setelah kita bahas beberapa mode input dan output pada arduino, selanjutnya kita akan membuat sebuah program, yaitu membuat replika seperti spaceship interface atau panel kontrol pesawat luar angkasa dengan led dan tombol push button.

Komponen yang dibutuhkan
  • 1x Board Arduino
  • 1x Papan Breadboard
  • 1x LED Hijau
  • 2x LED Merah
  • 1x Pushbutton
  • 3x Resistor 330 ohm
  • 1x Resistor 10 K ohm
Rangkaian Spaceship Interface

Penjelasan rangkaian:
Mode input tombol yang digunakan pada rangkaian di atas adalah input high impedance, maka dari itu digunakan sebuah resistor pull-down pada tombol dan pada kaki lain tombol dihubungkan dengan 5V. 

Kenapa harus ada resistor 10k yang dihubungkan dengan ground. Karena jika tidak di pasang resistor, maka pembacaan pada pin digital tersebut akan floating atau mengambang, kondisi nya kadang akan berlogika high lalu berubah ke low begitu seterusnya dan saat tombol ditekan, program tidak akan berfungsi dengan benar.

Sketch Program ARDUINO IDE :


int tombol;
const int pin_led_hijau = 2;
const int pin_led_merah1 = 3;
const int pin_led_merah2 = 4;
const int pin_tombol = 5;
 
void setup() {
  pinMode(pin_led_hijau, OUTPUT);
  pinMode(pin_led_merah1, OUTPUT);
  pinMode(pin_led_merah2, OUTPUT);
  pinMode(pin_tombol, INPUT);
}
 
void loop() {
  tombol = digitalRead(pin_tombol);
 
  if (tombol == 1) {
    // Tombol di tekan
    digitalWrite(pin_led_hijau, LOW);
    digitalWrite(pin_led_merah1, LOW);
    digitalWrite(pin_led_merah2, HIGH);
    delay(250);
    digitalWrite(pin_led_merah1, HIGH);
    digitalWrite(pin_led_merah2, LOW);
    delay(250);
  } else {
    // Tombol tidak di tekan
    digitalWrite(pin_led_hijau, HIGH);
    digitalWrite(pin_led_merah1, LOW);
    digitalWrite(pin_led_merah2, LOW);
  }
}

Penjelasan program :
  1. Perhatikan pada baris no 1 sd 5 merupakan inisialisasi variabel global dan menentukan nomor pin yang akan digunakan.
  2. Variabel int tombol digunakan untuk menyimpan kondisi tombol.
  3. Pada void setup() terdapat sintaks pinMode() untuk mengatur mode pin yang akan digunakan sebagai input atau output.
  4. Fungsi void loop() merupakan perulangan yang dilakukan terus menerus, tombol = digitalRead(pin_tombol) berfungsi untuk membaca kondisi tombol yang dihubungkan dengan pin tersebut dan disimpan pada variabel tombol dengan nilai 0 untuk kondisi tidak ditekan 1 untuk kondisi ditekan.
  5. Pada baris ke 17 if (tombol == 1) artinya, jika tombol ditekan maka jalankan program yang ada di dalamnya.
  6. Sintaks digitalWrite(pin_led_hijau, LOW) berarti memberi logika LOW (GND) pada pin tersebut dan  membuat led hijau mati.
  7. Pada baris ke 26 else artinya, selain dari nilai kondisi diatas yaitu kondisi variabel tombol, jalankan program didalamya.
  8. Sintaks digitalWrite(pin_led_hijau, HIGH) berarti memberi logika HIGH(5V) pada pin tersebut dan  membuat led hijau menyala.

    0 Comments