0% menganggap dokumen ini bermanfaat (0 suara)
46 tayangan27 halaman

Teori Program Ta Ows

Bahasa pemrograman Arduino menggunakan bahasa C sebagai dasarnya. Terdiri dari dua fungsi utama yaitu setup() dan loop(), dimana setup() untuk inisialisasi dan loop() untuk mengeksekusi kode berulang kali. Program Arduino juga menggunakan variable, operator, dan kontrol aliran seperti if, for untuk mengontrol aliran program.

Diunggah oleh

zulkifliarik77
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
46 tayangan27 halaman

Teori Program Ta Ows

Bahasa pemrograman Arduino menggunakan bahasa C sebagai dasarnya. Terdiri dari dua fungsi utama yaitu setup() dan loop(), dimana setup() untuk inisialisasi dan loop() untuk mengeksekusi kode berulang kali. Program Arduino juga menggunakan variable, operator, dan kontrol aliran seperti if, for untuk mengontrol aliran program.

Diunggah oleh

zulkifliarik77
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 27

TEORI TA

Bahasa Pemograman Arduino


Bahasa pemrograman Arduino pada dasarnya menggunakan bahasa pemograman C.
Bahasa C sendiri merupakan bahasa tingkat tinggi yang sangat populer dan banyak
digunakan oleh para programmer. Dengan demikian aturan penulisan dan penggunaan dari
bahasa Arduino akan sama dengan bahasa C. Untuk mempelajari lebih jauh lagi bahasa
pemograman Arduino dan perintah-perintah apa saja yang ada pada bahasa pemrograman
Arduino kamu bisa membuka disitus resmi Arduino Reference atau mengaksesnya dalam
bentuk aplikasi android kamu bisa download Arduino Language Reference.

Structure program
structure
Srtuktur dasar bahasa pemrograman Arduino sangat sederhana hanya terdiri dari dua
bagian. Dua bagian tersebut dapat juga disebut sebagai fungsi utama
yaitu setup() dan loop().

void setup( )
{
//Statement;
}

void loop( )
{
//Statement;
}
dimana setup() adalah bagian untuk inisialisasi yang hanya dijalankan sekali di awal
program, sedangkan loop() untuk mengeksekusi bagian program yang akan dijalankan
berulang-ulang untuk selamanya.

setup()
Fungsi setup() hanya di panggil satu kali ketika program pertama kali dijalankan. Ini
digunakan untuk pendefinisikan mode pin atau memulai komunikasi serial.
Fungsi setup() harus di ikut sertakan dalam program walaupun tidak ada statement yang
dijalankan.

void setup()
{
pinMode(13,OUTPUT); //mengset ‘pin’ 13 sebagai output
}
loop()
Setelah menjalankan fungsi setup() maka secara langsung akan melakukan
fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam
fungsi loop() terus menerus.

void loop()
{
digitalWrite(13, HIGH); //nyalakan ‘pin’ 13
delay(1000); //pause selama 1 detik
digitalWrite(13, LOW); //matikan ‘pin’ 13
delay(1000); ///pause selama 1 detik
}

function
Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai
statement yang akan di eksekusi ketika function tersebut di panggil. Fungsi
void setup() dan void loop() telah di bahas di atas dan pembuatan fungsi yang lain akan
di bahas selanjutnya.

type functionName(parameters)
{
//Statement;
}
Contoh:

int delayVal()
{
int v; //membuat variable ‘v’ bertipe integer
v = analogRead(pot); //baca harga potentiometer
v /= 4; //konversi 0-1023 ke 0-255
return v; //return nilai v
}
Pada contoh di atas fungsi tersebut memiliki nilai balik int (integer), karena kalau tidak
menghendaki adanya nilai balik maka type function harus void.

{ } curly braces
Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi. Apabila ketika
memprogram dan progremer lupa memberi curly brace tutup maka ketika di compile akan
terdapat laporan error.

