Selasa, 13 Januari 2015

Arduino dan Ultrasonik bagian dua

Sambungan dari Arduino dan Ultrasonik bagian satu



           Latihan halaman satu menjelaskan latihan demi latihan penggunaan sensor ultrasonik dari mengukur jarak biasa dan terakhir mengukur jarak ketinggian air.  Programnya mempunyai kekurangan yaitu alat hanya dapat digunakan untuk satu wadah saja. jika alat digunakan untuk mengukur wadah dengan ketinggian yang berbeda maka perlu diprogram ulang. Dalam kesempatan kali ini di halaman ini akan dicoba penggunaan ultrasonik untuk pengukuran ketinggian air ( Water Level Kalo kata orang Bule maaah).  dibawah ada dua program yang dapat dipraktekan, yang pertama adalah program untuk mengukur ketinggian air saja dan yang kedua adalah program untuk mengukur ketinggian air dan sekaligus dapat menghidupkan pompa secara otomatis bila ketinggian air berada di level bawah dan pompa akan otomatis mati dengan sendirinya jika ketinggian airnya sudah mencapai ketinggian maksimal.



Alat terdiri dari
Sensor ultrasonik sebagai pengukur jarak
Saklar sebagai input data
Lcd sebagai alat penampil
Saklar 1 / tombol 1 untuk mode seting dan ok
Saklar 2 / tombol 2 untuk plus
Saklar 3/ tombol 3 untuk minus

Ultrasonik pada prinsipnya adalah untuk mengukur jarak benda dari sensor. Jika kita letakan alat untuk mengukur ketinggian air maka yang diukur adalah jarak air dari sensor. Ketika
Misalnya pada wadah dengan ketinggian 20 cm
Dalam keadaan wadah kosong jarak yang terbaca sensor adalah 20 cm seharusnya adalah 0 cm
Dalam keadaan air dengan ketinggian 5 cm maka jarak yang terbaca adalah 15 cm
Agar jarak yang ditampilkan sesuai maka dalam pnulisan program nya perlu sedikit modifikasi

X = jarak antara sensor ke dasar
Y = jarak yang terbaca oleh sensor
Z= jarak yang ditampilkan
Z= x-y

Variabel lain yg digunakan
H  batas atas
L batas bawah bernilai byte diisi 0 dan1 disimpan di eeprom 1 dan alamat 2
             Di bawah ini adalah listing program untuk pengukuran air dimana alat dapat di setel dan disesuaikan dengan wadah air yang ada.





----------------------------------------------------------------


boolean m1,m2,m3,m4,m5;
#include <LiquidCrystal.h>
#include <EEPROM.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
long  x;
int z ;
int y,a; // disimpan di eeprom 1

void setup() {
  lcd.begin(16, 2);
m1=true;m2=false;
y = EEPROM.read (1); a=y;
pinMode(8,INPUT); pinMode(9,INPUT); pinMode(10,INPUT);
}

void loop() {
pinMode(7,OUTPUT);
digitalWrite(7,LOW);
delayMicroseconds(2);
digitalWrite(7,HIGH);
delayMicroseconds(5);
digitalWrite(7,LOW);
pinMode(7,INPUT);
x=pulseIn(7,HIGH);
x=x/29/2;
z=a-x;

// Kondisi Jalan
if (m1==true){
lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Hasil Pengukuran");
  lcd.setCursor(0, 1); lcd.print("Jarak :");lcd.print(z);
  lcd.setCursor(14, 1); lcd.print("Cm");
  delay(400);
  if (digitalRead(8)==HIGH) {
    m2=true; m1=false; delay(80); }
}
// Kondisi pengaturan alat
if (m2==true){
  delay(90);
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Mode Pengaturan");
  lcd.setCursor(0, 1); lcd.print("T Tangki : "); lcd.print(a);
  if(digitalRead(9)==HIGH) {a=a+1;delay(80);}
  if(digitalRead(10)==HIGH){a=a-1;delay(80);}
  if(digitalRead(8)==HIGH) {y=a;
  EEPROM.write (1,a); delay(200);
  m2=false; m1=true;
}}
}
------------------------------------------------------------------------------

