Menggunakan Digital Input/Output Arduino

Dalam Arduino, Digital Input dan juga Digital Output menggunakan asas voltan 5V dan juga Output Digital Arduino mempunyai kapasiti Current 50mA maksimum. Oleh itu, pastikan mana-mana komponen yang akan digunakan sebagai Output, seperti Relay, LED, dan Motor mempunyai rating 5V dan juga menggunakan 50mA current maksimum.

Jika komponen Output anda menggunakan Voltan melebihi 5V dan juga menggunakan current melebihi 50mA, pastikan anda menggunakan Module-Perantaraan seperti contoh, mengawal Motor, gunakan module Motor Driver yang akan amplify signal digital dari Output Arduino kepada Motor.

PENGENALAN

Setiap sambungan Input ataupun Output Digital PIN perlu di ‘Declare’ pada pin yang mahu digunakan.

Untuk beginners, adalah mudah untuk memahami, declaration perlu dibuat dalam Void Setup().

Juga declaration boleh dibuat dalam Void Loop() ataupun mana-mana special function tambahan yang anda buat. Namun, diperingkat awal, kami syorkan Pin-Declaration dibuat dalam Void Setup() sahaja.

PIN-PIN DIGITAL ARDUINO

Dalam Arduino UNO juga NANO, pin yang boleh digunakan untuk signal I/O digital adalah dari pin,

0 sehingga 13. Bermakna ada jumlah 14 pin digital boleh digunakan.

digital-pins

DELARE PIN DALAM VOID SETUP

Cara declare pin-pin digital adalah dengan menulis syntax seperti berikut dalam Void Setup():

void setup() {
 pinMode(2, OUTPUT); //declare pin 2 sebagai Output
 pinMode(3, INPUT); //declare pin 3 sebagai Input
 pinMode(4, INPUT_PULLUP); //declare pin 4 sebagai Input
}                          //yang menggunakan Built-in 
                           //pull-up resistor

Hanya perlu nyatakan nombor pin dalam column pertama dan fungsi Input/Output dalam column ke-dua.

(pastikan M adalah huruf besar, dan yang lain adalah huruf kecil, dan OUTPUT/INPUT adalah huruf besar)

OUTPUT & DIGITAL OUTPUT

Pin yang di-declare sebagai OUTPUT, boleh diberi arahan-arahan Output dalam Void Setup mahupun Void Loop.

(Void Setup hanya berjalan sekali sahaja, manakala Void Loop berulang-ulang, tempat untuk meletakkan coding utama)

Arahan sytanx untuk Output adalah, digitalWrite():

(pastikan W adalah huruf besar, dan yang lain adalah huruf kecil)

