//Kelompok 6
//Rangkaian I2C Analog output
#include <Wire.h>
#define LIGHT_SENSOR_PIN 35
#define LOW_LED 14
#define HIGH_LED 12
#define MCP4725_ADDR 0x60
void setup() {
Serial.begin(9600);
pinMode(LOW_LED, OUTPUT);
digitalWrite(LOW_LED, LOW);
pinMode(HIGH_LED, OUTPUT);
digitalWrite(HIGH_LED, LOW);
// Inisialisai I2C untuk MCP4725
Wire.begin();
}
void loop() {
// Membaca input pada analog pin (value between 0 and 4095)
int analogValue = analogRead(LIGHT_SENSOR_PIN);
Serial.print("Analog Value = ");
Serial.print(analogValue); // the raw analog reading
// Mengirim nilai ke MCP4725
Wire.beginTransmission(MCP4725_ADDR);
Wire.write((analogValue >> 4) & 0xFF);
Wire.write((analogValue & 0x0F) << 4);
Wire.endTransmission();
// Logika untuk mengendalikan LED
if (analogValue < 400) {
analogWrite(LOW_LED, 255);
digitalWrite(HIGH_LED, HIGH);
Serial.println(" => Dark");
} else if ((analogValue > 400) && (analogValue < 1000)) {
analogWrite(LOW_LED, 255);
digitalWrite(HIGH_LED, LOW);
Serial.println(" => Semi Dark");
} else if ((analogValue > 1000) && (analogValue < 2000)) {
analogWrite(LOW_LED, 50);
digitalWrite(HIGH_LED, LOW);
Serial.println(" => Light");
} else if (analogValue > 2000) {
analogWrite(LOW_LED, 0);
digitalWrite(HIGH_LED, LOW);
Serial.println(" => Bright");
}
delay(500);
}