Coding Arduino 101 | Untuk Beginners

Kaedah yang betul untuk mempelajari Coding Arduino adalah dengan MEMAHAMI Struktur Asas penulisan Coding, dan MEMAHAMI maksud setiap Syntax coding.

Copy/Paste sahaja coding dari Internet/Google adalah sangat tidak efektif bila kita tidak mempunyai basic pemahaman dalam coding Arduino. Masalah akan berlaku apabila kita hendak mengubah code dari Internet kepada bentuk yang kita mahukan.

Dalam artikel ini, anda akan mempelajari asas memahami coding dalam Arduino. Artikel ini mengandungi beberapa bahasa yang advance yang menyentuh bab coding, yang telah ditulis sebagai reference untuk beginners sahaja, bagi individu yang ingin cuba memahami coding Arduino

TIPS PENTING BELAJAR CODING:
Kenalpasti 3 Kategori Coding yang mempunyai
1. Data-INPUT
2. Arahan-OUTPUT
3. Pemprosesan-Data.

Teruskan baca artikel untuk mengenalpasti.

Lain Board, Lain Coding?

arduino-comparison

Kaedah Coding untuk semua Arduino board adalah sama. Coding yang digunakan untuk Arduino UNO, boleh dipakai terus pada board-board lain seperti MEGA , NANO dan lain-lain. Cuma pemilihan BOARD dan COM Port perlu betul dalam Arduino IDE.

Apa yang perlu di ubah adalah penggunaan Nombor Pin sahaja, kerana lain board mempunyai Konfigurasi Pin berlainan. Diperingkat lebih advance, apabila anda mula menggunakan Input/Output Communication Peripherals lain seperti, I2C, SPI, Serial, ada kemungkinan sambungan komunikasi mereka berbeza.

3 Perkara Pertama Beginners Perlu Tahu!

  • ‘SKETCH’
  • ‘//’ NOTA
  • ‘{‘  ‘}’ SEMI-COLON

Pastikan anda mengetahui dengan terperinci mengenai 3 perkara ini sebelum advance lebih lanjut, ikuti artikel di bawah:

Sertai Kursus Pemantapan Asas Arduino anjuran MatGyver untuk boost pembelajaran dan pemahaman Arduino!

Struktur Asas Coding Arduino IDE

Individu yang mempunyai asas coding seperti Java, HTML, CSS dan juga asas C++, coding Arduino akan menjadi mudah sebab korang memahami Struktur Coding.

Bagi beginners pula, contoh sketch dalam artikel di atas
(3 Perkara Asas…) mungkin nampak kompleks. Namun hakikatnya, itulah antara coding paling ringkas dalam Arduino, lagi-lagi apabila dibuang semua Nota-Nota Kaki dalam coding tersebut, dan ia jadi ringkas seperti berikut:

void setup() {
 pinMode(2, OUTPUT);                     
}
void loop() {
 digitalWrite(2, HIGH); 
 delay(1000);              
 digitalWrite(2, LOW); 
 delay(1000);                                
}

Coding di atas adalah asas untuk mengelipkan satu lampu LED yang disambungkan pada Pin 2 Arduino.

Kawasan Coding dalam Arduino IDE boleh dibahagikan kepada 4 bahagian seperti berikut:

Void Setup() dan Void Loop() merupakan  2 komponen utama dalam struktur coding. IDE tidak dapat upload program dalam Arduino jika 2 komponen ini tiada.

Defining Area dan Sub-Routine Area hanya merupakan kawasan untuk coding-coding supportif dan tambahan pada penggunaan-penggunaan yang lebih advance. Terutamanya bila anda mula menggunakan Library Arduino.

Anda boleh perhatikan code mengelip lampu LED di atas, hanya mempunyai code dalam Void Setup() dan juga Void Loop(). Jika anda perhatikan betul-betul, anda juga dapat lihat, sebenarnya Void Loop() yang mengandungi Coding Utama untuk mengerlipkan LED tersebut.


(Rujuk coding penuh di bawah yang mempunyai Nota-nota Kaki untuk setiap fungsi coding)

//CONTOH: KELIPKAN LED PADA PIN 2 ARDUINO//
//coding berikut adalah untuk mengelipkan LED yang disambungkan pada pin 2
//arduino anda
//Anda boleh gunakan coding ini untuk mana-mana projek anda
//cuma pastikan anda 'TAG' kami iaitu MatGyver.my apabila
//anda 'SHARE' projek anda

