Pernyataan IF dalam programming Arduino dan Contoh Project

Pernyataan IF dalam programming Arduino dan Contoh Project

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

flowchart if else statement

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

Operand Relational pernyataan if

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

TABEL KEBENARAN OPERAND Boolean

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 :

Pernyataan IF - Flow Chart Switch Case Arduino

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 :

  1. Arduino Mini
  2. Kabel mini USB
  3. Breadboard
  4. Sensor DHT11 – sensor suhu dan kelembaban
  5. Relay 1 channel 5vdc-220vac
  6. LCD 16×2 + i2c pcf8574
  7. Komputer + Arduino IDE

Wiring Schematic sederhana

project monitoring suhu dan kelembaban dengan pengondisian pernyataan IF

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

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *