Anda di halaman 1dari 11

LAPORAN SEMENTARA TP – 11 APLIKASI INFRARED (IR)

Nama : Rania Dwitry Anggraini


Kelas : BM – 4A
NIM : 1803421025

TP 11-1 ( Obstacle Detector )


Pada program ini menggunakan sensor IR obstacle yang dimana keluaran dari sesornya adalah
bersifat digital low. Terlihat Ketika kita menjalankan program Ketika logic toggle dalam keadaan
0 maka sensor mendeteksi adanya halangan atau obstacle, LED akan menyala, dan ditampilkan
tulisan “Stop! Obstacle ahead” pada serial monitor. Sedangkan, ketika logic toggle dalam
keadaan high atau 1 maka sensor tidak mendeteksi adana halangan atau obctacle, led akan mati,
dan ditampikan tulisan “Path is clear” pada serial monitor. Program ini juga menggambarkan
sensori IR obstacle sudah berfungsi dengan baik.
Code breakdown :
// Program TP11-1. Obstacle Detector // sebagai command untuk menginfokan program yang
sedang dibuat
const int ledPin = 13; // pin 13 merupakan pin yang dihubungkan ke LED
const int irObsPin = 2; // pin 2 merupkan pin yang terhubung ke out dari IR obstacle
int obstacle = HIGH; // HIGH means no obstacle// nilai awal yang dimiliki obstacle adalah dalam
keadaan HIGH yang berarti tidak ada obstacle

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
}

TP 11-2 Simple Visitor Counter

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

// Define LCD display pins RS, E, D4, D5, D6, D7


LiquidCrystal lcd(8, 9, 4, 5, 6, 7);// mendefinisikan pin yang terhubung ke LCD
unsigned int count = 0; // unsignedint menyimpan nilai positif, dengan rentang mulai dari 0
char converted_value[6];
const int irObsPin = 2; // pin 2 merupakan pin yang terhubung ke out dari IR obstacle

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.
}

TP 11-3 Bi-directional Visitor Counter

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>

const int IR_Recv = 11;


const int bluePin = 10;
const int greenPin = 9;
const int yellowPin = 9;

IRrecv irrecv(IR_Recv);
decode_results results;

// Digunakan untuk memulai IR pada penerima


void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Starts IR Rx
pinMode(bluePin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
}

// 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);
}

Anda mungkin juga menyukai