void setup() {
// Setup Code di sini hanya akan berjalan sekali sahaja
pinMode(2, OUTPUT); // Declare pin 2 sebagai digital output
                    // LED disambungkan pada pin 2
}

void loop() {
// Di sini biasanya adalah code utama projek
// Code dalam void loop() akan di-loop secara infiniti

digitalWrite(2, HIGH); //digital output HIGH = 5V pada LED (ON)
delay(1000); //loop tunggu 1000 millisaat = 1s
             //bermaksud signal LED ON selama 1s
digitalWrite(2, LOW); //digital output LOW = 0V pada LED (OFF)
delay(1000); //loop tunggu 1000 millisaat = 1s
             //bermaksud signal LED OFF selama 1s   
}

Bagaimana Arduino “SCAN” Coding untuk di-Laksanakan

Berdasarkan 4 Struktur Coding yang dijalankan di atas, kita analisa, bagaimana Arduino membaca semua code yang anda tulis, BERMULA dari apabila kita Power-On atau Start Arduino.

PENTING:
Lihat Rajah di atas.
Defining/Sub-Routine dan Void Setup di bahagian atas sekali, hanya dibaca dan dilaksanakan SEKALI sahaja, steiap kali
Power ON.

Selepas itu, Void Loop akan di ULANG dengan INFINITY sehingga Power di-Offkan.

Bila Arduino dinyalakan, ia akan mula SCAN bahagian Defining Area (1 kali sahaja) , untuk melihat sebarang Library tambahan atau jika ada variable-variable yang anda declare.

Kemudian, Arduino akan SCAN Void Setup() (1 kali sahaja), bagi menetapkan penggunaan Pin dan fungsi Pin yang anda perlukan dalam coding.

PENTING!
Setiap Pin yang digunakan perlu di beritahu / Declare penggunaannya dalam Void Setup(), samada sebagai Digital Input, Digital Output, Analog Input atau Serial.

Dalam Void Setup(), coding di baca SEKALI SAHAJA, iaitu dari awal pembukaan semi-colon ‘{‘ sehingga akhir penutupan semi-colon ‘}’ .

Void Loop() pula membaca dan menjalankan coding secara INFINITE-LOOP berasaskan kelajuan frequency Chip MCU Arduino anda, hampir 100kHz.

Kelajuan bacaan ini juga di panggil “Scanning Rate”.

Setelah Arduino membaca coding dalam Void Loop() sehingga hujung penutupan semi-colon ‘}’ Void Loop(),

ia akan mulakan semula pembacaan, Round ke-2, 3 dan seterusnya, dari permulaan semi-colon ‘{‘ Void Loop() di atas semula sehingga ke-hujung ‘}’ Void Loop() sekali lagi. Dan seterusnya di ulang-ulang.

Kenapa Void Setup() ?

Void Setup() berfungsi mengikut namanya, iaitu untuk ‘Setup’ fungsi-fungsi tertentu juga paling penting untuk setup cara penggunaan Pin GPIO Arduino.

Struktur Pin dalam Arduino UNO. Sumber: http://www.TheEngineeringProjects.com

Setiap pin-pin kawalan dalam Arduino di panggil GPIO, yang bermaksud General Purpose Input Output.

GPIO ini bermaksud tiap-tiap pin mempunyai 2-3 fungsi, samada ia boleh jadi Digital Input, Digital Output, Analog Input, PWM Output, atau Komunikasi Serial.

Disebabkan pin-pin kawalan Arduino bersifat dwi-fungsi atau multi-fungsi, kita perlu tetapkan fungsi apa yang kita mahu pin-pin tersebut digunakan dalam Projek Arduino kita.

Kaedah menetapkan fungsi-fungsi Pin dalam Void Setup() adalah seperti berikut:

  • Fungsi Digital Input
    Digunakan untuk Sensor Digital yang menggunakan 3-wire,
    5V, Ground dan Digital Output Sensor.
    Contoh mudah seperti switch, butang, dan Sensor Digital Output.
    pinMode(2, INPUT); //input pada pin 2 
  • Fungsi Digital Input_Pullup
    Digunakan untuk Sensor Digital yang menggunakan 2-wire,
    Ground dan Digital Output Sensor.
    Contoh mudah seperti switch, butang, dan relay-contact 5V.
    pinMode(3, INPUT_PULLUP); //input pull-up pada pin 3 

