kerja kedua metode tersebut adalah pengukuran dinamika sebaran neutron atau waktu hantaran listrik di dalam tanah akibat adanya sejumlah air Nadler et al.,
1991. Kendala yang dihadapi dalam memanfaatkan neutron probe dan TDR untuk memonitor fluktuasi kadar air tanah adalah harga kedua alat tersebut yang
sangat mahal. Oleh sebab itu, perlu dilakukan penelitian tentang sifat-sifat tanah lain yang dapat diukur sebagai penduga kadar air tanah.
Penelitian yang dilakukan Hermawan et al. 2000 menemukan adanya hubungan yang erat antara sifat-sifat dielektrik tanah seperti konduktivitas,
kapasitansi dan impendensi listrik pada suatu media berpori dengan kadar air. Kontribusi air tanah terhadap keragaman air tanah terhadap keragaman nilai
impendensi listrik, misalnya jauh lebih besar dibandingkan kontribusi dari kepadatan tanah yang sebenarnya menjadi aspek utama dari penelitian tersebut.
Air tanah cenderung meningkat dan sebaliknya udara di dalam pori cenderung menghambat laju konduktivitas listrik di dalam tanah, laju konduktivitas menurun
dengan semakin rendahnya kadar air tanah Kittel,1991. Fenomena tersebut sejalan dengan teori hubungan dielektrik dan air tanah yang dikembangkan
Friendman 1997.
2.2. Irigasi
Irigasi adalah usaha penyediaan dan pengaturan air untuk menunjang pertanian. Semua proses kehidupan di dalam tanah merupakan tempat media
pertumbuhan tanaman hanya dapat terjadi apabila ada air. Proses utama yang menciptakan kesuburan tanah atau sebaliknya yang mendorong degradasi tanah
hanya dapat berlangsung apabila terdapat air.
Universitas Sumatera Utara
Irigasi berarti mengalirkan air secara buatan dari sumber air yang tersedia kepada sebidang lahan untuk memenuhi kebutuhan tanaman. Dengan demikian
tujuan irigasi adalah mengalirkan air secara teratur sesuai kebutuhan tanaman pada saat persediaan lengas tanah tidak mencukupi untuk mendukung
pertumbuhan tanaman, sehingga tanaman bisa tumbuh secara normal. Pemberian air irigasi yang efisien selain dipengaruhi oleh tatacara aplikasi, juga ditentukan
oleh kebutuhan air guna mencapai kondisi air tersedia yang dibutuhkan tanaman.
2.3 Mikrokontroler
Mikrokontroler adalah sebuah sistem komputer fungsional dalam sebuah chip. Di dalamnya terkandung sebuah inti prosesor, memori sejumlah kecil
RAM, memori program, atau keduanya, dan perlengkapan input output. Dengan kata lain, mikrokontroler adalah suatu alat elektronika digital yang mempunyai
masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus, cara kerja mikrokontroler sebenarnya membaca dan menulis
data. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya.
Secara harfiahnya bisa disebut “pengendali kecil” dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen
pendukung seperti IC TTL dan CMOS dapat direduksidiperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini.
Arduino merupakan kit mikrokontroler yang bersifat Open-Source baik perangkat keras maupun perangkat lunaknya. Perangkat keras yang diprogram
menggunakan bahasa pemrogaman berbasis Wiring menyerupai C++ dengan
Universitas Sumatera Utara
beberapa penyederhanaan dan modifikasi. Untuk perangkat lunak IDE yang dibangun berbasis Proccessing. Arduino ditemukan dan dikembangkan pertama
kali di Ivrea, italia oleh Massimo Banzi dan David Cuertilles. Ide terciptanya Arduino didasari dari mahalnya komponen perangkat keras
elektronik yang tersedia. Hal ini menjadi penghambat utama para mahasiswa dan pelajar dalam bereksplorasi. Selain harga yang murah, kemudahan dan
fleksibilitas penggunaan menjadi pertimbangan oleh pengguna-pengguna Arduino masa kini. Pengguna tidak lagi terkendala waktu untuk mendalami elektronika
dan mikrokontroler. Pengguna juga tidak akan disulitkan dalam merancang suatu sistem eletktronika karena banyak komunitas yang menyediakan tutorial proyek
berbasis Arduino secara gratis di dunia maya. Munculnya Arduino menjadikannya sebagai tren teknologi yang
revolusioner. Arduino terbuka untuk semua orang yang ingin mengembangkan suatu sistem interaktif berbasis mikrokontroler, baik untuk kalangan mahasiswa,
pelajar, profesional bahkan pemula sekalipun. Pengguna dapat memiliki Arduino sesuai kebutuhannnya karena Arduino
dibuat dalam beberapa jenis diantaranya yaitu Arduino Diecimila, Duemilanove, UNO, Lenardo, Mega, Nano, Due, Yun dan berbagai jenis Arduino lainnya.
2.3.1 Arduino Leonardo
Arduino Leonardo adalah papan mikrokontroler berbasis ATmega32u4, seperti yang tampak pada Gambar 2.2. Arduino Leonardo memiliki 20 digital pin
inputoutput yang mana 7 pin dapat digunakan sebagai output PWM dan 12 pin sebagai input analog, 16 MHz kristal osilator, koneksi micro USB, jack power
Universitas Sumatera Utara
suplai tegangan, header ICSP, dan tombol reset. Ini semua yang diperlukan untuk mendukung mikrokontroler. Cukup dengan menghubungkannya ke komputer
melalui kabel USB atau power dihubungkan dengan adaptor AC-DC atau baterai untuk mulai mengaktifkannya.
Leonardo berbeda dari semua papan Arduino yang lainnya karena ATmega32u4 secara terintegrasi built-in telah memiliki komunikasi USB,
sehingga tidak lagi membutuhkan prosesor sekunder tanpa chip ATmega16U2 sebagai konverter USB-to-serial.
Hal ini memungkinkan Arduino Leonardo yang terhubung ke komputer digunakan sebagai mouse dan keyboard, selain bisa digunakan sebagai virtual
CDC serialCOM port. Adapun spesifikasi singkat mengenai Arduino Leonardo adalah sebagai berikut :
1. Mikrokontroler
: ATmega32U4 2.
Kapasitas memori program Flash Memory : 32 KB 4 KB sudah digunakan untuk bootloader
3. Kapasitas SRAM
: 2,5 KB 4.
Kapasitas NVRAM EEPROM: 1 KB dapat diakses menggunakan pustaka EEPROM
5. Kecepatan detak
: 16 MHz 6.
Tegangan Operasional : 5V TTL
7. Tegangan Catu Daya
: 7 - 12 Volt sekurang-kurangnya 6V, maksimum 20V
8. Jumlah pin digital IO
: 20 pin 9.
Jumlah pin PWM : 7 kanal
Universitas Sumatera Utara
10. Jumlah pin masukan analog ADC
: 12 kanal 11.
Maksimum arus per pin : 40 mA
12. Maksimum arus yang dapat ditarik dari pin 3v3
: 50 mA
Gambar 2.2 Arduino Leonardo Arduino Leonardo dalam penelitian ini telah dikemas dalam satu papan
modul bernama WiDO bersamaan dengan modul WiFi seperti yang ditunjukkan oleh Gambar 2.3 sehingga papan modul ini memudahkan proses integrasi modul
WiFi dengan Mikrokontroller Arduino.
Gambar 2.3 Papan Modul WiDO
Universitas Sumatera Utara
2.3.2 Pemetaan Pin Arduino Leonardo
Mikrokontroler yang digunakan pada Arduino Leonardo ini adalah Mikrokontroler ATMega32U4. Mikrokontroler ini menjadi komponen utama dari
sistem minimum Arduino Leonardo. Setiap pin mikrokontroler ATMega32U4 dipetakan sesuai dengan kebutuhan standarArduino pada umumnya. Pemetaan pin
pin mapping ATMega32U4 dapat dilihat pada Gambar 2.3 dan Tabel 2.1. Tabel 2.1 Daftar Pin Arduino Leonardo
Nomor Pin Nama Pin
Pemetaan Nama Pin 1
PE6 INT.6AIN0 Digital pin 7
2 UVcc
+5V 3
D- RD-
4 D+
RD+ 5
UGnd UGND
6 UCap
UCAP 7
VUSB VBus
8 SSPCINT0 PB0
RXLED 9
PCINT1SCLK PB1 SCK
10 PDIPCINT2MOSI PB2
MOSI 11
PDOPCINT3MISO PB3 MISO
12 PCINT7OCA0OC1CRTS
PB7 Digital pin 11
PWM 13
RESET RESET
14 Vcc
+5V 15
GND GND
16 XTAL2
XTAL2 17
XTAL1 XTAL1
18 OC0BSCLINT0 PD0
Digital pin 3 SCLPWM
Universitas Sumatera Utara
Nomor Pin Nama Pin
Pemetaan Nama Pin 19
SDAINT1 PD1 Digital pin 2 SDA
20 RX D1AIN1INT2 PD2
Digital pin 0 RX 21
TXD1INT3 PD3 Digital pin 1 TX
22 XCK1CTS PD5
TXLED 23
GND1 GND
24 AVCC
AVCC 25
ICP1ADC8 PD4 Digital pin 4
26 T1OC4DADC9 PD6
Digital pin 12 27
T0OC4DADC10 PD7 Digital Pin 6 PWM
28 ADC11PCINT4 PB4
Digital pin 8
29 PCINT5OC1AOC4BADC12
PB5 Digital Pin 9 PWM
30 PCINT6OC1BOC4BADC13
PB6 Digital Pin 10 PWM
31 OC3A0C4A PC6
Digital Pin 5 PWM 32
ICP3CLK0C4A PC7 Digital Pin 13 PWM
33 HWB PE2
HWB 34
Vcc1 +5V
35 GND2
GND 36
ADC7TDI PF7 Analog In 0
37 ADC6TDO PF6
Analog In 1 38
ADC5TMS PF5 Analog In 2
39 ADC4TCK PF4
Analog In 3 40
ADC1 PF1 Analog In 4
41 ADC0 PF0
Analog In 5 42
AREF AEF
43 GND3
GND 44
AVCC1 AVCC
Universitas Sumatera Utara
Gambar 2.4 Pemetaan Pin Arduino Leonardo
2.3.3 Memori
ATmega32u4 memiliki memori sebesar 32 KB 4 KB digunakan untuk bootloader. Juga memiliki 2,5 KB SRAM dan 1 KB EEPROM yang dapat
dibaca dan ditulis dengan perpustakaan EEPROM.
Universitas Sumatera Utara
2.3.4 Pin Input dan Output
Pada Arduino Leonardo, 20 pin digital IO dapat digunakan sebagai input atau output, menggunakan fungsi pinMode, digitalWrite, dan digitalRead.
Mereka beroperasi pada tegangan 5 volt. Setiap pin dapat memberikan atau menerima maksimum 40 mA dan memiliki resistor pull-up internal sebesar 20-50
kOhm yang terputus secara default. Selain itu, beberapa pin memiliki fungsi
khusus, yaitu:
1. Serial : Pin 0 RX dan pin 1 TX. Digunakan untuk menerima RX dan
mengirimkan TX data serial TTL menggunakan hardware ATmega32U4 yang memiliki kemampuan serial didalamnya. Perhatikan bahwa pada
Leonardo, kelas Serial mengacu pada komunikasi USB CDC; untuk TTL serial pada pin 0 dan 1, menggunakan kelas Serial 1.
2. TWI : Pin 2 SDA dan pin 3 SCL. Dukungan komunikasi TWI
menggunakan perpustakaan Wire. 3.
Eksternal Interupsi : Pin 3 interrupt 0, pin 2 interrupt 1, pin 0 interrupt 2, pin 1 interrupt 3 dan pin 7 interrupt 4. Pin ini dapat dikonfigurasi
untuk memicu sebuah interupsi pada nilai yang rendah, meningkat atau menurun, atau merubah nilai.
4. PWM : Pin 3, 5, 6, 9, 10, 11, dan 13. Menyediakan 8-bit output PWM
dengan fungsi analogWrite. 5.
SPI : Pin pada header ICSP ini mendukung komunikasi SPI menggunakan perpustakaan SPI. Perhatikan bahwa pin SPI tidak terhubung ke salah satu
pun pin digital IO karena yang terhubung langsung hanya pada Arduino Uno, Mereka hanya menyediakan konektor ICSP.
Universitas Sumatera Utara
Ini berarti bahwa jika Anda memiliki shield yang menggunakan SPI, tetapi tidak terdapat 6 pin konektor ICSP yang terhubung ke 6 pin ICSP header
Leonardo, maka shield tidak akan bekerja. 6.
LED : Pin 13. Tersedia secara built-in pada papan Arduino ATmega2560. LED terhubung ke pin digital 13. Ketika pin diset bernilai HIGH, maka
LED menyala ON, dan ketika pin diset bernilai LOW, maka LED padam OFF.
7. Input Analog : Pin A0-A5, Pin A6 - A11 pada pin digital 4, 6, 8, 9, 10,
dan 12. Leonardo memiliki 12 input analog, berlabel A0 sampai A11, yang semuanya juga dapat digunakan sebagai digital IO. Pin A0-A5
terdapat di lokasi yang sama seperti pada Arduino Uno; Pin input A6-A11 masing-masing ada pada digital IO pin 4, 6, 8, 9, 10, dan 12. Masing-
masing pin menyediakan resolusi 10 bit yaitu 1024 nilai yang berbeda. Secara default pin ini dapat diukurdiatur dari mulai Ground sampai
dengan 5 Volt, juga memungkinkan untuk mengubah titik jangkauan tertinggi atau terendah mereka menggunakan pin AREF dan fungsi
analogReference. Masih ada beberapa pin lainnya pada Arduino Leonardo, yaitu:
1. AREF : Referensi tegangan untuk input analog. Digunakan dengan fungsi
analogReference. 2.
RESET : Jalur LOW ini digunakan untuk me-reset menghidupkan ulang mikrokontroler. Jalur ini biasanya digunakan untuk menambahkan tombol
reset pada shield yang menghalangi papan utama Arduino.
Universitas Sumatera Utara
2.3.5. Sumber Daya
Arduino Leonardo dapat diaktifkan melalui koneksi USB mikro atau dengan catu daya eksternal. Sumber daya dipilih secara otomatis. Sumber daya
Eksternal non-USB dapat berasal baik dari adaptor AC-DC atau baterai. Adaptor dapat dihubungkan dengan mencolokkan steker 2.1 mm denan pusat-positif ke
jack power pada papan. Sumber tegangan dari baterai dapat dihubungkan ke header pin Gnd dan Vin pin sebagai konektor sumber daya tegangan papan.
Papan Arduino Leonardo dapat beroperasi dengan pasokan daya eksternal 6 Volt sampai 20 volt. Jika diberi tegangan kurang dari 7 Volt, maka, pin 5 Volt
mungkin akan menghasilkan tegangan kurang dari 5 Volt dan ini akan membuat papan menjadi tidak stabil. Jika sumber tegangan menggunakan lebih dari 12
Volt, regulator tegangan akan mengalami panas berlebihan dan bisa merusak papan. Rentang sumber tegangan yang dianjurkan adalah 7 Volt sampai 12 Volt.
Pin tegangan yang tersedia pada papan Arduino Leonardo adalah sebagai berikut: 1.
VIN : Adalah input tegangan untuk papan Arduino ketika menggunakan
sumber daya eksternal sebagai ‘saingan’ tegangan 5 Volt dari koneksi USB atau sumber daya ter-regulator lainnya. Anda dapat memberikan
tegangan melalui pin ini, atau jika memasok tegangan untuk papan melalui jack power, kita bisa mengaksesmengambil tegangan melalui pin ini.
2. 5V
: Tegangan listrik ter-regulator yang digunakan untuk daya mikrokontroler dan komponen lainnya pada papan Arduino. Tegangan
Universitas Sumatera Utara
dapat menggunakan pin VIN melalui regulator on-board, atau dipasok oleh USB atau power suplai lain dengan besar tegangan 5V ter-regulator.
3. 3V3
: Sebuah pin yang menghasilkan tegangan 3,3 Volt. Tegangan ini dihasilkan oleh regulator yang terdapat pada papan on-board. Arus
maksimum yang dihasilkan adalah 50 mA. 4.
GND : Pin Ground atau Massa. 5.
IOREF: Pin ini pada papan Arduino berfungsi untuk memberikan referensi tegangan yang beroperasi pada mikrokontroler atau VCC untuk papan.
Pin ini bertegangan 5V pada Leonardo.
2.3.6. Arduino IDE
Arduino leonardo dapat diprogram dengan perangkat lunak Arduino. IDE Arduino adalah software yang sangat canggih ditulis dengan menggunakan Java.
Pada Gambar 2.4 IDE Arduino terdiri dari: 1.
Editor program, sebuah window yang memungkinkan pengguna menulis dan mengeditprogram dalam bahasa processing.
2. Compiler, sebuah modul yang mengubah kode program bahasa
processing menjadi kode biner. Bagaimanapun sebuah mikrokontroler tidak akan bisa memahami bahasa processing. Yang bisa dipahami oleh
mikrokontroler adalah kode biner. Itulah sebabnya compiler diperlukan dalam hal ini.
3. Uploader, sebuah modul yang memuat kode biner dari komputer ke dalam
memory didalam papan Arduino.
Universitas Sumatera Utara
Sebuah kode program Arduino umumnya disebut dengan istilah sketch. Kata “sketch” digunakan secara bergantian dengan “kode program” dimana keduanya
memiliki arti yang sama.
Gambar 2.5 Tampilan Arduino IDE
2.4. Komunikasi Serial
Kemampuan untuk bisa melakukan komunikasi data antara 2 atau lebih peralatan elektronik adalah hal yang sangat penting yang harus dimiliki oleh
sebuah mikrokontroler. Dan yang lebih penting lagi, kemampuan komunikasi tersebut tidak boleh sampai mengurangi fungsi dari mikrokontroler itu sendiri.
Ada 2 jenis komunikasi data yang bisa dilakukan oleh mikrokontroler, yaitu komunikasi parallel dan komunikasi serial. Komunikasi parallel memiliki
kelebihan dari sisi kecepatan transfer data, namun efisiensi penggunaan pin dari mikrokontroler juga menjadi berkurang.
Saat ini ada banyak jenis kemampuan komunikasi serial yang dimiliki oleh mikrokontrole, terutama oleh mikrokontroler arduino. Arduino Leonardo,
memiliki 4 buah port komunikasi serial yang bisa digunakan oleh user. Semua
Universitas Sumatera Utara
port komunikasi serial ini bisa digunakan secara independen, artinya bisa digunakan satu per satu ataupun digunakan keseluruhan secara bersama.
Komunikasi serial yang dimiliki oleh arduino bisa kita manfaatkan untuk berkomunikasi dengan Personal Computer, Bluetooth Modul, Wifi atau bahkan
dengan Arduino yang lain. Yang perlu menjadi catatan utama adalah, jika port dari arduino mikrokontroler sudah difungsikan sebagai sarana komunikasi serial,
maka port tersebut tidak dapat difungsikan sebagai port inputoutput digital.Ada 5 Fungsi utama dalam proses komunikasi serial oleh Arduino :
1. Fungsi Transmit Data – lebih dikenal dengan fungsi Tx
2. Fungsi Receiving Data – lebih dikenal dengan fungsi Rx
3. Fungsi Grounding System Komunikasi Serial – Atau GND
4. Kecepatan Transfer Data – lebih dikenal dengan Baudrate.
5. Format Data – biasa digunakan 8 bit data, No Parity, dan 1 bit untuk stop
bit Sebelum menjalankan perintah pengiriman data, maka pengguna
diharuskan untuk melakukan setting dari baudrate. Karena baudrate yang berbeda antara 2 peralatan komunikasi, akan menyebabkan sistem menerima data yang
salah. Secara default hampir keseluruhan mikrokontroler menggunakan format komunikasi serial dengan data 8 bit data, No Parity, dan 1 bit untuk stop
bit.Software Arduino, menyediakan perintah khusus untuk prosess setting baudrate yaitu :Serial.begin9600;maka software Arduino akan menterjemahkan
perintah tersebut menjadi : 1.
Baudrate komunikasi serial adalah 9600 bps 2.
8 bit data, No Parity, 1 bit stop
Universitas Sumatera Utara
2.4.1. Perintah Mengirim Data
Ada 3 jenis perintah untuk proses pengiriman data dalam Arduino yaitu : 1.
print; 2.
println; 3.
write; Perintah print dan println hampir sama fungsi, hanya saja perintah
prinln dilengkapi dengan carriage return dan baris baru pada akhir pengiriman atau yang lebih dikenal dengan linefeed dan new line command. Sedangkan
perintah write sudah hampir tidak pernah digunakan. Anda dapat menambahkan parameter didalam kurung dari masing-masing perintah tersebut, seperti data yang
akan dikirim ataupun isi dari variable data yang akan dikirim melalui port serial.
2.4.2. Perintah Menerima Data
Untuk menerima datamengambil data yang ada di Buffer serial dari Arduino, bisa menggunakan 2 perintah berikut :
1. read;
2. readbytes;
Perintah read biasa digunakan jika data yang akan diambil bertipe data string, sedangkan perintah readbyte digunakan jika data bertipe bilangan dengan
tipe data byte. Anda bisa menambahkan variable data dalam perintah ini untuk mengidentifikasi serial port yang akan baca datanya.
Universitas Sumatera Utara
2.4.3. Perintah Recheck Data
Selain perintah mengirim dan menerima data, Arduino juga menyediakan perintah untuk recheck apakah data yang diinginkan siap diambil di Buffer serial
ataukah tidak. Perintah tersebut antara lain adalah : 1.
available; 2.
find;
2.5. Bahasa Pemograman C
Bahasa C dikembangkan pada Lab Bell pada tahun 1978, oleh Dennis Ritchi dan Brian W. Kernighan. Pada tahun 1983 dibuat standar C yaitu stnadar
ANSI American National Standards Institute , yang digunakan sebagai referensi dari berbagai versi C yang beredar dewasa ini termasuk Turbo C. Dalam
beberapa literature, bahasa C digolongkan bahasa level menengah karena bahasa C mengkombinasikan elemen bahasa tinggi dan elemen bahasa rendah.
Kemudahan dalam level rendah merupakan tujuan diwujudkanya bahasa C. Pada tahun 1985 lahirlah pengembangan ANSI C yang dikenal dengan C++
diciptakan oleh Bjarne Struostrup dari AT TLab. Bahasa C++ adalah pengembangan dari bahasa C. Bahasa C++ mendukung konsep pemrograman
berorientasu objek dan pemrograman berbasis windows. Sampai sekarang bahasa C++ terus brkembang dan hasil
perkembangannya muncul bahasa baru pada tahun 1995 merupakan keluarga C dan C++ yang dinamakan java. Istilah prosedur dan fungsi dianggap sama dan
disebut dengan fungsi saja.
Universitas Sumatera Utara
Hal ini karena di C++ sebuah prosedur pada dasanyaadalah sebuah fungsi yang tidak memiliki tipe data kembalian void. Hingga kini bahasa ini masih populer
dan penggunaannya tersebar di berbagai platform dari windows samapi linux dan dari PC hingga main frame.
Arduino sendiri menggunakan bahasa C, walaupun banyak sekali terdapat bahasa pemrograman tingkat tinggi high level language seperti pascal,
basic,cobol, dan lainnya.Para programer profesional masih tetap memilih bahasa C sebagai bahasa yang lebih unggul, berikut alasan-alasannya:
1. Bahasa C merupakan bahasa yang powerful dan fleksibel yang telah
terbukti dapat menyelesaikan program-program besar seperti pembuatan sistem operasi, pengolah Gambar seperti pembuatan game dan juga
pembuatan kompilator bahasa pemrograman baru. 2.
Bahasa C merupakan bahasa yang porTabel sehingga dapat dijalankan di beberapa sistem operasi yang berbeda. Sebagai contoh program yang kita
tulis dalam sistem operasi windows dapat kita kompilasi didalam sistem operasi linux dengan sedikit ataupun tanpa perubahan sama sekali.
3. Bahasa C merupakan bahasa yang sangat populer dan banyak digunakan
oleh programer berpengalaman sehingga kemungkinan besar library pemrograman telah banyak disediakan oelh pihak luarlain dan dapat
diperoleh dengan mudah. 4.
Bahasa C merupakan bahasa yang bersifat modular, yaitu tersusun atas rutin-rutin tertentu yang dinamakan dengan fungsi function dan fungsi-
Universitas Sumatera Utara
fungsi tersebut dapat digunakan kembali untuk pembuatan program- program lainnya tanpa harus menulis ulang implementasinya.
5. Bahasa C merupakan bahasa tingkat menengah middle level language
sehingga mudah untuk melakukan interface pembuatan program antar muka ke perangkat keras.
6. Struktur penulisan program dalam bahasa C harus memiliki fungsi utama,
yang bernama main. Fungsi inilah yang akan dipanggil pertama kali pada saat proses eksekusi program. Artinya apabila ada fungsi lain selain fungsi
utama, maka fungsi lain tersebut baru akan dipanggil pada saat digunakan. Kekurangan Bahasa C, yaitu :
1. Banyaknya operator serta fleksibilitas penulisan program kadangkadang
membingungkan pemakai. 2.
Bagi pemula pada umumnya akan kesulitan menggunakan pointer.
2.5.1. Struktur Bahasa C
Program bahasa C tersusun atas sejumlah blok fungsi. 1.
Setiap fungsi terdiri dari satu atau beberapa pernyataan untuk melakukan suatu proses tertentu.
2. Tidak ada perbedaan antara prosedur dan fungsi.
3. Setiap program bahasa C mempunyai suatu fungsi dengan nama “main”
Program Utama. 4.
Fungsi bisa diletakkan diatas atau dibawah fungsin “main”. 5.
Setiap statemen diakhiri dengan semicolon titik koma.
Universitas Sumatera Utara
2.5.2. Pengenal
Pengenal identifier merupakan sebuah nama yang didefenisikan oleh pemrograman untuk menunjukkan indetitas dari sebuah konstanta, variable fungsi,
label atau tipe data khusus. Pemberian nama sebuah pengenal dapat ditentukan bebas sesuai keinginan pemrogram tetapi harus memenuhi atura berikut :
1. Karakter pertama tidak boleh menggunakan angka.
2. Karakter kedua dapat berupa huruf, angka, atau garis bawah.
3. Tidak boleh menggunakan spasi. Bersifat Case Sensitive, yaitu huruf
kapital dan huruf kecil dianggap berbeda. 4.
Tidak boleh mengunakan kata – kata yang merupakan sitaks maupun operator dalam pemrograman C, misalnya : Void, short, const, if, static,
bit, long, case, do, switch dll.
2.5.3. Tipe Data
Macam-macam tipe data pada bahasa C seperti yang terlihat pada Tabel 2.2, yaitu :
1. Tipe Data Karakter
Sebuah karakter, baik itu berupa huruf atau angka dapat disimpan pada sebuah variabel yang memiliki tipe data char dan unsigned char. Besarnya
data yang dapat disimpan pada variabel yang bertipe data char adalah -127 - 127. Sedangkan untuk tipe data unsigned char adalah dari 0 - 255. Pada
Universitas Sumatera Utara
dasarnya setiap karakter memiliki nilai ASCII, nilai inilah yang sebetulnya disimpan pada variabel yang bertipe data karakter ini.
2. Tipe Data Bilangan Bulat
Tipe data bilangan bulat atau dapat disebut juga bilangan desimal merupakan sebuah bilangan yang tidak berkoma. Pada bahasa C terdapat
bermacam-macam tipe data yang dapat kita gunakan untuk menampung bilangan bulat. Kita dapat menyesuaikan penggunaan tipe data dengan
terlebih dahulu memperhitungkan seberapa besar nilai yang akan kita simpan. Contohnya seperti berikut, kiata akan melakukan operasi
penjumlahan nilai 300 dan 100 dan hasilnya akan disimpan pada variabel c. Jika dilihat, hasil dari penjumlahan tersebut nilainya akan lebih besar
dari 255 dan nilainya pasti positif, oleh karena itu sebaiknya kita menggunakan tipe data unsigned int. Namun berbeda halnya jika saya
ingin melakukan operasi pengurangan -5 - 300, jika dilihat hasilnya akan negatif maka selayaknya digunakan variabel dengan tipe data int.
3. Tipe Data Bilangan Berkoma
Pada bahasa C terdapat dua buah tipe data yang berfungsi untuk menampung data yang berkoma. Tipe data tersebut adalah float dan
double. Double lebih memiliki panjang data yang lebih banyak dibandingkan float. Tipe data double dapat digunakan jika kita
membutuhkan variabel yang dapat menampung tipe data berkoma yang bernilai besar.
Universitas Sumatera Utara
Tabel 2.2 Tipe Data Tipe
Lebar Jangkauan Nilai
int 16 bit
-32768 sd 32767 unsigned int
16 bit 0 sd 65535
long int 32 bit
-2147483648 sd 2147483649 unsigned long int
32 bit 0 sd 4294967296
float 32 bit
3.4E-38 sd 3.4E+38 double
64 bit 1.7E-308 sd 1.7E+308
char 8 bit
-128 sd 127 unsigned char
8 bit sd 255
2.5.4. Konstanta Dan Variabel
Konstanta dan variable merupakan sebuah tempat untuk menyimpan data yang berada di dalam memori. Konstanta berisi data yang nilainya tetap dan tidak
dapat diubah selama program dijalankan, sedangkan variable berisi data yang bisa berubah nilainya pada saat program dijalankan.
2.5.5. Identifier
Universitas Sumatera Utara
Identifier atau nama pengenal adalah nama yang ditentukan sendiri oleh pemrogram yang digunakan untuk menyimpan nilai, misalnya nama variable,
nama konstanta, nama suatu elemen misalnya: nama fungsi, nama tipe data, dll.
Identifier punya ketentuan sebagai berikut : 1.
Maksimum 32 karakter bila lebih dari 32 karakter maka yang
diperhatikan hanya 32 karakter pertama saja.
2. Case sensitive: membedakan huruf besar dan huruf kecilnya.
3. Karakter pertama harus karakter atau underscore _ . selebihnya boleh
angka.
4. Tidak boleh mengandung spasi atau blank.
5. Tidak boleh menggunakan kata yang sama dengan kata kunci dan fungsi.
Bahasa C merupakan bahasa prosedural yang menerapkan konsep runtutan program dieksekusi per baris dari atas ke bawah secara berurutan, apabila
fungsi-fungsi lain tersebut dituliskan dibawah fungsi utama, maka harus menuliskan bagian prototipe prototype, hal ini dimaksudkan untuk mengenalkan
terlebih dahulu kepada kompiler daftar fungsi yang akan digunakan di dalam program. Namun apabila fungsi-fungsi lain berada diatas atau sebelum fungsi
utama, maka bagian prototipe tidak perlu dituliskan diatas. Djuandi, Feri. 2011.Selain itu dalam bahasa C juga dikenal file header, biasa ditulis dengan
ekstensi h.h, adalah file bantuan yang yang digunakan untuk menyimpan daftar-daftar fungsi yang akan digunakan dalam program.
Universitas Sumatera Utara
2.6. Grove Moisture Sensor SEN0100
Sensor kelembaban tanah merupakan sensor yang mampu mendeteksi intensitas air di dalam tanah moisture. Seperti tampak padaGambar 2.5sensor ini
terdiri dua probe untuk melewatkan arus melalui tanah, kemudian membaca resistansinya untuk mendapatkan nilai tingkat kelembaban. Semakin banyak air
membuat tanah lebih mudah menghantarkan listrik resistansi kecil, sedangkan tanah yang kering sangat sulit menghantarkan listrik resistansi besar. Kedua
probe ini merupakan media yang akan menghantarkan tegangan analog yang nilainya relatif kecil.
Gambar 2.6 Grove Moisture Sensor SEN0100 Sensor kelembaban ini dapat digunakan untuk mendeteksi kelembaban
tanah atau kandungan air di dalam tanah di sekitar sensor. Sensor ini sangat mudah digunakan yaitu dengan memasukkan ke dalam tanah pada kedalaman 1-5
cm dan kemudian membaca data hasil pengukuran sensor. Spesifikasi sensor ini dilihat pada Tabel 2.3.
Tabel 2.3 Spesifikasi Grove Moisture Sensor SEN0100 Item
Parameter Min Khas Maks Satuan
Tegangan -
3.3 ~
5 V
Universitas Sumatera Utara
Arus -
~ 35
mA Nilai Output
Sensor di tanah kering ~
300 Sensor di dalam tanah lembab 300
~ 700
Sensor dalam air 700
~ 950
2.7. LCD Liquid Crystal Display