bila rekan-rekan belum paham maka cobalah tips dibawah ini.

  • pelajari kembali masalah penggunaan EEPROM Arduino. EEPROM Arduino diperlukan dalam menyimpan data ketinggian wadah air. 
  • pelajari kembali bagian ultrasonik bila belum mengerti bagian ultrasonik
  • pelajari kembali masalah penggunaan saklar digital 
caranya gampang saja untuk mempelajarinya..  biasaaaaaa.. buka googe ketik saja yg ingin dipelajari. misalnyan ketik eeprom arduino, maka akan terdapat banyak halaman yang berhubungan dengan eeprom dan arduino.. semangatlah dalam belajar dan jangan menyerah dalam menghadapi kegagalan



----------------------------------------------------------------------------------------


boolean m1,m2,m3,m4,m5;
#include <LiquidCrystal.h>
#include <EEPROM.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
long  x;
int z, ba,bb;
int y,a,ba1,ba2,bb1,bb2; // disimpan di eeprom 1

void setup() {
pinMode (13 ,OUTPUT);
pinMode (10,INPUT) ;
pinMode (9,INPUT) ;
pinMode (8,INPUT) ;
  lcd.begin(16, 2);
m1=true; m2=false; m3=false; m4=false;
y = EEPROM.read (1); a=y;
ba1 = EEPROM.read(2);
ba2 = EEPROM.read(3);
ba=ba1*100; ba=ba + ba2;
bb1 = EEPROM.read(4);
bb2 = EEPROM.read(5);
bb = bb1*100; bb = bb+bb2;
pinMode(8,INPUT); pinMode(9,INPUT); pinMode(10,INPUT);
}

void loop() {
pinMode(7,OUTPUT);
digitalWrite(7,LOW);
delayMicroseconds(2);
digitalWrite(7,HIGH);
delayMicroseconds(5);
digitalWrite(7,LOW);
pinMode(7,INPUT);
x=pulseIn(7,HIGH);
x=x/29/2;
z=a-x;

// Kondisi Jalan
if (m1==true){
lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Hasil Pengukuran");
  lcd.setCursor(0, 1); lcd.print("Jarak :");lcd.print(z);
  lcd.setCursor(14, 1); lcd.print("Cm");
  delay(400);
  if (z <= bb ){ digitalWrite (13,HIGH); }
  if (z>=ba ) { digitalWrite (13,LOW); }
  if (digitalRead(8)==HIGH) {
    m2=true; m1=false; delay(80); }
}
// Kondisi pengaturan alat
if (m2==true){
  delay(90);
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Mode Pengaturan");
  lcd.setCursor(0, 1); lcd.print("T Tangki : "); lcd.print(a);
  if(digitalRead(9)==HIGH) {a=a+1;delay(80);}
  if(digitalRead(10)==HIGH){a=a-1;delay(80);}
  if(digitalRead(8)==HIGH) {y=a;
  EEPROM.write (1,a); delay(200);
  m2=false; m3=true;
}}
if (m3==true){
  delay(90);
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print(" Set Batas Atas");
  lcd.setCursor(0, 1); lcd.print("Tinggi  : "); lcd.print(ba);
  if(digitalRead(9)==HIGH) {ba=ba+1;delay(80);}
  if(digitalRead(10)==HIGH){ba=ba-1;delay(80);}
  if(digitalRead(8)==HIGH) {
    ba1=ba/100; ba2=ba%100;
  EEPROM.write (2,ba1);
  EEPROM.write (3,ba2);
  delay(200);
  m3=false; m4=true;
}}

if (m4==true){
  delay(90);
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print(" Set Batas Bawah");
  lcd.setCursor(0, 1); lcd.print("Tinggi  : "); lcd.print(bb);
  if(digitalRead(9)==HIGH) {bb=bb+1;delay(80);}
  if(digitalRead(10)==HIGH){bb=bb-1;delay(80);}
  if(digitalRead(8)==HIGH) {
    bb1=bb/100; bb2=bb%100;
  EEPROM.write (4,bb1);
  EEPROM.write (5,bb2);
  delay(200);
  m4=false; m1=true;
}}

}
---------------------------------------------------------------------------------







Ling menuju Halaman 1

Tidak ada komentar:

Posting Komentar