DIGITAL INPUT/INPUT_PULLUP
Berfungsi dengan men-Detect samada voltage 5V atau 0V berada pada pin tersebut. Voltage 5V akan memberi bacaan HIGH pada pin tersebut dan 0V memberi LOW.

Jika ada butang 2-wire, satu kaki butang sambung pada pin Ground, dan satu lagi menjadi Signal Input. Pabila butang ditekan, Ground akan bersambung dengan Signal Input memberikan signal 0V atau LOW, dan bila butang dilepas, bacaan HIGH.

  • Pin Declaration – Digital Output
    Digunakan bila memerlukan Output 5V untuk mengaktifkan Device Output korang. (maksimum 20mA)
    Contoh mudah seperti LED, Motor-Kecil (100mW), ataupun Relay-Coil 5V.
    pinMode(5, OUTPUT); //Output Digital pada pin 5 

DIGITAL OUTPUT
Arahan HIGH dalam coding akan membuat pin anda mengeluarkan 5V voltage untuk mengaktifkan Device Output.
Arahan LOW, akan mengeluarkan 0V atau Ground pada pin itu.

Digital Output Arduino hanya mampu support peralatan pada voltan 5V dan arus 20mA maksimum, atau 100mW kuasa maksimum untuk setiap Pin Output.

Elakkan sambung Motor direct kepada pin Output.
Gunakan module kawalan motor.

  • Pin Declaration – Analog Output(PWM)
    Digunakan untuk mengawal Output boleh laras 0V ~ 5V. Bermakna fungsi ini boleh memberikan output 1V, 2V ataupun 3.5V untuk mengubah kekuatan Voltage yang dikeluarkan.
    Contoh mudah seperti terang-malap LED, laju-perlahan Motor-Kecil (100mW), Motor Shield yang kawal motor-motor besar.
    pinMode(7, OUTPUT); //sama seperti digital output, cuma pin 7 

    //Nota Kaki : Analog Input tidak perlu declare pin

  • Pin Declaration – Servo Motor (Library: Servo.h)
    Digunakan bagi menetapkan penggunaan Servo Motor pada pin tersebut.
    Fungsi ini perlu digunakan bersama Library Servo.
    ServoSaya.attach(3); //kawalan signal Servo pada pin 3 
  • Initiate (Memulakan) Komunikasi Serial (.begin() )
    Contoh-contoh komunikasi peripheral adalah seperti,
    Serial Hardware, Serial Software, SPI, I2C dll.
    Setiap jenis perpheral mempunyai coding yang tertentu untuk menggunakan mereka.
Serial.begin(9600); //mulakan komunikasi Serial UART-USB
                    //pin default Serial 0 & 1

Wire.begin(); //mulakan komunikasi Serial I2C
              //pin default I2C untuk UNO, A4 & A5    

SPI.begin(); //mulakan komunikasi Serial SPI
             //pin default SPI untuk UNO, 10,11,12 & 13  

radio.begin(); //mulakan komunikasi penggunaan Radio RF

lcd.begin(); //mulakan komunikasi dengan LCD Display

Penggunaan Komunikasi Peripheral adalah dikira intermediate level, kebiasaannya digunakan untuk module-module sensor, module komunikasi wireless mahupun module-module display LCD.

Apa itu Void Loop() ?

Coding Utama project korang, akan di-loop-kan secara berterusan dan secara infiniti dalam Void Loop, selagi Power masih ada.

Ini adalah kaedah Arduino membaca atau Scan Coding untuk di laksanakan.

Coding akan di baca setiap baris satu-persatu dari atas ke bawah. Coding yang berada di bahagian atas di baca dahulu, kemudian bawahnya dan seterusnya.

Semua fungsi utama seperti, On-kan LED, Off-kan LED, baca Input dari butang, baca Input dari komunikasi Serial atau SPI, timer dan kira-kira matematik, semuanya perlu diletakkan dalam Void Loop() yang menjadi asas pada fungsi utama projek Arduino korang.

Strukturkan Coding dalam Void Loop ()

