Tutorial Sensor Cahaya Arduino Uno

Tutorial Sederhana Sensor Cahaya MAX44009 Arduino Uno

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

MAX44009 Breadboard

max 44009 bread board

Leave a Reply

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