void loop() {
 digitalWrite([nombor_pin], [jenis_output);
}

Antara jenis-jenis arahan Output yang boleh diberikan adalah seperti berikut:

  • HIGH – untuk mengeluarkan 5V output (On)
    void loop() {
     digitalWrite(2, HIGH); //5V output pada pin 2 (ON)
    }
    
  • LOW – untuk mengeluarkan 0V output (Off)
    void loop() {
     digitalWrite(3, LOW); //0V output pada pin 3 (OFF)
    }
    
  • Value range dari 0~255 – PWM Output
    void loop() {
     digitalWrite(2, 255); //100% duty cycle output pada pin 2 
                           //255 adalah maksimum value PWM
                           //bersamaan hampir 5V output
     digitalWrite(4, 127); //50% duty cycle output pada pin 4 
                           //255 bahagi 2 bersamaan 127
                           //bersamaan hampir 2.5V output
    }
    

    (akan diterangkan lebih detail kaedahnya di bawah)

DIGITAL INPUT

INPUT

PENTING! : Perkara penting bila menggunakan INPUT, anda harus menyambungkan Pull-Down Resistor bernilai 10k ohm yang disambungkan pada Ground, seperti rajah berikut:

pull-down-resistor.png
arduino_leonardo_pushbutton2_bb.png

Pull-Down resistor adalah bertujuan untuk membuatkan Pin 2 tersebut berada pada Status LOW apabila butang tidak ditekan. Pin 2 akan menjadi HIGH apabila butang ditekan.

Pin yang di-declare sebagai INPUT, boleh diminta untuk berikan status input pada pin tersebut, samada HIGH atau LOW, dengan menggunakan syntax digitaRead().

(pastikan R adalah huruf besar, dan yang lain adalah huruf kecil)

void loop() {
 digitalRead([nombor_pin]); //membaca status input pin 2
}

Kebiasaannya, function digitalRead() digunakan bersama pembaca kondisi seperti IF statement ataupun WHILE loop.

void loop() {
 if (digitalRead(2) == HIGH){//kondisi JIKA pin 2 ON atau HIGH
 //nyatakan jenis output yang dimahukan jika pin 2 ON
 //contoh seperti berikut
 digitalWrite(3, HIGH); //mahukan LED pada pin 3 menyala
 }
}

ataupun,

void loop() {
 while (digitalRead(2) == HIGH){//selagi pin 2 masih ON
 //lakukan perkara-perkara berikut dalam while loop ini
 //contoh seperti berikut
 digitalWrite(3, HIGH);
 delay(1000);
 digitalWrite(3, LOW);
 delay(1000);
 }
}

Dalam While() loop di atas, selagi Pin 2 masih ON, LED pada Pin 3 akan berkelip-kelip.

Ataupun contoh lain,

void loop() {
 while (digitalRead(2) == LOW){//selagi pin 2 TIDAK ON
 //lakukan perkara-perkara berikut dalam while loop ini
 //contoh seperti berikut
 digitalWrite(3, HIGH);
 delay(1000);
 digitalWrite(3, LOW);
 delay(1000);
 }
}

Loop ini pula bermaksud, LED akan sentiasa berkelip selagi butang pada Pin 2 tidak ditekan. Ini bermakna, butang pada Pin 2 akan meng-OFF-kan kitaran while loop tersebut.

INPUT_PULLUP

Fungsi INPUT_PULLUP adalah sama seperti fungsi INPUT. Bezanya, kita menggunakan Pull-Up resistor yang terdapat dalam MCU Arduino. Dengan kaedah ini, sambungan wiring adalah lebih ringkas dan TIDAK PERLUKAN sambungan resistor Pull-Down tambahan seperti dalam INPUT.

inputpullupbutton

INPUT_PULLUP adalah menjadi kegemaran kerana kurang penggunaan komponen dan pendawaian.

PWM OUTPUT

Fungsi PWM, akan mengeluarkan Output PWM pada pin-pin tertentu sahaja pada Arduino. Pada Arduino UNO, hanya pin 3, 5, 6, 9, 10 dan 11 sahaja boleh disetup sebagai PWM Output.

PWM dengan nama penuhnya Pulse-Width-Modulation adalah signal HIGH (5V) yang diberikan Pulse atau Nadi pada frequency hampir 500Hz pada output keluarannya.

pwm-outputs.jpg

PWM signal ini sesuai untuk mengawal dan memalapkan LED juga sesuai untuk DC motor yang sangat kecil hampir 0.1W power consumption. Terdapat juga module-module kawalan motor yang dikawal dengan menggunakan PWM Output ini.

PERHATIAN! : analogWrite() atau PWM Output di sini adalah amat berbeza dengan output PWM apabila menggunakan Servo.h Library untuk menggerakkan Servo Motor. Penggunaan analogWrite() boleh merosakkan Servo anda jika ia digunakan.

Kaedah mengeluarkan Output PWM adalah dengan menulis syntax analogWrite() seperti berikut:

void loop() {
analogWrite([nombor_pin_pwm],[nilai_PWM]);
//nilai PWM adalah dari 0 hingga 255 maksimum
}

Menggunakan Pin Analog A0~A5 Untuk Digital Input/Output

Jarang anda dengar, boleh menggunakan Pin Analog, A0 hingga A5 untuk digital Output. Kaedahnya, hanyalah ringkas dengan memanggil Pin nya dengan nama mereka seperti contoh berikut:

void setup() {
 pinMode(A1, OUTPUT);
 pinMode(A5, INPUT_PULLUP);
}

void loop() {
 digitalWrite(A1, HIGH);
 digitalRead(A5);
}

Mudah kan ?

Jika anda dapati artikel-artikel kami membantu project anda, sharekan artikel-artikel kami pada rakan-rakan anda, agar kami lebih bermotivasi untuk menulis lebih banyak artikel lagi.

Juga, anda boleh ke Online-Webstore kami di URL berikut untuk mendapatkan keperluan-keperluan projek Arduino dan DIY anda:

Published by Mat Gyver

Peneraju Komuniti Digital Maker Malaysia. Pembangunan Komuniti diUtamakan.

4 thoughts on “Menggunakan Digital Input/Output Arduino

  1. Klu input A1-A5 boleh diubah menjadi OUTPUT seperti dinyatakan dlm artikal. Apakah arduino uno boleh mengawal sehingga 15 biji relay?

    Like

    1. Iya betul tuan. Tepat sekali. Arduino UNO boleh mengawal 15 relay. Namun, relay2 tersebut tidak boleh dikawal direct menggunakan 5V Arduino.
      Kebanyakan relay menggunakan hampir 150mA current. Kalau 15 biji dah 2.25A!

      Arduino on board regulator boleh support smpi 500mA saja. Setiap digital pin mampu keluarkan 50mA saja.

      Jadi, gunakan module2 relay yang kita boleh beri kuasa dari input power berasingan dan bukan direct dari pin 5V arduino.

      Like

  2. Assalamualaikum tuan, saya ingin bertanya jika menggunakan LilyPad Arduino, adakah perlu menggunakan resistor pada bahagian input?
    Terima kasih..

    Like

    1. Biasanya Resistor diperlukan jika menggunakan susi atau butang.
      Tapi, ada satu fungsi dalam Arduino IDE, INPUT_PULLUP yang mengaktifkan internal Pullup Resistor dalam MicroController.
      Tak semua board ada Internal Pullup, tapi kebanyakannya ada.
      Bila menggunakan INPUT_PULLUP, tak perlu gunakan resistor.
      Namun tuan perlu kaji balik spesifikasi board LiltPad, samada boleha atau tidak menggunakan fungsi INPUT_PULLUP.

      Like

Tinggalkan Jawapan

Masukkan butiran anda dibawah atau klik ikon untuk log masuk akaun:

WordPress.com Logo

Anda sedang menulis komen melalui akaun WordPress.com anda. Log Out /  Tukar )

Facebook photo

Anda sedang menulis komen melalui akaun Facebook anda. Log Out /  Tukar )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: