kita akan 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.
MAX44009 ambient light sensor memiliki I2C output dan konsumsi arus sangat kecil (<1uA, sensor ambient light dengan arus terkecil!) sehingga sangat cocok untuk aplikasi portabel menggunakan baterai. Sangat umum dipakai di industri smartphones, notebooks, dan wearables.
Rentang dinamis 22-bit ultra lebar dari 0,045 lux hingga 188,000 lux. Pengoperasian dalam cahaya redup memungkinkan pengoperasian yang mudah dalam aplikasi kaca gelap. Respon spektral fotodioda pada chip penglihatan penglihatan manusia dan memblok cahaya IR dan UV. Blok penguatan adaptif secara otomatis memilih kisaran lux yang benar untuk mengoptimalkan hitungan / lux.
Spesifikasi sensor max44009:
- Range pencahayaan 0.045 Lux ~ 188,000 Lux
- Dimensi 2mm x 2mm x 0.6mm UTDFN-Opto package.
- VCC = 1.7V to 3.6V
- ICC = 0.65μA Operating Current
- -40°C to +85°C Operating Temperature Range
- Device Address Options 1001 010x and 1001 011x
Langsung saja rangkai projek seperti dibawah ini :
Lalu masukkan program di bawah ini :
// www.sinauprogramming.com
#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, 16, 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() {
Serial.begin(9600); //Menginisiasikan setup kecepatan komunikasi
Wire.begin(); // Menginisiasi Wire
Wire.setClock(100000); // Menginisiasikan frequency clock komunikasi I2C dalam satuan Hertz
lcd.init();
lcd.backlight(); // Menghidupkan backlight
lcd.setCursor(3, 0); // Menempatkan posisi cursor pada baris 0 dan kolom 0
lcd.print("INTENSITAS"); // Menulis konten
lcd.setCursor(5, 1); // Menempatkan posisi cursor pada baris 1 dan kolom 0
lcd.print("CAHAYA"); // Menulis konten
delay(4000); // jeda 4 detik
lcd.clear();
}
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.setCursor(3, 0); // Menempatkan posisi cursor pada baris 0 dan kolom 0
lcd.print("MONITORING"); // Menulis konten pada LCD
lcd.setCursor(0, 1); // Menempatkan posisi cursor pada baris 0 dan kolom 0
lcd.print("RESULT: "); // Menulis konten pada LCD
lcd.setCursor(7, 1); // Menempatkan posisi cursor pada baris 1 dan kolom 0
lcd.print(hasilCahaya); // Menulis konten hasil pengukuran pada LCD
delay(1000);
lcd.clear(); // Menghapus konten LCD
}
}
Hasil pengukuran akan ditampilkan melalui Serial Monitor dan LCD 16×2 I2C.
Terimakasih dan Selamat mencoba.
0 Comments