My Newest Invention: Sleeping Detector for Smart TV
Pernahkah anda atau salah satu anggota keluarga anda tertidur saat nonton TV? Yang terjadi bukannya kita nonton TV, malah kita yang ditonton TV! Well, dengan my newest invention, say goodbye to that problem, karena sensor ini akan mendeteksi jika kita ketiduran dan akan mematikan TV secara otomatis.
Cara kerjanya sederhana, makanya saya surprise kenapa sampai sekarang tidak ada yang kepikiran bikin alat seperti ini. Kita hanya perlu Arduino Board, LCD 16x2 dan tombol push button switch.
Sleeping Detector akan secara periodik (per 5 menit) menampilkan pertanyaan , "Are you sleeping?" yang harus dijawab dalam waktu 30 detik dengan cara menekan tombol yang disediakan. Jika dalam waktu 30 detik tidak dijawab, maka Sleeping Detector akan menganggap anda sedang tidur, dan segera mematikan TV dengan menggunakan relay switch. Simple bukan? hehehe..kidding, in cuma nyobain LCD dengan I2C nya.
Pada LCD dengan I2C, terdapat 4 pin yang harus disambungkan yaitu VCC, GND, SDA, dan SCL. Pin VCC dan GND, cukup jelas harus disambungkan ke +5V dan ground sedangkan SDA dan SCL harus dipasangkan ke input pin, umumnya SDA ke A4 dan SCL ke A5. Sadangkan untuk Arduino Mega, biasanya dipasangkan ke pin 20 dan 21.
oke, ini code nya
#include <wire.h>
#include <liquidcrystal_i2c.h>
#define I2C_ADDR 0x27 // Sesuaikan dengan address I2C anda
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
int n = 1;
unsigned long int startTime = millis();
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
unsigned long int timer=30000;
void setup()
{
lcd.begin (16,2);
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
}
void loop()
{
// Backlight on/off every 3 seconds
boolean timeUp = false;
if (millis() - startTime < timer){
askAQuestion();
} else matikanTV();
}
void askAQuestion()
{
lcd.home (); // go home
lcd.print("Are you sleepin?");
lcd.setCursor ( 0, 1 ); // go to the 2nd line
lcd.print("Answer in:");
lcd.print((timer-(millis()-startTime))/1000);
lcd.print(" s ");
}
void matikanTV(){
lcd.home (); // go home
lcd.clear();
lcd.print("Shutting Down TV");
delay(3000);
startTime = millis();
}
</liquidcrystal_i2c.h></wire.h>