Pernyataan IF sangat diperlukan untuk menangani masalah yang memerlukan pengambilan suatu keputusan.
Sebagai contoh, terdapat 2 pilihan antara menentukan LED merah yang di ON kan atau LED hijau yang di ON kan. Yang dimana itu berdasarkan suatu pengondisian.
Hal tersebut dapat diselesaikan dengan menggunakan statement IF.
Pernyataan IF dalam program Arduino IDE
- Bentuk sederhana dari statement IF
if (kondisi) statement
Pada bentuk seperti itu, bagian statment hanya akan dijalankan jika kondisi bernilai benar atau true.
- Bentuk if yang lain dengan else
Flow Chart if else
Contoh bentuk if else :
if (kondisi) statement_A else statement_B
Pada pengondisian seperti itu, statement_A dijalankan apabila kondisi bernilai benar (true). Adapun pernyataan_B pada kondisi else hanya akan dijalan jika kondisi bernilai salah (false).
- Bentuk lainnya apabila statement dibagian if atau else lebih dari satu harus gunakan tanda { dan }
if (kondisi) { statement_A1 statement_A2 statement_A3 } else { statement_B1 statement_B2 statement_B3 }
Yang harus menjadi perhatian yaitu keberadaan pasangan { dan } yang mengapit pernyataan. Apabila kondisi bernilai benar, maka akan diakses pada pernyataan A1 – A3. Dan apabila kondisi bernilai salah akan diakses pernyataan B1 – B3.
Operasional Relasional
Operator pembanding atau operasional relasional adalah operator yang digunakan dalam suatu ekspresi yang selalu menghasilkan nilai berupa benar atau salah.
6 operasional relasional yang tersedia seperti tabel dibawah ini
Operator Boolean
Operator Boolean adalah operator yang melibatkan operand bertipe boolean (nilai benar atau salah, yang diwakili oleh true atau false) yang tersedia berupa ” && ” (dibaca AND), ” || ” (dibaca OR), dan ” ! ” (dibaca NOT).
Ekspresi yang menggunakan && menghasilkan benar jika kedua operand bernilai benar. Sebaliknya untuk ekspresi yang menggunakan || menghasilkan salah hanya kalau kedua operand nya bernilai salah.
Tabel Kebenaran
Pernyataan Switch Case
Pernyataan switch berguna untuk menggantikan if bertingkat (if yang berada dalam if) yang melibatkan operator ==. Sebagai contoh, terdapat statement if sebagai berikut :
if (bilangan == 0) digitalWrite(LED_MERAH, HIGH); else if (bilangan == 1) digitalWrite(LED_HIJAU, HIGH); else digitalWrite(LED_MERAH, HIGH);
Pernyataan diatas dapat digantikan dengan switch case
Flow chart-nya seperti gambar dibawah ini :
Program diatas dapat diganti seperti program dibawah ini:
switch (bilangan) { case 0: digitalWrite(LED_MERAH, HIGH); break; case 1: digitalWrite(LED_HIJAU, HIGH); break; default: digitalWrite(LED_KUNING, HIGH); }
“break” digunakan untuk mengakhiri switch.
Contoh Project Arduino mengakses DHT11 Sensor Suhu dan Kelembaban dengan output Relay
Contoh peroject kali ini merupakan contoh yang simpel untuk penerapan statement IF dalam programming Arduino.
Bahan – bahan yang diperlukan antara lain :
- Arduino Mini
- Kabel mini USB
- Breadboard
- Sensor DHT11 – sensor suhu dan kelembaban
- Relay 1 channel 5vdc-220vac
- LCD 16×2 + i2c pcf8574
- Komputer + Arduino IDE
Wiring Schematic sederhana
Koding Program
/* --- www.nyebarilmu.com --- */ #include "DHT.h" //library sensor yang telah diimportkan #include <LiquidCrystal_PCF8574.h> #include <Wire.h> #define DHTPIN 2 //Pin apa yang digunakan #define DHTTYPE DHT11 // DHT 11 #define relaypin 11 LiquidCrystal_PCF8574 lcd(0x27); DHT dht(DHTPIN, DHTTYPE); byte pic_termo[8] = //icon for termometer { B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110 }; byte pic_humd[8] = //icon for water droplet { B00100, B00100, B01010, B01010, B10001, B10001, B10001, B01110, }; byte lonceng[8] = { B00100, B01110, B01110, B01110, B11111, B00000, B00100, B00000 }; byte lonceng1[8] = { B11011, B10001, B10001, B10001, B10001, B00000, B11111, B11011 }; void setup() { Serial.begin(9600); //baud komunikasi serial Serial.println("Pengujian DHT11!"); //penulisan di serial monitor pinMode(relaypin, OUTPUT); lcd.begin(16, 2); lcd.setBacklight(255); lcd.setCursor(00,00); lcd.print("TRIAL DHT11"); lcd.setCursor(00,1); lcd.print("Hobi Elektronika"); delay(2000); lcd.clear(); lcd.setCursor(00,00); lcd.print("Created by :"); lcd.setCursor(00,1); lcd.print("nyebarilmu.com"); delay(2000); lcd.clear(); lcd.createChar(1,pic_termo); lcd.createChar(2,pic_humd); lcd.createChar(3,lonceng); lcd.createChar(4,lonceng1); dht.begin(); //prosedur memulai pembacaan module sensor } void loop() { delay(2000); //menunggu beberapa detik untuk pembacaan //pembacaan sensor membutuhkan waktu 250ms //Pembacaan untuk data kelembaban float humidity_1 = dht.readHumidity(); //Pembacaan dalam format celcius (c) float celcius_1 = dht.readTemperature(); //pembacaan dalam format Fahrenheit float fahrenheit_1 = dht.readTemperature(true); //mengecek pembacaan apakah terjadi kegagalan atau tidak if (isnan(humidity_1) || isnan(celcius_1) || isnan(fahrenheit_1)) { Serial.println("Pembacaan data dari module sensor gagal!"); return; } float htof = dht.computeHeatIndex(fahrenheit_1, humidity_1); //Prosedur pembacaaan data indeks panas dalam bentuk fahreheit float htoc = dht.computeHeatIndex(celcius_1, humidity_1, false); //Prosedur pembacaaan data indeks panas dalam bentuk celcius //pembacaan nilai pembacaan data kelembaban Serial.print("Kelembaban: "); Serial.print(humidity_1); Serial.print(" %\t"); //pembacaan nilai pembacaan data suhu Serial.print("Suhu : "); Serial.print(celcius_1); //format derajat celcius Serial.print("°"); //simbol derajat Serial.print("C / "); Serial.print(fahrenheit_1); //format derajat fahrenheit Serial.print("°"); Serial.print("F"); lcd.setCursor (00,00); lcd.print(" TEMP & HUMD"); lcd.setCursor (00,1); lcd.write(1); lcd.setCursor (1,1); lcd.print(celcius_1); lcd.print((char)223); lcd.setCursor (9,1); lcd.write(2); lcd.setCursor (10,1); lcd.print(humidity_1); lcd.print("%"); //penggunaan pernyataan IF if (celcius_1>=36.0){ lcd.clear(); while(1){ float celcius_1 = dht.readTemperature(); lcd.setCursor (00,00); lcd.print("TEMP IS TOO HOT"); lcd.setCursor (00,1); lcd.write(1); lcd.setCursor (1,1); lcd.print(celcius_1); lcd.print((char)223); lcd.setCursor (9,1); lcd.print("FAN ON"); lcd.setCursor (8,1); lcd.write(3); delay(2000); lcd.setCursor (8,1); lcd.write(4); delay(2000); digitalWrite(relaypin, HIGH); if (celcius_1<=33) { digitalWrite(relaypin, LOW); lcd.clear(); break; } } } }
Dikondisikan dalam suatu ruangan tidak boleh suhu ruangannya melebihi 36°Celcius, apabila pada sensor mendeteksi suhu setting tersebut maka kipas blower akan ON menyala otomatis.
Dan apabila suhu sudah kembali normal pada angka 33°Celcius, maka kipas blower akan OFF.
Kipas blower disini dikendalikan menggunakan relay 5Vdc untuk kendali 220VAC 1 channel.
Nilai pembacaan sensor ditampilkan pada display LCD 16×2 dengan driver i2c pcf8574.
Video Tutorial menyusul