void setup()
{
pinMode(ledPin, OUTPUT);// inisialisai pin LED sebagai output
pinMode(irObsPin, INPUT);// inisialisasi pin IrObs sebagai input
Serial.begin(9600);// mengatur kecepatan transmisi data
}
void loop()
{
obstacle = digitalRead(irObsPin); // membaca keadaan dari irObsPin
if (obstacle == LOW) // jika pada saat keadaan irObsPIn low maka akan muncul tampilan
“Stop! Obstacle ahead” pada sermon dan ledPin akan menyala atau daalam keadaan HIGH
{
Serial.println("Stop! Obstacle ahead.");
digitalWrite(ledPin, HIGH);
}
Else// jika pada saat keadaan irObsPIn high maka akan muncul tampilan “Path is Clear” pada
sermon dan ledPin akan padam atau daalam keadaan LOW
{
Serial.println("Path is Clear.");
digitalWrite(ledPin, LOW);
}
delay(200);// setiap tulisan yang ditampilkan pada monitor atau sermon akan terus diatmpilkan
dengan delay selama 200 ms atau 0,2 detik
}
Pada program ini bekerjan dengan mem=nghitung setiap orang yang ada, jika bertambah maka
pada LCD akan menampilkan banyaknya obstacle atau orang yang bertambah dan juga ada
interrupt pada program ini
Code breakdown :
// Program TP11-2. Simple Visitor Counter
// Active HIGH IR Obstacle Sensor
#include <LiquidCrystal.h>// untuk menginput modul LCD
void setup()
{
lcd.begin(16,2);// proses dimulainya inisialisasi dan menyalakan LCD
lcd.print("Number of People : ");// MEnampilkan kalimat “Number of People” pada LCD
// External interupt
attachInterrupt(digitalPinToInterrupt(irObsPin), counter, FALLING);// menjalankan interrupt
pada irObspin dengan counter yang merupkan eksekusi interrupt dan metode interrupt yang
digunakan adalah Falling
}
void loop()
{
lcd.setCursor(0,1);
lcd.print(converted_value); // Printing count values// menampilkan hasil counter pada LCD di
baris kedua
}
void counter()
// bagian counter
{
count++; // Incrementing visitor count// untuk mengeksekusi increment
sprintf(converted_value, "%d", count); // int to char conversion// untuk mengahasilkan ouput
dari string mejadi sebuah standar output.
}
Code breakdown :
//Program P11-3. Bi-directional Visitor Counter
Memasukan Library lcd
#include<LiquidCrystal.h>
Menentukan pin yang di gunakan LCD, IR Obstacle sensor, Relay dan juga menentukan kondisi
awal IR Obstacle sensor IN dan OUT ke kondisi HIGH dan memberikan variabel count dengan
nilai awal 0
LiquidCrystal lcd(8,9,4,5,6,7);
const int irInPin = 2;
const int irOutPin = 3;
const int relayPin = 13;
int in = HIGH;
int out = HIGH;
int count= 0;
Void IN berfungsi untuk menunjukan ketika ada pertambahan orang yang masuk ke dalam
ruangan sebaliknya OUT berfungsi ketika orang meninggalkan ruangan tersebut(counter).
void IN()
{ count++;
lcd.clear();
lcd.print("Person In Room : ");
lcd.setCursor(0,1);
lcd.print(count);
delay(1000);
}
void OUT() {
count--;
lcd.clear();
lcd.print("Person In Room : ");
lcd.setCursor(0,1);
lcd.print(count);
delay(1000);
}
Menjalankan LCD dan menampilkan “Visitor Counter” selama 1 detik lalu meng-clear lcd dan
juga menentukan IR Obstacle Sensor dan relay sebagai Input. Setelah itu menampilkan kalimat
“Person in Room: ” pada baris pertama dan akan menunjukan jumlah orang pada baris kedua
LCD.
void setup()
{ lcd.begin(16,2);
lcd.print("Visitor Counter");
delay(1000);
pinMode(irInPin, INPUT);
pinMode(irOutPin, INPUT);
pinMode(relayPin, INPUT);
lcd.clear();
lcd.print("Person In Room : ");
lcd.setCursor(0,1);
lcd.print(count);
}
Membuat variabel IN dan OUT membaca IR Sensor lalu menjalankan program sesuai dengan
kondisi yang ada, jika in == LOW maka program IN akan dijalankan dan sebaliknya. Namun
ketika counter membaca jumlah <= 0 maka LCD akan menampilkan “Nobody In Room” pada
baris pertama dan “Light is Off” pada baris kedua LCD.
void loop() {
in = digitalRead (irInPin);
out = digitalRead (irOutPin);
if(in == LOW)
IN();
if(out == LOW)
OUT();
if(count<=0)
{
lcd.clear();
digitalWrite(relayPin, LOW);
lcd.clear();
lcd.print("Nobody In Room");
lcd.setCursor(0,1);
lcd.print("Light Is Off");
delay(200);
}
else
digitalWrite(relayPin, HIGH);
}
TP 11-4 LCD Remote Controler
Code breakdown :
// Program TP11-4. LED Remote Controller
// IRrecv irrecv(IR_Recv); membuat objek penerima, menggunakan nama pilihan Dev.
// decode_results results; mencoba menerima kode IR. Mengembalikan nilai true jika kode
diterima, atau salah jika tidak ada yang diterima. Ketika kode diterima, informasi disimpan ke
dalam "hasil".
#include <IRremote.h>
IRrecv irrecv(IR_Recv);
decode_results results;
// remote diatur untuk dapat mengirim pesan ke tv berupa trigger tombol yang kita lakukan
void loop()
{
// Decodes the infrared input
if (irrecv.decode(&results))
{
long int decCode = results.value;
Serial.println (results.value);
// swicth case to use the selected button
switch ( results.value)
{
case 0xFD08F7: // button 1
digitalWrite(bluePin, HIGH);
break;
case 0xFD28D7: // button 4
digitalWrite(bluePin, LOW);
break;
case 0xFD8877: // button 2
digitalWrite(greenPin, HIGH);
break;
case 0xFDA857: // button 5
digitalWrite(greenPin, LOW);
break;
case 0xFD48B7: // button 3
digitalWrite(yellowPin, HIGH);
break;
case 0xFD6897: // button 6
digitalWrite(yellowPin, LOW);
break;
}
irrecv.resume(); // Receive the next value
}
delay(10);
}