Program Sensor : Cara Menggabungkan 2 Program

Indobot Update

Oke gaess semuanya. Kali ini kita akan membahas penggabungan 2 program untuk pembacaan sensor hanya dengan menggunakan library masing-masing sensor. Caranya bagaimana nih? Penasaran?

Oke sebelumnya mari kita berkenalan dulu dengan sensor yang akan kita gunakan pada percobaan kali ini. Sensornya adalah sensor DHT11 dan sensor Ultrasonik. Sensor DHT11 adalah sensor yang dapat di gunakan untuk mengetahui suhu ruangan di sekitar sensor tersebut. Tidak hanya suhu, sensor ini juga dapat mengetahui persentase kelembaban ruangan juga. Pembacaan sensor ini hanya membutuhkan satu pin (Ada yang 2 pin sih, tapi kita pakai yang satu pin) untuk dua target. Lanjut ke sensor Ultrasonik. Sensor ultrasonik adalah sensor yang biasa di gunakan untuk mengukur jarak antara sensor dengan obyek. Sensor ini juga bisa di gunakan untuk pendeteksi kondisi ruang untuk robot agar dapat menghindarinya. Namun intinya sensor ini ada pada kemampuan membaca jarak.

baca juga : Library Arduino Tidak Hanya Sebagai Syarat Sketch

Library Arduino

Teman-teman sudah tau library kan ya? Inti dari library adalah sesuatu yang dapat di gunakan untuk membuat program terlihat lebih sederhana. Library biasanya di buat untuk mengakses suatu device. Cara penggunaannya adalah dengan memanggilnya menggunakan instruksi #include.

Pada percobaan kali ini, library yang akan kita gunakan adalah Library DHT Sensor untuk sensor DHT 11 dan library Newping untuk sensor ultrasonik. Bagi teman-teman yang belum memiliki library ini dapat kalian download di sini (sensor DHT) dan di sini (Newping).

baca juga : Dasar Kendali Motor DC Menggunakan Driver Motor L298N

Memasukkan Library

Masukkan library yang sudah kalian donwload dengan meng-extract library tersebut agar menjadi folder, yang kemudian dapat kalian copy ke document – arduino – libraries. Anda juga bisa dengan cara kedua yaitu masuk ke aplikasi Arduino IDE, kemudian pilih sketch – include library – manage libararies. Cari file .zip library yang sudah kalian download. Library sudah dimasukkan.

Konsultasikan project mu bersama Tutor Indobot Academy dengan cara registrasi melalui tombol di bawah!

Buka Examples

Langkah selanjutnya adalah buka examples anda dengan dengan klik file – examples – DHT sensor Library – DHTTester.

Setelah DHTTester sudah diklik, maka akan muncul program seperti berikut.

 
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

#include "DHT.h"

#define DHTPIN 2     // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

baca juga: Pengatur Suhu Ruangan Dengan DHT11 + Motor DC

Jika teman-teman merasa pusing melihatnya karena terlihat banyak dan kompleks, kita bisa menghapus bagian-bagian Comment (// atau /* . . . . */). Bagian ini tidak akan mempengaruhi program. Selain itu sesuaikan dengan pin yang kita gunakan, seperti #define DHTPIN A0 dan #define DHTTYPE DHT11.  Maka program dapat berubah menjadi seperti ini.

 

 
#include "DHT.h"
#define DHTPIN A0
#define DHTTYPE DHT11   

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHT11 test!"));
  dht.begin();
}
void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);                
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

Coba upload program di atas. Hasil dari program ini adalah seperti di bawah. Ditampilkan pada Serial Monitor.

Selanjutnya mari kita buka examples untuk sensor Ultrasonik. Caranya hampir sama, setelah kita sudah membuka bagian examples, buka NewPing – NewpingExample seperti berikut.

Maka dari examples tersebut menghasilkan program seperti berikut ini.

 
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
  delay(50);                     // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
}

Seperti biasa, kita dapat mengurangi comment, dan hal tidak penting lainnya. Sehingga dapat dimunculkan program seperti berikut. Jangan lupa untuk menyesuaikan pin untuk Echo dan Triggernya.

 

 
#include <NewPing.h>
#define TRIGGER_PIN  12 
#define ECHO_PIN     11  
#define MAX_DISTANCE 200

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

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

void loop() {
  delay(50); 
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm());
  Serial.println("cm");
}

 

Coba upload program ke arduino anda, kemudian cek hasilnya di serial monitor.

Penggabungan 2 Program

Penggabungan 2 program dapat dilakukan dengan tahapan berikut

  1. Gabungkan Library

Gabungkan library dari 2 program tersebut.

 
#include <NewPing.h>
#include "DHT.h"

Bisa diperhatikan bahwa penulisan library dari ke dua program di atas terlihat berbeda ya. Tapi dua-duanya dapat berfungsi dengan baik. Terbukti dari saat compiling dan upload yang berhasil. Hal itu menjelaskan bahwa penulisan library sudah benar. Tidak perlu diganti.

Gabungkan Inisialisasi

Gabungkan program inisialisasi dan berbagai tambahan lainnya (program di atas void setup).

 
#define TRIGGER_PIN  12 
#define ECHO_PIN     11  
#define MAX_DISTANCE 200
#define DHTPIN A0
#define DHTTYPE DHT11

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
DHT dht(DHTPIN, DHTTYPE);


 

Copy aja semua define yang ada di ke dua program. NewPing Sonar dan DHT itu juga perlu di copy semuanya ya. Jangan sampai ketinggalan. Itu sebenarnya adalah bentuk pemanggilan function yang sudah disediakan oleh library.

 

Gabungkan void Setup()

Gabungkan semua yang ada di dalam void setup dari 2 program di atas.

 
void setup() {
  Serial.begin(115200);
  Serial.println(F("DHT11 & Ultrasonic test!"));
  dht.begin();
}

 

Copy semua yang ada pada void setup. Pada serial begin, pilihlah yang digunakan paling besar. Sebenarnya pada program ini tidak perlu sebesar 115200. Namun sebagai contoh, jika teman-teman bertemu dengan hal seperti ini saat ingin menggabungkan 2 sensor, pilihlah yang terbesar untu menghindari error.

 

 
void loop() {
  delay(50); 
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);

    if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
    }

  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm());
  Serial.println("cm");
    Serial.print(F("Humidity: "));
  Serial.print(h);                
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

 

Kesimpulan

Sebagai saran, tempatkan semua program untuk pembacaan sensor di tempat paling atas di void loop. Setelahnya silakan dapat isi sesuai dengan yang ada pada void loop. Ambil saja seperlunya yang anda butuhkan dalam program.  Menghapus beberapa serial.print tidak membuat compiling error. Anda hanya menghilangkan pemberitahuan yang tidak anda butuhkan dalam program.

Berikut merupakan hasil dari penggabungan 2 program yang diambil dari examples.

Jika teman-teman ingin request program, dapat komentar di bawah ya.

Semangat Ngoding.

 

Bikin project tanpa ribet beli komponen sana-sini? Starter Kit Arduino/IoT bisa jadi solusi mu!

Klik Link di samping untuk klaim promo :  

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

4 pemikiran pada “Program Sensor : Cara Menggabungkan 2 Program”

  1. untuk menggabungkan sensor mpu6050 dengan sw420 bagaimana ya ? jadi kondisinya mpu akan membaca kemiringan kemudian sensor sw420 berfungsi sebagai penentu keluaran yang berupa suara

    Balas

Tinggalkan komentar

whatsapp whatsapp