Bahagian ini adalah bahagian paling penting untuk di fahami dalam Pembelajaran Coding Arduino. Pastikan anda dapat kenal-pasti, yang mana Coding Data-INPUT, yang mana Coding Arahan-OUTPUT dan yang mana Coding Pemprosesan-Data.

3 Perkara yang akan berlaku dalam Coding Utama adalah aktiviti berikut:

  1. Membaca Input
  2. Memproses Data/Maklumat
  3. Arahan Output
maklumat-proses
3 Peringkat Pemprosesan Maklumat/Data untuk mana-mana sistem automasi.

Jika tiada Aktiviti Pemprosesan berlaku, maka projek anda tidak memerlukan Arduino.

MEMBACA INPUT SIGNAL

Dalam Coding Arduino, sebarang Coding Data-INPUT akan mempunyai NILAI-DATA.

Dalam bahagian ini, pastikan anda teliti setiap coding yang mempunyai NILAI-DATA.

Disebabkan INPUT mempunyai Nilai-Data, ia dapat di print terus pada Serial Monitor, atau nilainya di SIMPAN TERUS dalam Variable.

void setup() {
 Serial.begin(9600);
 pinMode(2, OUTPUT);                     
}
void loop() {
 Serial.println(digitalRead(2));                               
}

Ikuti Tutorial Langkah Pertama kami dalam URL berikut, untuk belajar lebih lanjut mengenai Serial Monitor:

Langkah Pertama Mempelajari Arduino

Input bagi Arduino boleh datang dari berbagai sumber, dari input Digital High/Low (5V/0V) seperti butang, switch dan relay, juga terdapat beberapa jenis sensor yang mengeluarkan Digital Output (5V/0V), dari Sensor Analog yang memberikan Range-data (0~1023) ataupun sumber data Serial Input.

Berikut adalah beberapa Syntax untuk mendapatkan Data-INPUT:

Digital Input digitalRead()

Memberikan BACAAN VOLTAGE pada Digital Input di Digital-Pin, samada yang menggunakan INPUT ataupun INPUT_PULLUP. Biasa digunakan untuk penggunaan Butang, Switch, atau Sensor yang beri Signal Digital.

Bacaan akan diterima sebagai “HIGH” atau “LOW”, atau 1 dan 0.

HIGH = 1 = true (iaitu pin menerima 5V)
LOW = 0
= false (iaitu pin menerima 0V atau GND)

digitalRead(8); 
//syntax membaca Digital Input pin 8

Serial.print(digitalRead(8)); 
//syntax print-out Digital Input pin 8 pad Serial Monitor

Butang1 = digitalRead(8);
//memasukkan dan simpan nilai 1 atau 0 condition 
//dari Digital Input pin 8 ke dalam variable Butang1

PENTING!:
Disebabkan Syntax “digitalRead(pin)” mempunyai nilai 1 atau 0,
nilai 1 atau 0 ini boleh terus disimpan dalam Variable seperti coding di atas,
nilai 1 atau 0 dari bacaan digital Pin disimpan dalam variable
Butang1

Atau cara penggunaannya bersama pemprosesan:

if(digitalRead(8) == HIGH){  //jika pin 8 adalah HIGH atau ON
   digitalWrite(2, HIGH);     //nyalakan LED pada pin 2
}

Analog Input analogRead()

Memberikan bacaan Analog Input di Analog-Pin A0,A1,A2 ~ A5.
Pin Analog Ini boleh menerima Signal Input Analog dari 0V hingga 5V. Signal Voltage Analog ini akan di-Convertkan pada nilai Digital (10-bit ADC) 0~1023. Fungsi ini digunakan untuk penggunaan Potentimeter Input atau Sensor Input Analog.

Bacaan ini pula adalah dari nilai 0~1023 (10 bit maximum, abaikan bit jika tidak faham)

analogRead(A0); 
//syntax membaca Analog Input pin A0

Serial.print(analogRead(A0)); 
//syntax print-out Analog Input pin A0 pada Serial Monitor

InputAnalog1 = analogRead(A0);
//memasukkan dan simpan nilai 0 ~ 1023 condition 
//dari Analog Input pin A0 ke dalam variable InputAnalog1