type function()
{
statements;
}
; semicolon
Semua statement yang di tulis dalam block comments tidak akan di eksekusi dan tidak akan
di compile sehingga tidak mempengaruhi besar program yang di buat untuk di masukan
dalam board arduino.

int x = 13; //declares variable 'x' as the integer 13

/*…*/ blok comment


Semicolon harus di berikan pada setiap statement program yang kita buat ini merupakan
pembatas setiap statement program yang di buat.

/* this is an enclosed block comment


don't forget the closing comment
they have to be balanced!
*/

// line comment
Sama halnya dengan block comments, line coments pun sama hanya saja yang dijadikan
komen adalah perbaris.

//this is a single line comment

Variable
Variable adalah sebuah penyimpan nilai yang dapat digunakan dalam program. Variable
dapat di rubah sesuai dengan instruksi yang kita buat. Ketika mendeklarisikan variable
harus di ikut sertakan type variable serta nilai awal variable.

type variableName = 0;
Contoh:

//mendefinisikan sebuah variable bernama inputVariable dengan nilai


awal 0
int inputVariable = 0;

//menyimpan nilai yang ada di analog pin 2 ke inputVariable


inputVariable = analogRead(2);

Variable scope
Sebuah variable dapat di deklarasikan pada awal program sebelum void setup(), secara
local di dalam sebuah function, dan terkadang di dalam sebuah block statement
pengulangan. Sebuah variable global hanya satu dan dapat digunakan pada semua block
function dan statement di dalam program. Variable global di deklarasikan pada awal
program sebelum fungsi setup(). Sebuah variable local di deklarasikan di setiap block
function atau di setiap block statement pengulangan dan hanya dapat digunakan pada
block yang bersangkutan saja. Contoh penggunaan:

int value; //‘value’ adalah variable global dan dapat di gunakan pada
semua block funtion

void setup()
{
//no setup needed
}

