#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Servo.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Servo myservo;
int data_servo = 0;
const int sensor_ldr = A2;
const int relay_1 = 8;
int data_sensor_ldr = 0;
const int tombol_1 = 4;
const int tombol_2 = 3;
const int tombol_3 = 2;
const int led_merah = 12;
const int led_kuning = 11;
const int led_hijau = 10;
void setup() {
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
pinMode(sensor_ldr, INPUT);
pinMode(relay_1, OUTPUT);
pinMode(tombol_1, INPUT_PULLUP);
pinMode(tombol_2, INPUT_PULLUP);
pinMode(tombol_3, INPUT_PULLUP);
pinMode(led_merah, OUTPUT);
pinMode(led_kuning, OUTPUT);
pinMode(led_hijau, OUTPUT);
myservo.attach(7);
}
void loop() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
long nilai_rata_rata_ldr = 0;
for(int i = 0; i<100; i++){
nilai_rata_rata_ldr = nilai_rata_rata_ldr + analogRead(sensor_ldr);
}
nilai_rata_rata_ldr = nilai_rata_rata_ldr/100;
data_sensor_ldr = nilai_rata_rata_ldr;
if(data_sensor_ldr> 700){
digitalWrite(relay_1, HIGH);
}
else {
digitalWrite(relay_1, LOW);
}
data_servo = map(data_sensor_ldr, 0, 1023, 0, 180);
myservo.write(data_servo);
display.print("data_sensor_ldr :");
display.println(data_sensor_ldr);
display.print("data_servo: ");
display.println(data_servo);
display.display();
}