PENTING!:
Disebabkan Syntax “analogRead(pin)” mempunyai nilai 0 ke 1023,
nilai ini boleh terus disimpan dalam Variable seperti coding di atas,
disimpan dalam variable
InputAnalog1

Atau cara penggunaannya bersama pemprosesan:

if(analogRead(A0) == HIGH){  //jika bacaan Analog pada A0 melebihi nilai 500
   digitalWrite(2, HIGH);     //nyalakan LED pada pin 2
}

Serial Input Serial.Read()

Memberikan Nilai-Data yang diterima dari Serial.

Serial.read(); //mendapatkan data dari sumber Serial

penggunaannya bersama pemprosesan:

if(Serial.available()){       //jika terdapat input data dari Serial
   DataInput = Serial.read(); //masukkan data ke dalam variable DataInput
}

PENTING!:
Disebabkan Syntax “Serial.Read()” mempunyai nilai data,
nilai ini boleh terus disimpan dalam Variable seperti coding di atas,
disimpan dalam variable
DataInput

Fungsi Serial.Read hanya akan mempunyai data 1 Byte (8 bit) iaitu bersamaan dengan nombor 0~255.

Nilai 0~255 ini boleh mewakili huruf dari A to Z atau nombor 0 to 9.
Anda boleh rujuk carta conversion dari link wikipedia di bawah:

https://en.wikipedia.org/wiki/File:ASCII-Table.svg

I2C Input Wire.Read()

Memberikan Nilai-Data yang diterima dari Serial I2C.

Wire.read(); //mendapatkan data dari sumber Serial I2C

if(Wire.available()){       //jika terdapat input data I2C
   DataInput = Wire.read(); //masukkan data ke dalam variable DataInput
}

PENTING!:
Sama seperti Serial.Read syntax “Wire.Read()” mempunyai nilai data, dan boleh terus disimpan dalam Variable,
DataInput

Wire.Read juga hanya akan mempunyai data 1 Byte (8 bit) iaitu bersamaan dengan nombor 0~255.

Nilai 0~255 ini boleh mewakili huruf dari A to Z atau nombor 0 to 9.
Anda boleh rujuk carta conversion dari link wikipedia di bawah:

https://en.wikipedia.org/wiki/File:ASCII-Table.svg

MEMBACA DATA DARI PENGGUNAAN LIBRARY INPUT

Jika tadi, kita menggunakan kaedah membaca input dari Fungsi Basic dalam Arduino, Digital Input, Analog Input dan Serial.

Bila anda mula menggunakan Module Sensor-sensor Tambahan pula, setiap sensor pasti akan mempunyai Protocol-Penggunaan mereka tersendiri, dan Komuniti Arduino seluruh dunia telah membuat pelbagai LIBRARY untuk Arduino supaya coding menggunakan module tersebut dapat dipermudahkan.

Yang pastinya, setiap Library Module Sensor, PASTI akan mempunyai NILAI-DATA, dan NILAI-DATA ini dapat disimpan terus dalam variable, ikuti contoh berikut:

Library TinyGPS untuk membaca maklumat Coordinat dari Satellite:

if(gpsSerial.available()){
     while (gpsSerial.available()){
         char c = gpsSerial.read();
         if (gps.encode(c)) //<--- Memanggil Fungsi Library untuk decode maklumat GPS 
           newData = true;
     }
}

if(newData){
   unsigned long age;
   gps.f_get_position(&latitude, &longitude, &age);
   //^^^ Memanggil Fungsi Library untuk memasukkan
   //maklumat latitudeGPS kedalam Variable "latitude"
   //maklumat longitudeGPS kedalam Variable "longitude"

   //TERUS PAPARKAN MAKLUMAT DALAM VARIABLE PADA SERIAL MONITOR
   Serial.print(" ");
   Serial.print(latitude, 6);
   Serial.print(" ");
   Serial.print(longitude, 6);
   Serial.println();    
}

Library DHTSensor untuk membaca maklumat Temperature dan Humidity dari Sensor DHT11:

 h = dht.readHumidity();    //<---maklumat Humidity terus disimpan dalam variable "h" 
 t = dht.readTemperature(); //<---maklumat Temperature terus disimpan dalam variable "t"

MEMPROSES DATA/MAKLUMAT

Setiap data input yang diterima seperti di atas, dapat di manipulasi  untuk menjadi asbab/sebab kepada suatu OUTPUT.

