Alat Pengukur Tinggi dengan Password
1. Hardware [back]
- Arduino Uno
- LCD
- Ultasonic Sensor
- LED
- Breadboard
- Potensio 10k
- Jumper
- Keypad
2. Rangkaian Alat [back]
Rangkaian Simulasi
3. Prinsip Kerja Rangkaian [back]
Prinsip kerja dari alat ini adalah, program Arduino menginstruksikan kepada LCD untuk menampilkan karakter. Program tidak akan lanjut jikalau password atau karakter yang diinputkan melalui keypad salah, jika password yang di masukkan benar, maka sensor akan mulai mendeteksi jarak objek, posisi sensor ultrasonic diletakkan sejauh 200m dari atas tanah. Nilai tinggi badan didapatkan dari 200 meter yang dikurangi jarak yang didapatkan oleh sensor ultrasonic sebelumnya, selanjutnya Arduino mengistruksikan LCD untuk menampilkan nilai Tinggi.
4. Flowchart [back]
5. Listing Program [back]
#include <Password.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
#define echoPin 11
#define trigPin 10
#define ledr 13
#define ledg 12
Password password = Password("1234");//Password bisa di ubah ubah
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);// pin lcd yang di gunakan
int posisi = 200;
int tinggi;
long duration, jarak;
byte currentLength = 0;
const byte ROWS= 4; //baris pada keypad
const byte COLS= 4; //Kolom pada keypad
/*keymap mendefinisikan tombol ditekan sesuai
dengan baris dan kolom seperti muncul pada keypad*/
char keys[ROWS][COLS] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS]= {9,8,7,6};
byte colPins[COLS]= {5,4,3,2};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledr, OUTPUT);
pinMode(ledg, OUTPUT);
//sumber diambil pada examples di library password.
keypad.addEventListener(keypadEvent);
lcd.begin(16, 2);
lcd.setCursor(3, 0);
lcd.print("PENGUKURAN");
lcd.setCursor(2, 1);
lcd.print("TINGGI BADAN");
delay(500);
lcd.clear();
}
// Jika tombol ditekan, tombol ini disimpan dalam 'keypressed' variabel
// Jika kunci tidak sama dengan 'NO_KEY', maka tombol ini dicetak
// Jika jumlah = 17, maka penghitungan reset kembali ke 0 (ini berarti tidak ada tombol yang ditekan selama proses pemindaian seluruh keypad
void loop(){
lcd.setCursor(0, 0);
lcd.print("Masukan Password");
lcd.setCursor(0,1);
lcd.print("Pass: ");
keypad.getKey();;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration/2)/29.1;
tinggi = posisi - jarak;
}
void checkPassword(){
if(password.evaluate()){
lcd.clear();
lcd.print("Berhasil");
delay(500);
lcd.clear();
lcd.setCursor(2,0);
lcd.println("Tinggi Badan");
lcd.setCursor(0,1);
lcd.print("Tinggi = ");
lcd.print(tinggi);
lcd.setCursor(14,1);
lcd.print("cm");
if (tinggi <= 165){
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
}
else if (tinggi >= 166){
digitalWrite(ledg, HIGH);
digitalWrite(ledr, LOW);
}
delay(2500);
}
else {
lcd.clear();
lcd.print("Salah coba lagi");
delay(500);
}
}
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
lcd.setCursor(0,1);
lcd.print(eKey);
switch (eKey){
case '*': checkPassword(); lcd.clear(); currentLength=0;break;
case '#': password.reset(); lcd.clear();currentLength=0; break;
default:// password.append(eKey);
password << eKey;
currentLength++;
//Print some feedback.
lcd.setCursor(0,1);
lcd.print("Pass: ");
for (byte i=0; i<currentLength; i++){
lcd.print('*');
}
}
}
}
#include <Keypad.h>
#include <LiquidCrystal.h>
#define echoPin 11
#define trigPin 10
#define ledr 13
#define ledg 12
Password password = Password("1234");//Password bisa di ubah ubah
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);// pin lcd yang di gunakan
int posisi = 200;
int tinggi;
long duration, jarak;
byte currentLength = 0;
const byte ROWS= 4; //baris pada keypad
const byte COLS= 4; //Kolom pada keypad
/*keymap mendefinisikan tombol ditekan sesuai
dengan baris dan kolom seperti muncul pada keypad*/
char keys[ROWS][COLS] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS]= {9,8,7,6};
byte colPins[COLS]= {5,4,3,2};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledr, OUTPUT);
pinMode(ledg, OUTPUT);
//sumber diambil pada examples di library password.
keypad.addEventListener(keypadEvent);
lcd.begin(16, 2);
lcd.setCursor(3, 0);
lcd.print("PENGUKURAN");
lcd.setCursor(2, 1);
lcd.print("TINGGI BADAN");
delay(500);
lcd.clear();
}
// Jika tombol ditekan, tombol ini disimpan dalam 'keypressed' variabel
// Jika kunci tidak sama dengan 'NO_KEY', maka tombol ini dicetak
// Jika jumlah = 17, maka penghitungan reset kembali ke 0 (ini berarti tidak ada tombol yang ditekan selama proses pemindaian seluruh keypad
void loop(){
lcd.setCursor(0, 0);
lcd.print("Masukan Password");
lcd.setCursor(0,1);
lcd.print("Pass: ");
keypad.getKey();;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration/2)/29.1;
tinggi = posisi - jarak;
}
void checkPassword(){
if(password.evaluate()){
lcd.clear();
lcd.print("Berhasil");
delay(500);
lcd.clear();
lcd.setCursor(2,0);
lcd.println("Tinggi Badan");
lcd.setCursor(0,1);
lcd.print("Tinggi = ");
lcd.print(tinggi);
lcd.setCursor(14,1);
lcd.print("cm");
if (tinggi <= 165){
digitalWrite(ledg, LOW);
digitalWrite(ledr, HIGH);
}
else if (tinggi >= 166){
digitalWrite(ledg, HIGH);
digitalWrite(ledr, LOW);
}
delay(2500);
}
else {
lcd.clear();
lcd.print("Salah coba lagi");
delay(500);
}
}
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
lcd.setCursor(0,1);
lcd.print(eKey);
switch (eKey){
case '*': checkPassword(); lcd.clear(); currentLength=0;break;
case '#': password.reset(); lcd.clear();currentLength=0; break;
default:// password.append(eKey);
password << eKey;
currentLength++;
//Print some feedback.
lcd.setCursor(0,1);
lcd.print("Pass: ");
for (byte i=0; i<currentLength; i++){
lcd.print('*');
}
}
}
}
6. Video [back]
Video Simulasi
Demosntrasi Alat
Comments
Post a Comment