Seringkali kita membutuhkan pengukuran cahaya untuk mengetahui seberapa terang cahaya dalam ruangan kita. Hal ini penting, misalnya, untuk kebutuhan pencahayaan yang diperlukan untuk pemotretan, kebutuhan pencahayaan tanaman yang ada di dalam ruangan, atau bahkan menyalakan lampu secara otomatis jika cahaya kurang dari batas tertentu.
Salah satu sensor yang bisa mengukur intensitas cahaya adalah MAX 44009, sebuah sensor berukuran kecil namun memiliki kemampuan yang istimewa. MAX 44009 dibuat oleh Maxim Integrated.
Video ini merupakan video tutorial sederhana mengenai MAX 44009. Pengukuran dilakukan berdasarkan pengaturan default dari sensornya. Hasil pengukuran disajikan melalui Serial Monitor dan LCD 16×2 I2C.
Video Tutorial
Kode Program Sensor Cahaya MAX44009 dimodifikasi oleh Protus Tanuhandaru
// ORIGINAL FILE: max44009_setManualMode.ino // AUTHOR: Rob Tillaart // VERSION: 0.1.0 // PURPOSE: demo of max44009 library // DATE: 2020-01-30 // // Released to the public domain // // Modified by Protus Tanuhandaru // www.progresstech.co.id #include <Wire.h> // Memanggil library Wire #include <Max44009.h> // Memanggil library MAX44009 #include <LiquidCrystal_I2C.h> // Memanggil library LCD dengan modul I2C Max44009 cahaya(0x4A); //Membuat variabel untuk MAX44009 LiquidCrystal_I2C lcd(0x27, 20, 4); // Mengatur alamat LCD dan dimensi LCD, yaitu 16 kolom dan 2 baris String hasilCahaya; // Variabel untuk menyimpan hasil pengukuran yang memiliki satuan unit cahaya lux (lx) uint32_t lastDisplay = 0; // Membuat variabel unsigned integer 32 bit void setup() { Wire.begin(); // Menginisiasi Wire Wire.setClock(100000); // Menginisiasikan frequency clock komunikasi I2C dalam satuan Hertz lcd.begin(); // Menginisiasikan LCD lcd.backlight(); // Menghidupkan backlight lcd.setCursor(0, 0); // Menempatkan posisi cursor pada baris 0 dan kolom 0 lcd.print("PROGRESSTECH"); // Menulis konten lcd.setCursor(0, 1); // Menempatkan posisi cursor pada baris 1 dan kolom 0 lcd.print("Protus"); // Menulis konten Serial.begin(9600); //Menginisiasikan setup kecepatan komunikasi delay(1000); } void loop() { uint32_t interval = 1000; // Membuat variabel unsigned integer 32 bit if (millis() - lastDisplay >= interval) { lastDisplay += interval; float ukurCahaya = cahaya.getLux(); // Mendapatkan hasil pengukuran dari sensor int err = cahaya.getError(); // Mendapatkan status error dalam pengukuran intensitas cahaya if (err != 0) { Serial.print("Error:\t"); // Menampilkan konten melalui serial monitor Serial.println(err); // Menampilkan pesan error apabila pengukuran gagal dilakukan hasilCahaya = "Error " + String(err); } else { Serial.print("Cahaya:\t"); // Menampilkan konten melalui serial monitor Serial.print(ukurCahaya); // Menampilkan konten hasil pengukuran melalui serial monitor Serial.println(" lx"); // Menampilkan satuan unit hasil pengukuran hasilCahaya = String(ukurCahaya) + " lx"; // Menempatkan hasil pengukuran pada variabel } lcd.clear(); // Menghapus konten LCD lcd.setCursor(0, 0); // Menempatkan posisi cursor pada baris 0 dan kolom 0 lcd.print("Cahaya :"); // Menulis konten pada LCD lcd.setCursor(0, 1); // Menempatkan posisi cursor pada baris 1 dan kolom 0 lcd.print(hasilCahaya); // Menulis konten hasil pengukuran pada LCD } }
Kode Program Sensor Cahaya MAX44009 Milik Rob Tillaart
// // FILE: max44009_test01.ino // AUTHOR: Rob Tillaart // VERSION: 0.1.2 // PURPOSE: demo of max44009 library // DATE: 2015-08-06 // // Released to the public domain // #include "Wire.h" #include "Max44009.h" Max44009 myLux(0x4A); uint32_t lastDisplay = 0; void setup() { Serial.begin(115200); Serial.print("Start max44009_test01 : "); Serial.println(MAX44009_LIB_VERSION); Wire.begin(); Wire.setClock(100000); } void loop() { uint32_t interval = 1000; if (millis() - lastDisplay >= interval) { lastDisplay += interval; float lux = myLux.getLux(); int err = myLux.getError(); if (err != 0) { Serial.print("Error:\t"); Serial.println(err); } else { Serial.print("lux:\t"); Serial.println(lux); } } } // END OF FILE
Sumber Library dari Rob Tillaart
https://github.com/RobTillaart/Max44009