Apa yang penting, semua bentuk input yang diterima, semuanya dalam bentuk nombor digital yang tepat. Dengan nombor-nombor inilah, data tersebut dapat dimanipulasi dengan Operasi Matematik mahupun Operasi berasaskan Situasi.

Antara cara memanipulasi data input adalah seperti contoh-contoh berikut:

>> Operasi Matematik +, – , X, /, =

//contoh cara meletakkan setiap data dalam bentuk fomula matematik

Peratus_PerbezaanMasa = (MasaSekarang - MasaSebelum)/ MasaSekarang; 

if(Peratus_PerbezaanMasa > 50){ //membuat perbandingan kondisi 
   analogWrite(9, 255); //output hasil dari manipulasi data input tersebut                       
                        //PWM output bernilai max 255 pada pin 9
}

>> Perbandingan Situasi, While(), If(), For() Loop

While() Loop

while(digitalRead(3) == LOW) { //loop ini akan kekal berulang sehingga digitalRead(3) menjadi HIGH                  
  val9 = map(analogRead(A0),225, 830, 16, 160);         
  ServoSatu.write(val9);        
                           
  val10 = map(analogRead(A1),225, 830, 16, 160);         
  ServoDua.write(val10);                      
  delay(15);      
}

for() Loop

/*FOR LOOP ini mengatakan bahawa,  
* Nilai permulaan 'x' adalah 0.  
* Loop FOR akan berulang-ulang selagi nilai x tidak  
* bersamaan 5.  
* Dan setiap kali 1 cycle habis, nilai x ditambah '1'  
* Loop ini akan berulang sebanyak 5 kali sahaja.  */  

for (x = 0; x < 5; x++){ 
   digitalWrite(2, HIGH);  
   delay(1000);  
   digitalWrite(2, LOW);  
   delay(1000); 
}

If (check condition) Condition

Contoh If() condition adalah seperti contoh-contoh di atas. Namun, hampir kesemua jenis comparator dapat digunakan. Antaranya adalah, nilai sama’==’ , nilai tidak  sama ‘!=’ , lebih besar ‘>’ atau lebih kecil ‘<‘

Pelarasan Nilai, Fungsi Map

Selalunya digunakan pada data-data yang mempunyai ‘range’ seperti Analog Input.

 /*data dari analog input adalam dalam range 0~1023    
*jadi fungsi map di atas menukar dan melaraskan  
*range 0~1023 kepada range yang lebih rendah 0~255  
*ini bermakna 1023 diterjemahkan secara linear kepada  255  */

nilaiA = analogRead(potpin2);             
nilaiA = map(analogRead(potpin2),0,1023, 0, 255);

analogWrite(9, nilaiA); //analogWrite atau PWM, hanya boleh mengeluarkan 255 maksimum

ARAHAN OUTPUT

Arahan-arahan Output, selalunya mempunyai penghujung .Write() .Beberapa contoh arahan Output adalah seperti berikut:

  • Output Digital (HIGH/LOW), digitalWrite()
     digitalWrite(2, HIGH); //sama seperti kelipan LED 
  • Output Analog (0~255), analogWrite()
    analogWrite(9, 255); //analogWrite atau PWM, hanya boleh mengeluarkan nilai 255 maksimum //nilai 255 ini adalah 100% duty cycle PWM //iaitu bersamaan dengan 5V penuh    
  • Kawalan Servo (0~180), ServoSaya.Write()
    ServoSaya1.write(180); //Servo dikawal ke 180 darjah //anda boleh masukkan range dari 0~180 darjah //untuk mengawal Servo     
  • Penghataran data ke Serial , Serial.Write()
    //hantar data value pin Analog 3 pada Serial Serial.write(analogRead(A4));   //hantar data value pin Analog 3 pada Serial 
  • Penghantaran data ke Peripherals lain SPI & I2C , XXX.Write()
    Detail akan ditulis dalam blog entry lain, contoh seperti di bawah,
    SPI.transfer(); //dengan library SPI 

    Wire.write(); //dengan library I2C 

    radio.write(); //dengan library nRF24

Defining Area

Kawasan untuk declare ‘variable-variable’ custom anda, juga kawasan untuk memanggil ‘library-library’ tambahan yang diperlukan.

