Pada tutorial arduino kali ini kita akan belajar tentang cara kerja pin arduino pada mode input, input pullup dan output. Pada tutorial arduino ini kita menggunakan Arduino Uno, 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);
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
Penjelasan program :
Jika masih ada yang kurang jelas silahkan tanyakan pada kolom komentar ya 😉
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
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 Spaceship Interface
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 :
- Pada baris no 1 sd 5 merupakan inisialisasi variabel global dan menentukan nomor pin yang akan digunakan.
- Variabel int tombol digunakan untuk menyimpan kondisi tombol.
- Pada void setup() terdapat sintaks pinMode() untuk mengatur mode pin yang akan digunakan sebagai input atau output.
- 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.
- Pada baris ke 17 if (tombol == 1) artinya, jika tombol ditekan maka jalankan program yang ada di dalamnya.
- Sintaks digitalWrite(pin_led_hijau, LOW) berarti memberi logika LOW (GND) pada pin tersebut dan membuat led hijau mati.
- Pada baris ke 26 else artinya, selain dari nilai kondisi diatas yaitu kondisi variabel tombol, jalankan program didalamya.
- Sintaks digitalWrite(pin_led_hijau, HIGH) berarti memberi logika HIGH(5V) pada pin tersebut dan membuat led hijau menyala.
#Kreatifitas
Buatlah program dengan mode INPUT_PULLUP dengan merubah rangkaian terlebih dahulu. Bagian rangkaian yang diubah adalah pada bagian tombol, dengan melepas resistor 10K dan pada kaki sebelah nya ubah 5V ke GND!
Lalu modifikasi sketch program spaceship interface dimana ketika tombol tidak ditekan LED hijau akan menyala-mati dengan interval 200mS!
Setelah itu dapatkan kesimpulan dari percobaan yang kamu lakukan!Jika masih ada yang kurang jelas silahkan tanyakan pada kolom komentar ya 😉
gan, kalo gini kasusnya gimana:
ReplyDeleteditekan pushbutton sekali (1) lampu menyala delay 1 detik
ditekan sekali lagi (2) lampu menyala delay 0.5 detik
ditekan sekali lagi (3) lampu berhenti menyala.
terus mengulang 1-2-3-1..
membuat code untuk kasus seperti ini gimana ya? terima kasih