#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 servo_ujicoba;
int data_servo = 0;
const int sensor_ldr = A2;
const int relay_1 = 8;
const int potensio = A0;
int data_potensio = 0;
int data_sensor_ldr = 0;
const int tombol_1 = 4;
const int tombol_2 = 3;
const int tombol_3 = 2;
const int buzzer = 5;
const int led_merah = 12;
const int led_kuning = 11;
const int led_hijau = 10;
byte timer_buzzer = 0;
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(buzzer, 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);
pinMode(potensio, INPUT);
servo_ujicoba.attach(9);
}
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);
digitalWrite(buzzer, HIGH);
}
else {
digitalWrite(relay_1, LOW);
digitalWrite(buzzer, LOW);
}
data_potensio = analogRead(potensio);
data_servo = map(data_potensio, 0, 1023, 0, 180);
servo_ujicoba.write(data_servo);
display.print("data_potensio: ");
display.println(data_potensio);
display.print("data_sensor_ldr: ");
display.println(data_sensor_ldr);
display.print("data_servo: ");
display.println(data_servo);
if(digitalRead(tombol_1)==LOW ){
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
}
else{
digitalWrite(buzzer, LOW);
}
display.display();
}