‘Variable’ adalah Nama-Custom yang kita berikan, untuk menyimpan sebarang bentuk nombor atau data dari Input ataupun nombor yang kita tetapkan, sama seperti dalam Matematik Algebra:

X = Y + 10

Lihat contoh coding berikut:

int LED_Hijau = 2;

void setup() {
pinMode(LED_Hijau, OUTPUT);
}

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

Coding di atas adalah sama seperti kelip LED yang awal, cuma nombor pin 2 telah digantikan dengan ‘variable’ LED_Hijau. Lebih mudah untuk kita tulis coding begini. Namun, penggunaan setiap variable, perlu di-declare di-‘Defining Area’ seperti di atas.
(Rujuk artikel berikut untuk mengetahui jenis-jenis variable yang ada)

Coding berikut pula, akan menunjukkan contoh coding memanggil ‘library-library’ tambahan, semuanya menggunakan simbol ‘#’ dipermulaan:

#include <SPI.h> //memanggil Library unutk SPI
#include <Wire.h> //memanggil Library unutk I2C
#include <nRF24L01.h> //memanggil Library untuk module nRF24L01
#include <RF24.h> //memanggil Library untuk module RF24
#include <Servo.h> //memanggil Library untuk Servo

Mengapa Perlu Panggil Library Tambahan?

Untuk memudahkan penulisan coding mengikut PROTOCOL setiap Module.

Setiap Module yang ditambah dan disambungkan pada Arduino, pasti mempunyai PROTOCOL penggunaan mereka sendiri.

Di sebabkan Module ada Protocol, sebagai contoh jika hendak membaca bacaan Temeperature dari Module Sensor DHT11, coding yang ditulis dari
RAW, pasti akan panjang berjela-jela bagi memastikan protocol module tersebut diikuti.

Dengan menggunakan Library DHT, pembacaan nilai Temperature dari module tersebut dipermudahkan sehingga hanya perlu letak 1 Syntax sahaja untuk mendapatkan Temperature.

Sub-Routine Area

Dalam kawasan Auxillary pula, kebiasaannya digunakan untuk meletakkan fungsi-fungsi custom anda sendiri. Tidak semua orang menggunakan fungsi custom. Tetapi apabila anda sudah biasa, ia akan membuatkan coding anda nampak lebih kemas dan teratur.

Tambahan pula, ia sangat sesuai digunakan untuk coding-coding yang berulang.
Dengan menggunakan contoh Kelip LED juga, kita lihat bagaimana membuat fungsi custom seperti contoh berikut:

void setup() {
pinMode(2, OUTPUT);
}

void loop() {
kelipkelip();
delay(5000);
kelipkelip();
delay(3000);
}

void kelipkelip(){
 digitalWrite(2, HIGH);
 delay(1000);
 digitalWrite(2, LOW);
 delay(1000);
}

Semua coding untuk kelip telah diletakkan dalam fungsi custom kita yang dipanggil kelipkelip() . Mengikut kaedah di atas, hanya perlu beri nama anda sendiri dan tambahkan ‘()’ dihujung.

Jangan Takut Untuk Bermula

Penerangan di atas hanyalah sebagai panduan. Anda tidak perlu menulis coding anda sendiri untuk peringkat awal.

Untuk peringkat permulaan, anda pasti akan dapat belajar dengan cepat dengan kaedah copy/paste. Setiap tutorial yang kami sediakan di MaGyver.my telah disediakan pelan pendawaian (wiring) serta ‘Sketch’ coding yang berfungsi.

Copy/Paste dan kaji coding, wiring serta output yang terhasil.

Kemudian perlahan-lahan cuba ingat dan fahami maksud setiap coding. Ia tidaklah begitu susah. Apabila sudah biasa, ia pasti berada di hujung minda sahaja.

Kami syorkan anda terus ke artikel berikut untuk mula menguji Arduino tanpa perlu tahu mengenai coding:

Lebih Lanjut Mengenai Coding Arduino

Untuk mengetahui lebih lanjut dan detail mengenai command-command syntax dalam Arduino IDE, anda boleh layari URL berikut dari Arduino.cc yang menerangkan mengenai setiap command arahan:

Beberapa Artikel bacaan lain yang kami syorkan:

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 )

Google photo

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

Twitter picture

Anda sedang menulis komen melalui akaun Twitter 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.