void loop()
{
for (int i=0; i<20 code="" dalam="" dapat="" di="" f="" float=""
gunakan="" hanya="" i="" local="" pengulangan="" saja="" sebagai=""
variable="">

Data type
byte
type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte memiliki range
0 – 255.

byte biteVariable = 160; //mendeklarasikan ‘biteVariable’ sebagai type


byte

integer
Integer merupakan tipe data utama untuk menyimpan nilai bilangan bulat tanpa koma.
Penyimpanan integer sebesar 16-bit dengan range 32.767 sampai -32.768.

int integerVariable = 1500; //mendeklarasikan ‘integerVariable’ sebagai


type integer

long
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan
range 2.147.483.647 sampai -2.147.483.648.

long longVariable = 900000; //mendeklarasikan ‘longVariable’ sebagai


type long

float
Float adalah tipe data yang dapat menampung nilai decimal, float merupakan penyimpan
yang lebih besar dari integer dan dapat menyimpan sebesar 32-bit dengan range
3.4028235E+38 sampai -3.4028235E+38.

float floatVariable = 3.14; //mendeklarasikan ‘floatVariable’ sebagai


type float

array
Array adalah kumpulan nilai yang dapat di akses dengan nomor index, nilai yang terdapat
dalam array dapat di panggil dengan cara menuliskan nama array dan nomor index. Array
dengan index 0 merupakan nilai pertama dari array. Array perlu di deklarasikan dan kalau
perlu di beri nilai sebelum digunakan.

int myArray[] = {value0, value1, value2 . . . }


Contoh penggunaan aray:

int myArray[] = {2,4,6,8,10}


x = myArray[5]; //x sekarang sama dengan 10

Operator aritmetic
aritmetic
operator aritmatik terdiri dari penjumlahan, pengurangan, pengkalian, dan pembagian.

y = y + 3;
x = x - 8;
i = i * 5;
r = r / 9;
Dalam menggunakan operan aritmatik harus hati-hati dalam menentukan tipe data yang
digunakan jangan sampai terjadi overflow range data.

compound assignments
Compound assignments merupakan kombinasi dari aritmatic dengan sebuah variable. Ini
biasanya dipakai pada pengulangan.

x ++; //sama seperti x = x + 1 atau menaikan nilai x sebesar 1


x --; //sama seperti x = x - 1 atau mengurangi nilai x sebesar 1
x += y; //sama seperti x = x + y
x -= y; //sama seperti x = x – y
x *= y; //sama seperti x = x * y
x /= y; //sama seperti x = x / y
comparison
Statement ini membadingkan dua variable dan apabila terpenuhi akan bernilai 1 atau true.
Statement ini banyak digunakan dalam operator bersyarat.

x == y; //x sama dengan y


x != y; //x tidak sama dengan y
x < y; //x leboh kecil dari y
x > y; //x lebih besar dari y
x <= y; //x lebih kecil dari sama dengan y
x >= y; //x lebih besar dari sama dengan y

Logic operator
Operator logical digunakan untuk membandingkan dua expresi dan mengembalikan nilai
balik benar atau salah tergantung dari operator yang digunakan. Terdapat 3 operator logical
AND,OR, dan NOT, yang biasanya digunakan pada if statement.
Contoh penggunaan:

Logical AND

if(x>0 && x<5 apabila="" benar="" bernilai="" code="" kedua=""


operator="" pembanding="" terpenuhi="">
Logical OR

if(x>0 || y>0) //bernilai benar apabila salah satu dari operator


pembanding terpenuhi
Logical NOT

if(!x > 0) //benilai benar apabila ekspresi operator salah


Constants

Constants
Arduino mempunyai beberapa variable yang sudah di kenal yang kita sebut konstanta. Ini
membuat memprogram lebih mudah untuk di baca. Konstanta di kelasifikasi berdasarkan
group.

true/false
Merupakan konstanta Boolean yang mendifinisikan logic level. False dapat didefinisikan
sebagai 0 dan True sebagai 1.

if(b == TRUE);
{
//doSomething
}
high/low
Konstanta ini digunakan untuk menentukan kondisi pin pada level HIGH atau LOW ketika
membaca dan menulis dari/ke pin digital. HIGH didefinisikan sebagai logic 1, ON, atau 5 volt
sedangkan LOW sebagai logic 0, OFF, atau 0 volt.

digitalWrite(13, HIGH);

input/output
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin digital,
sebagai INPUT atau OUTPUT.

pinMode(13, OUTPUT);

Flow control
if
Operator if mengetes sebuah kondisi apakah sudah tercapai/benar atau belum,
dicontohkan seperti pengetesan nilai analog apakah sudah berada di bawah nilai yang kita
kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi baris program yang ada
dalam brackets kalau tidak terpenuhi maka akan melewati baris program yang ada dalam
brackets.

if(someVariable ?? value)
{
//DoSomething;
}

if....else
Operator if…else mengetes sebuah kondisi apabila tidak sesuai dengan kondisi maka
akan mengeksekusi baris program yang ada di else.

if(inputPin == HIGH)
{
//Laksanakan rencana A;
}
else
{
//Laksanakan rencana B;
}

for
Operator for digunakan untuk mengulang blok statement di dalam bracket, beberapa kali
sesuai dengan jumlah yang ditentukan. Setiap for() loop mempunyai tiga parameter dan
dipisahkan menggunakan titik koma (;):

for(initialization; condition; expression)


{
//doSomethig;
}
Contoh penggunaan:

for(index=0; index<=3; index++)


{
counter++;
}
1. index=0; Sesuatu yang dikerjakan sebelum dimulai: Membuat index = 0.
2. index<=3; Operasi logika yang dites, selama hasilnya benar (true) akan terus
looping: Jika index lebih kecil atau sama dengan 3, akan menjalankan kode yang ada di
dalam bracket {}. Ketika index = 4, akan keluar dari loop dan melanjutkan baris kode
selanjutnya di dalam sketch.

3. index++ Sesuatu yang dilakukan setelah menjalankan satu baris statement: Meletakan
"++" setelah sebuah variabel bermaksud menambahkan variabel tersebut dengan satu.
Dapat juga menggunakan "index = index + 1".

while
Operator while akan terus mengulang baris perintah yang ada dalam bracket sampai
ekspresi sebagai kondisi pengulangan benilai salah.

while(someVariable ?? value)
{
//doSomething;
}

do… while
Sama halnya dengan while() hanya saja pada operator do…while tidak melakukan
pengecekan pada awal tapi di akhir, sehingga otomatis akan melakukan satu kali baris
perintah walaupun pada awalnya sudah terpenuhi.

do
{
//doSomething;
}
while (someVariable ?? value);
Digital I/O
Board Arduino mempunyai jumlah pin yang berlabel digital D0 - D13 sebanyak 14 dengan
pengalamatnya 0 - 13. Namun apabila pin digital yang kita butuhkan masih kurang, kita
masih bisa menambahnya dengan menggunakan pin yang berlabel analog A0 - A5
difungsikan sebagai pin digital input/output dengan pengalamatnya 14 - 19. Ada saat
tertentu pin digital 0 dan 1 tidak bisa digunakan karena di pakai untuk komunikasi serial,
sehingga harus hati-hati dalam pengalokasian I/O.

pinMode(pin, mode)
Biasa digunakan dalam void setup() untuk mengkonfigurasi pin apakah
sebagai INPUT atau OUTPUT. Arduino digital pins secara default di konfigurasi sebagai input
sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode).

pinMode (pin, OUTPUT); //mengeset pin sebagai output


digitalWrite(pin, HIGH); //mengeset keluaran nilai HIGH (5 volt) pada
pin

digitalRead(pin)
Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.

value = digitalRead(pin); //mengeset ‘value’ sama dengan pin

digitalWrite(pin, value)
Digunakan untuk mengeset pin yang kita kehendaki dalam kondisi level
tegangan HIGH atau LOW (nyala atau mati). Pin digital arduino mempunyai 14 ( 0 – 13 ).

digitalWrite ( pin, HIGH ); //set pin ke kondisi HIGH

Analog I/O
Selain pin digital Arduino dilengkapi juga oleh pin analog yang berfungsi untuk membaca
input tegangan variabel antara 0 - 5 volt dengan resolusi ADC (Analog to Digital) 10-bit. Pada
Arduino ada 6 pin yang berlabel analog input dengan pengalamatan A0 - A5. Tidak seperti
pin digital yang dapat di fungsikan selain sebagai digital input dapat juga sebagai digital
output, namun pada pin analog hanya dapat berfungsi sebagai analog input saja, apabila
kamu ingin membuat Arduino mengeluarkan output tegangan analog kamu masih bisa
melakukannya dengan menggunakan pin digital yang berlabel PWM (3,5,6,9,10,11), sejatinya
tegangan analog yang dikeluarkan Arduino adalah dengan memanipulasi output digital
secara pulsa.
analogRead(pin)
Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada
analog pin (0 - 5). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai 1023.

value = analogRead(pin); //mengeset ‘value’ sama dengan nilai analog


pin

analogWrite(pin, value)
Mengirimkan nilai analog dengan metoda Pulse Width Modulation (PWM) ke pin yang
berlabel PWM (3,5,6,9,10,11). Nilai yang dapat digunakan adalah dari 0 - 255.

analogWrite(pin, value); //mengeluarkan nilai tegangan analog ke pin

Time
delay(ms)
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam
millisecond.

delay(1000); //menunggu selama satu detik

millis()
Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala.
Penapungnya harus long integer.

value = millis(); //set ‘value’ equal to millis()

Math
min(x,y)
Membadingkan dua variable dan akan mengembalikan nilai yang paling kecil.

value = min(value, 100); //set ‘value’ sebagai nilai yang paling kecil
dari kedua nilai

max(x,y)
Membadingkan dua variable dan akan mengembalikan nilai yang paling besar.
value = max(value, 100); //set ‘value’ sebagai nilai yang paling besar
dari kedua nilai

Random
randomSeed(seed)
Mengeset sebuah nilai sebagai titik awal fungsi random().

randomSeed(value); //mengeset 'value' sebagai random seed

random(max)

random(min,max)
Menghasilkan sebuah bilangan acak pada range yang di batasi oleh angka min dan max.

value = random(100, 200); //mengeset 'value' ke nilai acak antara 100


- 200

Serial
Serial.begin(rate)
Statement ini digunakan untuk mengaktifkan komunikasi serial dan mengatur baudrate.
bauderate yang standar biasa digunakan dengan komputer adalah 9600bps.

void setup()
{
Serial.begin(9600); //open serial port and set baudrate 9600 bps
}

Serial.println(data)
Mengirimkan data ke serial port, di ikuti oleh karakter carriage return dan line feed (CR dan
LF) atau yang kita kenal kode untuk Enter. Perintah ini mempunyai fungsi yang sama
dengan Serial.print() namun lebih sering digunakan karena setelah selesai data di
kirim di ikuti enter untuk data selanjutnya akan di tampilkan pada baris/alinea baru di
bawahnya sehingga bisa memudahkan dalam pembacaan data pada serial monitor.

Serial.println(100); //mengirimkan 100 dan diakhiri


Tipe data Menyimpan Memory Rentang
----------------------------------------------------------------------------------
boolean nilai kebenaran 1 byte true, false, 1, 0
byte bilangan bulat 1 byte 0 sampai 255
char bilangan bulat 1 byte 'A', 'B', …
int bilangan bulat 2 byte -32.768 sampai 32.768
unsigned int bilangan bulat 2 byte 0 sampai 65.535
long bilangan bulat 4 byte -2.147.483.648 sampai -2.147.483.647
unsigned long bilangan bulat 4 byte 0 sampai 4.292.967.295
float bilangan real 4 byte -3,4028235 x 10^38 sampai 3,4028235
x 10^38
double bilangan real 8 byte banyakkkk
EEPROM

Kita mungkin sudah mengenal apa fungsi dari EEPROM (Electrically Erasable
Programmable Read Only Memory) pada Mikrokontroler. EEPROM berguna untuk
menyimpan data yang tidak akan terhapus walaupun sumber daya diputuskan.
untuk beberapa penggunaan, Fungsi EEPROM seringkali digunakan untuk menyimpan data
username dan password, misalnya ketika kita membuat sebuah sistem keamanan. dalam
mikrokontroller Arduino kita mungkin lebih mengenal penggunaan EEPROM untuk
menyimpan data integer/angka, seperti penggunaan EEPROM.write atau EEPROM.update,
terdapat beberapa kekurangan bila kita menggunakan fungsi seperti ini (EEPROM.write /
EEPROM.update), yaitu nilai yang dapat disimpan hanya 3 digit angka atau lebih jelasnya
hanya dapat menangani nilai dari 0 sampai 255. karena nilai yang disimpan tersebut berupa
byte, sehingga EEPROM hanya dapat menyimpan data 0 sampai 255 byte.
jika kita ingin menyimpan data berupa username atau password, tentu kita akan
menggunakan karakter, bukan hanya angka saja. selain itu kita juga akan menggunakan lebih
dari 3 digit/karakter, misalnya untuk menyimpan nama saya ("Hasan"), saya membutuhkan
sedikitnya 5 karakter
untuk menangani permasalahan tersebut, kita dapat menggunakan perintah EEPROM.put dan
EEPROM.get, dengan perintah ini, kita dapat menyimpan beberapa karakter, fungsi ini dapat
kita gunakan ketika kita ingin membuat sebuah sistem keamanan sederhana, karena kita dapat
menyimpan username dan password dengan fungsi ini.
Program yang saya buat untuk mencoba fungsi ini adalah sebagai berikut

- Penggunaan Library EEPROM digunakan untuk memudahkan kita dalam melakukan


pemrograman, Library ini merupakan Library bawaan dari Arduino IDE, sehingga kita tidak
perlu menambahkan library tambahan.

- penulisan EEPROM.put dilakukan dengan cara EEPROM.put(alamat_EEPROM,


Varible/Data yang dimasukkan), sehingga program yang saya tulis adalah EEPROM.put (0,
username). data username yang saya buat berupa statik, yaitu Admin (dapat dilihat pada
bagian program String username = "Admin";).

- untuk membaca karakter yang terdapat pada EEPROM, kita dapat menggunakan perintah
EEPROM.get, dengan penulisan perintah secara umumnya adalah
EEPROM.get(alamat_EEPROM, Variable/Data yang akan dibaca); dalam contoh program
ini, saya menulisnya dengan EEPROM.get(0, username);.
penamaan variable yang digunakan pada EEPROM.get harus sama dengan varibale yang
digunakan pada EEPROM.put, dalam contoh program diatas, variable yang saya buat adalah
username.
Dasar Program

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().

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 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:

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 >=
1.1 Dasar-Dasar Mikrokontroler dan Arduino

Light Dependent Resistor atau LDR atau disebut juga Photoresistor merupakan salah
satu jenis reistor dimana besarnya hambatan/resistansinya berdasarkan intensitas cahaya yang
diterima. Nilai hambatan dari LDR akan besar apabila intensitas cahaya yang diterimanya
rendah. Hambatan dari LDR akan kecil apabila instensitas cahaya yang diterima tinggi.
Artinya nilai hambatan dari LDR berbanding terbalik dengan intensitas cahaya yang
diterimanya. Dalam kondisi terang (instensitas cahaya tinggi), nilai hambatan dari LDR dapat
mencapai 200 Kilo Ohm, sedangkan pada kondisi gelap (intensitas cahaya rendah) nilai
hambatannya menurun menjadi 500 Ohm.

LDR dapat diaplikasikan pada beberapa rangkaian elektronik, LDR banyak digunakan
pada lampu penerangan jalan sebagai pendeteksi/sensor cahaya. Pada kondisi terang, lampu
akan mati dan akan hidup kembali ketika kondisi malam hari atau kondisi gelap. Tidak hanya
itu, LDR juga biasa digunakan pada shutter kamera, alarm, lampu kamar tidur dan lain
sebagainya. Dalam menggunakan LDR dalam sebuah rangkaian menggunakan prinsip
pembagi tegangan seperti pada Gambar 5.2. Gambar 5.2 Rangkaian pembagi tegangan LDR
Ketika kondisi gelap, tegangan yang melewati LDR akan menjadi lebih rendah disebabkan
karena resistansi LDR besar, dan tegangan akan lebih tinggi ketika kondisi terang karena
resistansi LDR kecil. Perbedaan tegangan tersebut akan digunakan Arduino untuk
memberikan respon pada rangkaian lainnya, dalam hal ini akan digunakan untuk
menghidupkan LED. Pada project ini, kita akan memanfaatkan fungsi dari LDR itu sendiri
untuk dijadikan sebagai saklar LED otomatis. Ketika kondisi gelap/intensitas cahaya rendah,
LED akan hidup. Ketika kondisi terang/intensitas cahaya tinggi, LED akan mati. Untuk
membuat project tersebut, berikut ini adalah komponen yang dibutuhkan.
Seperti project sebelumnya, program ini diawali dengan inisialisai variabel yang yaitu
ledPin pada pin output 13 dan ldrPin pada pin analog A0.

Pada void setup merupakan bagian untuk inisialisasi mode pin sebagai input dan
output. Serial.begin berfungsi untuk membuka port data serial untuk komunikasi serial baik
mengirim atau menerima data dari serial. Nilai 9600merupakan baud rate yang diguanakan
untuk komunikasi serial.

Kode tersebut digunakan untuk membaca input analog dengan resolusi 10 bit, dalam
hal ini diinisialisasikan sebagai

Dilanjutkan dengan pengujian kondisi, jika inputanalog bernilai kurang dari sama
dengan 200 maka LED akan hidup (kondisi gelap). Apabila kita membuka jendela serial
monitor akan muncul Gelap, LED hidup : “nilai analog”.
Jika input analog lebih besar dari 200 maka LED akan mati (kondisi terang), dan pada
jendela serial monitor akan muncul Terang, LED mati :“nilai analog”. Fungsi yang ada
didalam loop akan terus bekerja secara terus menerus sampai Arduino dimatikan. Setiap
pernyataan dalam fungsi loop (dalam kurung kurawal) dilakukan satu per satu, langkah demi
langkah hingga bagian bawah fungsi tercapai, kemudian loop memulai lagi pada bagian atas
fungsi, dan seterusnya sampai Aduino mati atau tekan tombol reset

7.1 Modul LCD 16x2 dengan I2C

Konverter Pada bahasan sebelumnya hasil pengukuran ditampilkan di Serial Monitor


IDE Arduino, maka pada bahasan ini akan ditampilkan menggunakan LCD 16x2 yang sudah
dilengkapi dengan modul I2C Konverter. Modul ini berguna untuk memudahkan kita dalam
menggunakan LCD dimana pin yang dipakai hanyalah 4 saja.

I2C adalah modul LCD yang dikendalikan secara serial sinkron dengan protokol
I2C/IIC (Inter Integrated Circuit) atau TWI (Two Wire Interface). Normalnya, modul LCD
dikendalikan secara parallel baik untuk jalur data maupun kontrolnya. Namun, jalur parallel
akan memakan banyak pin di sisi kontroler. Modul LCD 16x2 mempunyai 16 pin interface
yaitu VSS VDD V0 RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK dimana 6 atau 7 pin
adalah pin digital. Berikut adalah rangkaian Modul LCD 16x2 tanpa modul I2C. Untuk
sebuah kontroller yang banyak mengendalikan banyak I/O, menggunakan jalur parallel
adalah solusi yang kurang tepat. Sebagai contoh, sebuah Arduino UNO memiliki pin digital
sebanyak 13 buah. Jika digunakan separuhnya untuk mengendalikan LCD berarti hanya ada
alternatif pin sekitar 6 atau 7 lagi untuk mengendalikan perangkat lainnya. Untuk itu perlu
digunakan jalur serial (I2C) menggunakan modul I2C konverter.
LCD mempunyai 16 pin Output yang bisa dihubungkan dengan pin LCD 16x2 secara
langsung (disolder permanen) dan memiliki 4 pin input (VCC, GND, SDA, SCL). Pada
project kali ini kita menggunakan modul I2C Konverter dengan tipe IC PCF8574T dengan
alamat LCD Address 16 kata dan 2 baris yaitu 0x27.

7.4 Program

Masukkan program berikut ini kedalam aplikasi IDE Arduino kemudian Upload ke Arduino
Uno menggunakan kabel USB Downloader

Penggunaan modul I2C konverter ini dibantu dengan adanya Library Wire.h yang
sudah tersedia di IDE Arduino. Library ini berfungsi untuk mengkonversi jalur paralel LCD
menjadi jalur serial I2C. Selain itu juga kita dapat menggunakan Library dari
LiquidCrystal_I2C.h agar lebih memudahkan kita dalam membuat sketch, sehingga kita
cukup mendefinisikan sebagai berikut.

Anda mungkin juga menyukai