Sensor ini secara umum bekerja dengan menggunakan metode pantulan untuk menghitung jarak antara sensor dengan objek. Jarak antara sensor dengan objek dapat dihitung dengan cara mengalikan kecepatan rambat dari gelombang suara ultrasonik pada media rambat berupa suara tersebut dengan setengah waktu yang digunakan sensor ultrasonik untuk memancarkan gelombang suara ultrasonik dari rangkaian pemancar (Tx) menuju objek sampai diterima kembali oleh rangkaian penerima (Rx).
List Program :
List Program :
Menyalakan LED
Pada rangkaian di atas sensor ultrasonik untuk mendeteksi gerakan atau benda yang melewati atau berada di depan sensor tersebut. Pada program di bawah sensor akan mendeteksi benda yang berada dalam jarak 200, apabila ada benda berada di bawah 200 maka akan terdeteksi oleh sensor dan akan menyalakan lampu.
List Program:const int trigPin = 7; // Trigger Pin of Ultrasonic Sensor
const int echoPin = 6; // Echo Pin of Ultrasonic Sensor
const int led = 13;
void setup()
{
Serial.begin(9600); // Starting Serial Terminal
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
void loop()
{
long duration, distance, inches, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
if (distance <= 200) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
delay(100);
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}Membuat Running. LED
Pada rangkaian di atas bisa membantu mengukur jarak benda yang ada di depan sensor karena rangkaian ini bisa membandingkan melihat berapa banyak lampu yang menyala, semakin banyak lampu yang menyala maka semakin dekat jarak benda tersebut pada sensor ultrasonik.
Dalam program rangkaian tersebut di atur jika benda berada diantara jarak =50 s.d. 250 maka 1 lampu menyala, jika jarak benda berada diantara =250 s.d. 500 maka 2 lampu menyala, dan seterusnya.
const int trigPin = 7; // Trigger Pin of Ultrasonic Sensor
const int echoPin = 6; // Echo Pin of Ultrasonic Sensor
const int led1 = 8;
const int led2 = 9;
const int led3 = 10;
const int led4 = 11;
const int led5 = 12;
void setup()
{
Serial.begin(9600); // Starting Serial Terminal
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop()
{
long duration, distance, inches, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
if (distance >= 50 && distance < 250) {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
else if (distance >= 250 && distance < 500) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
else if (distance >= 500 && distance < 750) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
else if (distance >= 750 && distance < 1000) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
}
else if (distance >= 1000 ) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
else {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
delay(100);
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}Mobile Robot
Rangkaian di atas dibuat untuk mengatur mobil atau benda bergerak tanpa menabrak dinding di depan dan sampingnya. Dengan menggunakan 3 sensor ultrasonik memungkinkan mobil dapat bergerak dalam lorong yang berbelok ke kiri dan ke kanan yang tidak memiliki penghalang di depannya.
const int trigPinKanan = 7; // Trigger Pin of Ultrasonic Sensor
const int echoPinKanan = 6; // Echo Pin of Ultrasonic Sensor
const int trigPinTengah = 5; // Trigger Pin of Ultrasonic Sensor
const int echoPinTengah = 4; // Echo Pin of Ultrasonic Sensor
const int trigPinKiri = 3; // Trigger Pin of Ultrasonic Sensor
const int echoPinKiri = 2; // Echo Pin of Ultrasonic Sensor
const int rodaKanan1 = 13;
const int rodaKanan2 = 12;
const int rodaKiri1 = 11;
const int rodaKiri2 = 10;
long durationKanan, distanceKanan, inchesKanan, cmKanan;
long durationTengah, distanceTengah, inchesTengah, cmTengah;
long durationKiri, distanceKiri, inchesKiri, cmKiri;
void setup()
{
Serial.begin(9600); // Starting Serial Terminal
pinMode(trigPinKanan, OUTPUT);
pinMode(echoPinKanan, INPUT);
pinMode(trigPinTengah, OUTPUT);
pinMode(echoPinTengah, INPUT);
pinMode(trigPinKiri, OUTPUT);
pinMode(echoPinKiri, INPUT);
pinMode(rodaKanan1, OUTPUT);
pinMode(rodaKanan2, OUTPUT);
pinMode(rodaKiri1, OUTPUT);
pinMode(rodaKiri2, OUTPUT);
}
void loop()
{
digitalWrite(trigPinKanan, LOW);
delayMicroseconds(2);
digitalWrite(trigPinKanan, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinKanan, LOW);
durationKanan = pulseIn(echoPinKanan, HIGH);
inchesKanan = microsecondsToInches(durationKanan);
cmKanan = microsecondsToCentimeters(durationKanan);
Serial.print(inchesKanan);
Serial.print("in, ");
Serial.print(cmKanan);
Serial.print("cm");
Serial.println();
digitalWrite(trigPinTengah, LOW);
delayMicroseconds(2);
digitalWrite(trigPinTengah, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinTengah, LOW);
durationTengah = pulseIn(echoPinTengah, HIGH);
inchesTengah = microsecondsToInches(durationTengah);
cmTengah = microsecondsToCentimeters(durationTengah);
Serial.print(inchesTengah);
Serial.print("in, ");
Serial.print(cmTengah);
Serial.print("cm");
Serial.println();
digitalWrite(trigPinKiri, LOW);
delayMicroseconds(2);
digitalWrite(trigPinKiri, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinKiri, LOW);
durationKiri = pulseIn(echoPinKiri, HIGH);
inchesKiri = microsecondsToInches(durationKiri);
cmKiri = microsecondsToCentimeters(durationKiri);
Serial.print(inchesKiri);
Serial.print("in, ");
Serial.print(cmKiri);
Serial.print("cm");
Serial.println();
distanceKanan = (durationKanan / 2) / 29.1;
distanceTengah = (durationTengah / 2) / 29.1;
distanceKiri = (durationKiri / 2) / 29.1;
if (distanceKanan >= 15 && distanceTengah >= 15 && distanceKiri >= 15) {
digitalWrite(rodaKanan1, HIGH);
digitalWrite(rodaKanan2, LOW);
digitalWrite(rodaKiri1, HIGH);
digitalWrite(rodaKiri2, LOW);
delay(100);
}
else if (distanceKanan >= 15 && distanceTengah <= 15 && distanceKiri >= 15) {
digitalWrite(rodaKanan1, LOW);
digitalWrite(rodaKanan2, HIGH);
digitalWrite(rodaKiri1, HIGH);
digitalWrite(rodaKiri2, LOW);
delay(100);
}
else if (distanceKanan <= 15 && distanceTengah >= 15 && distanceKiri >= 15) {
digitalWrite(rodaKanan1, HIGH);
digitalWrite(rodaKanan2, LOW);
digitalWrite(rodaKiri1, LOW);
digitalWrite(rodaKiri2, HIGH);
delay(100);
}
else if (distanceKanan >= 15 && distanceTengah >= 15 && distanceKiri <= 15) {
digitalWrite(rodaKanan1, LOW);
digitalWrite(rodaKanan2, HIGH);
digitalWrite(rodaKiri1, HIGH);
digitalWrite(rodaKiri2, LOW);
delay(100);
}
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}



Comments