Anda di halaman 1dari 61

Program Arduino

Arduino
menggunakan
pemrograman
dengan bahasa C. Berikut ini adalah sedikit
penjelasan yang ditujukan kepada anda
yang
hanya
mempunyai
sedikit
pengalaman
pemrograman
dan
membutuhkan
penjelasan
singkat
mengenai karakter bahasa C dan software
Arduino. Untuk penjelasan yang lebih
mendalam, web Arduino.cc adalah sumber
yang lengkap.

Program C Arduinominimal terdiri dari dua fungsi


yaitu setup() dan loop(). Fungsi setup() dijalankan
sekali setiap board arduino dihidupkan sedangkan
fungsi loop() dijalankan terus menerus selama board
arduino hidup.
Semua bahasa perograman terdiri dari
1.ekspresi,
2.statemen,
3.blok statemen
4.blok fungsi

Ekspresi adalah kombinasi operand dan operator


contoh 2+3 , X > Y dst 2,3,X dan Y adalah
operand sedangkan + dan > adalah operator .
Statemen adalah instruksi lengkap dalam bahasa C
diakhiri dgn tanda ; (titik koma) contoh : A= 2+3;
Statemen dan ekspresi C arduino indentik dengan
ANSI-C , Struktur Program C Arduino minimal terdiri
dari dua fungsi yaitu setup() dan loop().

//setup digunakan untuk inisialisasi variable, mode pin dll


void setup()
{
statement
}
void loop()
{
statement
....
}
//fungsi fungsi lainya jika ada fungsi_lainnya()
{
statement
}

Contoh
1
2
3
4
5
6
7
8
9
10
11
12

void setup()
{
pinMode(8, OUTPUT); // pin 8 sbg
output
}
void loop()
{
digitalWrite(8, HIGH); // LED on
delay(250);
digitalWrite(8, LOW); // LED of
delay(1000);
}

Struktur
Setiap program Arduino (biasa disebut sketch)
mempunyai dua buah fungsi yang harus ada.
void setup( ) { }
Semua kode didalam kurung kurawal akan
dijalankan hanya satu kali ketika program
Arduino dijalankan untuk pertama kalinya.
void loop( ) { }
Fungsi ini akan dijalankan setelah setup
(fungsi void setup) selesai. Setelah
dijalankan satu kali fungsi ini akan
dijalankan lagi, dan lagi secara terus
menerus sampai catu daya (power)
dilepaskan.

Syntax
Berikut ini adalah elemen bahasa C yang dibutuhkan untuk
format penulisan.
//(komentar satu baris)
Kadang diperlukan untuk memberi catatan pada diri
sendiri apa arti dari kode-kode yang dituliskan. Cukup
menuliskan dua buah garis miring dan apapun yang kita
ketikkan dibelakangnya akan diabaikan oleh program.
/* */(komentar banyak baris)
Jika anda punya banyak catatan, maka hal itu dapat
dituliskan pada beberapa baris sebagai komentar.
Semua hal yang terletak di antara dua simbol tersebut
akan diabaikan oleh program.
{ }(kurung kurawal)
Digunakan untuk mendefinisikan kapan blok program
mulai dan berakhir (digunakan juga pada fungsi dan
pengulangan).
;(titik koma)
Setiap baris kode harus diakhiri dengan tanda titik koma
(jika ada titik koma yang hilang maka program tidak

Variabel
Sebuah program secara garis besar dapat
didefinisikan sebagai instruksi untuk memindahkan
angka dengan cara yang cerdas. Variabel inilah yang
digunakan untuk memindahkannya.
int (integer)
Digunakan untuk menyimpan angka dalam 2 byte
memori. Tidak mempunyai angka desimal dan
menyimpan nilai dari -32.768 dan 32.767.
(Unsigned int juga menghabiskan dua byte
memori tetapi menyimpan angka dari 0 sampai
65.535)

boolean (boolean)
Variabel sederhana yang digunakan untuk
menyimpan nilai TRUE (benar) atau FALSE
(salah). Sangat berguna karena hanya
menggunakan 1 bit dari RAM (mengambil
satu byte memori dan dapat bernilai benar
atau salah)

float (float)
Digunakan untuk angka desimal (floating point).
Memakai 4 byte memori (32 bit) dari RAM dan
mempunyai rentang dari -3.4028235E+38 dan
3.4028235E+38 (Tipe data float dan double
adalah tipe data yang sama, dapat menggunakan
jenis tipe data ini untuk menyimpan angka
floating-point. Tipe data void hanya untuk
deklarasi fungsi. Ini menunjukkan bahwa fungsi
tersebut tidak mengembalikan nilai)

char (character)
Menyimpan 1 karakter menggunakan kode
ASCII (misalnya A = 65). Hanya memakai 1
byte (8 bit) dari RAM (mengambil satu byte nomor
memori dan menyimpan dari -128 sampai 127. Angkaangka ini biasanya mewakili karakter yang dikodekan
dalam ASCII)

long (long)
Digunakan ketika integer tidak
mencukupi lagi. Memakai 4 byte (32
bit) dari memori (RAM) dan
mempunyai rentang dari
-2,147,483,648 dan 2,147,483,647.
(Unsigned long juga perlu empat byte
tetapi menyimpan rentang nilai dari 0

Array menyimpan nilai yang memiliki tipe data yang sama:

int values[2]; // Array dengan dua elemen


int values[0] = 42; // Elemen pertama Array
int values[1] = -42; // Elemen kedua Array
int more_values[] = { 42, -42 };
int first = more_values[0]; // first == 42
Dari contoh di atas, nilai-nilai array dan
more_values mengandung elemen yang sama.
Ada dua cara yang berbeda untuk
menginisialisasi array. Perhatikan bahwa
indeks array dimulai dari 0, dan perlu diingat
pula bahwa elemen array yang telah
terinisialisasi mengandung nilai random.

Sebuah string adalah sebuah array nilai


char. Arduino IDE mendukung penciptaan
string dengan beberapa sintaksis gulasemua ini deklarasi membuat string
dengan isi yang sama.

VARIABLE DAN KONSTANTA


Variabel adalah memori penyimpanan data yang
nilainya dapat diubah-ubah. variable disimpan di
RAM
Konstanta adalah memori penyimpanan data
yang nilainya tidak dapat diubah setelah program
di compile. Konstanta disimpan di memory
program.
VARIABLE SCOPE
Variable dan konstanta global dapat diakses di
seluruh bagian program.
Variable dan konstanta lokal hanya dapat
diakses didalam fungsi tempat dideklarasikannya.

Operator Matematika
Operator yang digunakan untuk memanipulasi angka
(bekerja seperti matematika yang sederhana).
=
Membuat sesuatu menjadi sama dengan nilai yang
lain (misalnya: x = 10 * 2, x sekarang sama dengan
20).
%
Menghasilkan sisa dari hasil pembagian suatu angka
dengan angka yang lain (misalnya: 12 % 10, ini akan
menghasilkan angka 2).
+
Penjumlahan
Pengurangan
*
Perkalian
/
Pembagian

Operator Pembanding
Digunakan untuk membandingkan nilai logika.
==
Sama dengan (misalnya: 12 == 10 adalah FALSE (salah)
atau 12 == 12 adalah TRUE (benar))
!=
Tidak sama dengan (misalnya: 12 != 10 adalah TRUE
(benar) atau 12 != 12 adalah FALSE (salah))
<
Lebih kecil dari (misalnya: 12 < 10 adalah FALSE (salah)
atau 12 < 12 adalah FALSE (salah) atau 12 < 14 adalah
TRUE (benar))
>
Lebih besar dari (misalnya: 12 > 10 adalah TRUE (benar)
atau 12 > 12 adalah FALSE (salah) atau 12 > 14 adalah
FALSE (salah))

Struktur Pengaturan
Program sangat tergantung pada pengaturan apa yang
akan dijalankan berikutnya, berikut ini adalah elemen
dasar pengaturan (banyak lagi yang lain dan bisa dicari
di internet).
1. if..else, dengan format seperti berikut ini:
if (kondisi) { }
else if (kondisi) { }
else { }
Dengan struktur seperti diatas program akan
menjalankan kode yang ada di dalam kurung kurawal
jika kondisinya TRUE, dan jika tidak (FALSE) maka akan
diperiksa apakah kondisi pada else if dan jika
kondisinya FALSE maka kode pada else yang akan

2. for, dengan format seperti berikut ini:


for (int i = 0; i < #pengulangan; i++)
{}
Digunakan bila anda ingin melakukan
pengulangan kode di dalam kurung
kurawal beberapa kali, ganti
#pengulangan dengan jumlah
pengulangan yang diinginkan. Melakukan
penghitungan ke atas dengan i++ atau
ke bawah dengan i.

Digital
1. pinMode(pin, mode)
Digunakan untuk menetapkan mode dari suatu
pin, pin adalah nomor pin yang akan digunakan
dari 0-19 (pin analog 0-5 adalah 14-19). Mode
yang bisa digunakan adalah INPUT atau OUTPUT.
2. digitalWrite(pin, value)
Ketika sebuah pin ditetapkan sebagai OUTPUT, pin
tersebut dapat dijadikan HIGH (ditarik menjadi 5
volts) atau LOW (diturunkan menjadi ground).
3. digitalRead(pin)
Ketika sebuah pin ditetapkan sebagai INPUT maka
anda dapat menggunakan kode ini untuk
mendapatkan nilai pin tersebut apakah HIGH
(ditarik menjadi 5 volts) atauLOW (diturunkan
menjadi ground).

Analog
Arduino adalah mesin digital tetapi mempunyai
kemampuan untuk beroperasi di dalam alam analog
(menggunakan trik). Berikut ini cara untuk
menghadapi hal yang bukan digital.
1. analogWrite(pin, value)
Beberapa pin pada Arduino mendukung PWM (pulse
width modulation) yaitu pin 3, 5, 6, 9, 10, 11. Ini
dapat merubah pin hidup (on)atau mati (of) dengan
sangat cepat sehingga membuatnya dapat berfungsi
layaknya keluaran analog. Value (nilai) pada format
kode tersebut adalah angka antara 0 ( 0% duty cycle
~ 0V) dan 255 (100% duty cycle ~ 5V).
2. analogRead(pin)
Ketika pin analog ditetapkan sebagai INPUT anda
dapat membaca keluaran voltase-nya. Keluarannya

Type Data

Tipe data dari variabel penting karena untuk menentukan


berapa banyak byte memori yg disediakan untuk variabel
itu, dan jenis data yang dapat disimpan dalam variabel.

CONTROL STATEMENT
While Loop
while (expression) //selama expresi
bernilai true laksanakan perulangan
blok statemen dibawahnya.
{
statement1;
statement2;
..
}

atau jika satement hanya 1 baris statement tdk perlu diberi


kurung { }
while(expression)
statement;
Do/While Loop
do //jalankan statement dibawah ( minimal 1 kali perulangan
dilaksanakan) ,
{
statement1;
statement2;

}
while (expression); // jika ekspresi true , jalankan kembali
perulangan.
atau jika satement hanya 1 baris
do
statement;
while (expression);
For Loop
for (expr1; expr2; expr3) //laksanakan perulangan sebanyak expr2
dimulai dari expr1.
{
statement1;
statement2;

atau jika satement hanya 1 baris


for(expr1; expr2; expr3)
statement;
If/Else
if (expression) //jika ekspresi bernilai true
laksanakan blok statemen dibawahnya
{
statement1;
statement2;

}
atau jika satement hanya 1 baris
if(expression)
statement;

SWITCH/CASE

switch (expression)
{
case const1: // jika expression = const1 eksekusi
staement2 dibawahnya
statement1;
statement2;
case const2: // jika expression = const2 eksekusi
statemenibawahnya
statement3;
statement4;
case constX:// jika espression=constX eksekusi
statemen dibawahnya
statement5;
statement6;
default:
statement7; // jika ekspression tdk sama dgn
const1,cons2, dan constX
statement8;
}

BREAK, CONTINUE
break, continue statements digunakan untuk
merubah alur eksekusi untuk statement
pengulangan for, while, do/while, and switch .
Break
break statement digunakan untuk keluar dari
pengulangan for, while, do/while, atau switch .
break keluar dari blok pengulangan dimana dia
berada saja.
Continue
continue akan menyebabkan program memulai
iterasi berikutnya dari statemen pengulangan
while, do/while, atau for loop. continue sama
seperti break pengulangan akan berhenti pada
point yg dituju (di skip), bedanya continue akan
memulai loop lagi, dari atas, sedangkan break

Setup()
{
}
loop()
{
int i;
for(i; i<7; i++)
{
if(i==3)
continue;
printf(%d, i )
}
}

OPERATOR DAN EXPRESSI


Operator Penugasan ( = )
Setelah variabel telah dideklarasikan, operasi dapat
dilakukan pada variable menggunakan operator
penugasan (=). Sebuah nilai yang diberikan untuk
variabel dapat berupa sebuah konstanta, variabel, atau
ekspresi. Sebuah ekspresi dalam bahasa C adalah
kombinasi dari operan (pengidentifikasi) dan operator.
operaor penugasan antara lain sebagai berikut:
Variable = nilai ,
contoh nilai_max = 10;
Operator Arithmetic :
Perkalian *
Pembagian /
Modulo %
Penjumlahan +
Pengurangan atau Negasi

Operator Logika
AND &&
OR ||
Operator relasional
sama dengan ==
tdk sama dengan !=
lebih kecil <
lebih kecil atau sama dengan <=
lebih besar >
lebih besar atau sama dengan >=
increment
++variable atau variable++ artinya variable=variable+1 ,
misal ++X atau X++ artinya X = X+1
perbedaaanya adalah untuk ++X , tambahkan dulu nilai X dgn
1 baru di proses baris kode tsb, sedangkan X++ , proses dulu
baris code baru tambahkan nilai X dgn 1
deccrement
variable atau variable artinya variable=variable-1 ,

misal Y atau Y artinya Y = X-1


perbedaaanya adalah untuk Y , kurangi dulu nilai Y dgn 1 baru di
proses baris kode tsb, sedangkan Y , proses dulu baris code tsb baru
kurangi nilai Y dgn 1
Compound
compound digunakan hanya untuk menyingkat baris expresi saja
contoh nya sbb
a += 3; artinya a = a + 3
b -= 3; artinya b = b 3
c *= 3; artinya c = c * 3
d /= a; artinya d = d / a
a |= 3; artinya a = a OR 3
b &= 3; artinya b = b AND 3
c ^= 3; artinya c = c ^ 3
PORTD &= 3; artinya PORTD = PORTD & 3
kondisonal Expressi
if(expression_A)
expression_B;
else
expression_C;

baris kode diatas bisa digantikan oleh


kondisional expressi:
expression_A ? expression_B : expression_C;
contoh : (A > 10) ? x = 5 : x =22;
kondisional expresi diatas artinya sama
dengan :
IF(A>10)
{
x=5;
}
Else
{
x= 22
}

FUNGSI
yang dimaksud fungsi adalah sebuah blok statement yg melaksanakan
tugas tertentu dan bisa dipakai lebih dari 1 kali di dlm program. program
bahasa C terdiri dari fungsi fungsi dan sebuah program c minimal terdiri
dari 1 fungsi .
fungsi setup() dijalankan pertama kali saat program dijalankan.
fungsi terdiri dari dua bagian utama yaitu kepala fungsi dan blok fungsi
berikut ini bentuk umum sebuah fungsi adalah :
type name_fungsi (type paramameter)
{
statement
}
kepala fungsi terdiri dari type return value, nama fungsi , types dan nama
parameter(jika ada) .
Statement di block fungsi menyatakan apa yg fungsi harus lakukan.
jika return value atau parameter tdk ada maka typennya ditulis void
seperti dibawah ini
void namefungsi (void)
{
statement
}

Digital Input
void pinMode (int pin, int mode)
memerintahkan Arduino apakah pin akan diset
sbg digital input atau output. Mode dapat berupa
Input atau OUTPUT.
int digitalRead (int pin)
Membaca nilai dari pin digital. Nilai yg didapat
dapat berupa 1 atau 0.
void digitalWrite (int pin, int value)
Menulis nilai ke pin digital. Nilai yg ditulis dapat
berupa 1 atau 0.

Analog Input
int analogRead (int pin)
Membaca nilai dari pin analog. Nilai yg didapat
adalah antara 0 dan 1023.
void analogWrite (int pin, int value)
Menulis nilai analog ke pin. nilai yg ditulis antara
0 dan 255.

Pengetahuan Dasar
Komunikasi serial
padaArduino
Untuk mengirim data dari arduino ke PC dan
menerima data dari PC kita bisa menggunakan
berbagai cara salah satunya yg paling sederhana
adalah komunikasi Serial yg terdapat pada setiap
board Arduino.
Perlu kita ketahuai pemrograman sketch arduino
menggunakan gaya bahasa C tapi pada pembuatan
librarynya menggunakan C++ yg menerapkan
pemrograman Objek (Class).

Pemrograman code arduino (sketch) untuk komunikasi serial


menjadi mudah karena fungsi fungsi sudah tersedia dlm
class yg tersedia untuk komunikasi Serial . Instance dari class
untuk komunikasi serial (objek) sudah dibuatkan namanya
Serial .Untuk arduino yg mempunyai lebih dari 1 port serial
misal arduino mega256 nama objek untuk komunikasi
serialnya adalah Serial1, Serial2, Serial3.
Penulisan objek dan fungsi pada library arduino adalah :
namaobjek.namafungsi
contoh : Serial.read() , artinya kita memanggil fungsi read()
dari objek bernama Serial .
Data yg dikirim ke serial port akan dikirim ke bufer pengirim
(Tx bufer) begitupun data yg diterima adalah data yg
diambil dari bufer penerima (RX bufer).

Data yang dikirm dan diterima arduino dalam bentuk ASCII.


Misalnya program arduino mengirim huruf A maka akan dikirim
sebenarnyaadalah 1 byte code ascii yaitu 65 . Jika kita mengirim
angka 123 maka sebetulnya yg dikirm adalah 3 byte data ascii
yaitu 49, 48, dan 50 . Selengkapnya anda bisa lihat tabel ASCII
berikut :

Karena data yg diterima arduino juga dlm


bentuk ASCII (char) maka kita tdk bisa langsung
melakukan operasi matematika dari data
ASCIIpada program sketch arduino.
Data ASCII dari bufer serial harus dirubah dulu
ke bentuk numerik/bilangan (int). misalkan kita
menerima data 4 dan 3 makajika kita
langsung jumlahkan 3 + 4 = 103 , karena
sebenarnya kita menjumlahkan code ascii 3 =
51 dancode ascii 4 =52 (lihat tabel ASCII).

Untuk merubah data ascii ke data numerik


dengan cara yg cukup sederhana yaitu :
-untuk mendapatkan angka 0 dari ascii 0 dgn
cara 0- 48=0 (atau bisa juga ditulis 0-0=0)
-untuk mendapatkan angka 1 dari ascii 1 dgn
cara 1- 48=1 (atau bisa juga ditulis 1-0=1)
-dan seterusnya.
jadi kalau mau menjumlahkan data ascii 3 dan 4
yg kita terima dari RX Bufer maka code program
seharusnya adalah :
int hasil = (3 0) + (4 0) atau
int hasil = (3- 48) + (4-48) maka hasil berupa
bilangan integer 7.

Fungsi fungsi yg tersedia untuk komunikasi serial Arduino


if (Serial): Untuk mengecek apakah Port sudah siap
Serial.available() : Untuk mengecek apakah data sudah ada di bufer
penerima
Serial.begin() : untuk mengeset kecepatan transmisi data
serial.end() : Untuk menon-aktifkan pin rx dan tx sbg fungsi serial dan
kembali sbg pin I/O
Serial.find() : mencari string dlm bufer data
Serial.findUntil(): mencari bufer data sampai data dgn
panjang/terminator nya yg diberikan ditemukan
Serial.flush(): menunggu data terkirim semua
Serial.parseFloat(): mengambil data float pertama dari data di bufer
serial.
serial.parseInt():mengambil data integer pertama dari data di bufer
serial.
Serial.peek(): mengambil data berikutnya di bufer penerima
Serial.print() : mengirim data ASCII
Serial.println() : mengirimdata ASCII + CR,LF (kode enter)
Serial.read(): membaca data yg diterima
Serial.readBytes(): membaca data byte yg diterima
Serial.readBytesUntil()
Serial.setTimeout(): mengeset batas maksimum waktu tunggu(timeout)
transmisi data.

Sebelum kita memulai latihan pemrograman serial arduino


kita perlu tahu ttg menu serial Monitor yg tersedia spt
tampak pada gambar dibawah ini:

Gambar 1. Menu Serial Monitor


Serial Monitor digunakan untuk mentransfer data
dari PC ke Arduino board dan menerima data dari
arduino board.
Selain dengan tool serial monitor yg terdapat pada
IDE arduino anda juga bisa menggunakan tool serial
lainya seperti hyperterminal, putty dll untuk
mengirim dan menerima data pada PC Anda.

Langkah membuat program sketch komunikasi serial


1. set baud rate misal 9600 dgn fungsi serial.begin(9600)
dlm fungsi void setup(). Speed yg tersedia antara lain
300, 1200, 2400, 4800, 9600, 14400, 19200, 28800,38400,
57600, 115200 (liat dokumentasi tiap jenis arduino).
2. untuk menerima data cek apakah ada data di Rx Bufer
dgn fungsi serial.avalable()
jika data tersedia return value = true jika data kosong return
value = false.
if( serial.available() > 0)
3. mengambil data dari bufer penerima : serial.read() ,
return valuenya adalah 1 byte data pertama yg ada di RX
Bufer .
misal byte pertama RX bufer berisi char 2
maka char data = serial.read(); //data = 2 >
karakter
byte data = serial.read(); // data = 50 > numerik

4. Untuk mengirim data bisa menggunakan


serial.print(dataygdikirim) : mengirim data ascii
serial.println(dataygdikirim) , ditambahkan kode
enter (CR dan LF)
serial.write(dataygdikirim) : mengirim data byte
Contoh serial.print(A) akan mengirim huruf A
serial.print(65) akan mengirim 2 byte berisi code
Ascii 6 dan 5 (aktual yg dikirim 54 dan 53)
serial.write(65) akan mengirim 1 byte 65 (aktual
yg dikirim numerik 65)
serial.write(data) adalah pengganti
syntaxSerial.print(data, BYTE) versi sebelumnya.
Parameter data pada serial.write adalah angka 1
byte ( 0-255)

contoh program sketch sederhana menerima data kemudian data dikirim kembali

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

void setup()
{
Serial.begin(9600);
}

void loop()
{
if ( Serial.available())
{
char datachar = Serial.read();
}
delay(1000)

serial.print(datachar)// data yg diterima


dikirim kembali.

Contoh
-Mengirim data string/text apa
kabar
-Mengirim data bilangan/angka :
123

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

int angkaint = 123;


float angkafloat 123.5;
char datachar = 123;

void setup()
{
Serial.begin(9600); // set baudrate = 9600
}

void loop()
{
Serial.print("apa kabar"); // kirim string/text
Serial.println(angkaint); // kirim angka type integer 123
Serial.println(angkafloat); // kirim angka type float 123.5
Serial.println(datachar); // kirim code ascii 123 yaitu tanda kurung buka {
Serial.println(angkaint,HEX); // kirim angka dlm bentuk heksa , akan dikirim
7BH
Serial.println(angkaint,BIN); // kirim angka dlm bentuk biner , 0111 1011
}

-Menerima data bilangan ASCII


misal data yg datang misal
435
* Cara Pertama
karakter ditampung di array dan dirubah menjadi string
dgn menambahkan null 0 diakhir array( karena string
adalah sebuah array type char yg diakhiri dgn null).
kemudian array tsb /data string di konversi ke int dgn
fungsi atoi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

char arraychar[4];
int i=1;

void setup()
{
Serial.begin(9600);
}

void loop()
{
if ( Serial.available())
{
char datachar = Serial.read();
if(i>4 && isdigit(datachar)) //jika datachar adalah ASCII 0-9
{ arraychar[i++]=datachar; }
else arraychar[i]=0; // akhir dari sebauh string adalah null
(0)

int angka = atoi(arraychar);


}

Cara ke 2 : Loop
numerik = numerik * 10 + datachar;
karena datachar adalah kode ascii maka kita rubah ke int dgn
cara datachar-48 atau sama juga dgn datachar-'0'
jadi rumusnya
numerik = numerik * 10 + (datachar-'0');

Contoh Proses loop saat penerimaan data 435 , spt


tabel dibawah , jika data berupa /n maka loop selesai:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

void setup()
{
Serial.begin(9600);
}

void loop()
{
int numerik = 0;
if (Serial.available())
{ char datachar = Serial.read();

while (datachar != '\n')


{
if(isdigit(datachar))
{
numerik = numerik * 10 + (datachar - '0');
}
datachar = Serial.read();
}

int angkaditerima = numerik;


}

-Mengirim data berurutan


A,123,B,456
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

int bil1 = 123;


int bil2 = 456;

void setup()
{
Serial.begin(9600); // set baudrate = 9600
}

void loop()
{
Serial.print("A");
Serial.print(",");
Serial.print(123,DEC);
Serial.print(",");
Serial.println(345,DEC);
delay(1000); //delay looping 1 detik}

Menerima data berurutan :


123,456,789 /n
Pada contoh ini kita akan menggunakan serial.parseint()
untuk mengambil data berurutan yg dibatasi koma dan
diakhiri
1 /n void setup()
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

{
Serial.begin(9600);
}

void loop()
{

while (Serial.available() > 0)


{
int data1 = Serial.parseInt(); // ambil data ke-1

int data2 = Serial.parseInt(); // ambil data ke-2:

int data3 = Serial.parseInt(); // ambil data ke-3:



if (Serial.read() == '\n')
{
int jumlah = data1 +data2 + data3;
}
}
}

Menambahkan port serial pada pin I/O


Jika arduino yg kita miliki hanya punya 1 port
serial kita bisa merubah pin I/O yg manapun
menjadi Port serial tambahan .dengan bantuan
class SoftwareSerial. Tambahkan file header
SoftwareSerial.h pada sketch anda dan buat 1
buah objek SoftwareSerial untuk penambahan 1
port, pada contoh dibawah ini kita buat 1 objek
sofwareSerial dgn nama serialkedua.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

#include <SoftwareSerial.h>

SoftwareSerial Serialkedua(10, 11); // pin 10 untuk RX, pin 11 untuk


TX

void setup()
{

Serial.begin(96600);
Serialkedua.begin(9600);

void loop()
{

if (Serial.available())
serial.println("test dari port1");

if (Serialkedua.available())
Serialkedua.println("test dari port2");
}

menggunakan 3 buah port : Serial, port1


dan port2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

#include <SoftwareSerial.h>

SoftwareSerial port1(10,11); // software serial port1: TX = pin 10, RX = pin 11


SoftwareSerial port2(8,9); // software serial port2: TX = pin 8, RX = pin 9

void setup()
{
Serial.begin(9600);
port1.begin(9600);
port2.begin(9600);
}

void loop()
{

port1.listen();
while (port1.available() > 0)
{
char inByte = port1.read(); //baca port1 dan kirim ke serial
Serial.write(inByte);
}

port2.listen();
while (port2.available() > 0)
{
char inByte = port2.read(); //baca data port2 dan kirimke serial
Serial.write(inByte);
}

Anda mungkin juga menyukai