Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara mengakses sensor IR Distance yaitu Sharp GP2Y0A21 dan data yang dihasilkan oleh sensor tersebut akan ditampilkan ke LCD OLED Display 128x64 dengan menggunakan mikrokontroller Arduino sebagai pemrosesan datanya. jadi data jarak akan ditampilkan ke layar LCD OLED secara real time, sebenarnya jika menggunakan sensor jarak yang lain juga bisa seperti ultrasonik SRF / PING atau range finder dan lainnya, sensor IR ini menggunakan output berupa tegangan, maka dari itu perlu keahlian didalam mengkalibrasikan antara data analog dengan data jarak terukur. untuk lebih jelasnya berikut adalah skema dan programnya.
a. Arduino Mega + Skema
b. Sensor Jarak Infrared Sharp GP2Y0A21
c. OLED LCD Display 128x64
d. Program Arduino IDE Tanpa Library
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);
int x;
char tmp_string[8];
int input = 0;
int distance = 0;
void draw(void) {
itoa(distance, tmp_string, 10);
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr(0, 22, "Jarak= ");
u8g.drawStr(60, 22, tmp_string);
u8g.drawStr( 0, 50, "YANUAR M");
}
void setup(void) {
Serial.begin(9600);
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop(void) {
input = analogRead(A0);
distance = map(input,512,0,15,150);
//Serial.println(distance);
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(200);
}
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);
int x;
char tmp_string[8];
int input = 0;
int distance = 0;
void draw(void) {
itoa(distance, tmp_string, 10);
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr(0, 22, "Jarak= ");
u8g.drawStr(60, 22, tmp_string);
u8g.drawStr( 0, 50, "YANUAR M");
}
void setup(void) {
Serial.begin(9600);
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop(void) {
input = analogRead(A0);
distance = map(input,512,0,15,150);
//Serial.println(distance);
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(200);
}
e. Program Arduino IDE Menggunakan Library
#include <DistanceGP2Y0A21YK.h>
DistanceGP2Y0A21YK Dist;
int distance;
void setup()
{
Serial.begin(9600);
Dist.begin(0);
}
void loop()
{
distance = Dist.getDistanceCentimeter();
Serial.print("\nDistance in centimers: ");
Serial.print(distance);
delay(500); //make it readable
}
f. Gambar Hasilnya
#include <DistanceGP2Y0A21YK.h>
DistanceGP2Y0A21YK Dist;
int distance;
void setup()
{
Serial.begin(9600);
Dist.begin(0);
}
void loop()
{
distance = Dist.getDistanceCentimeter();
Serial.print("\nDistance in centimers: ");
Serial.print(distance);
delay(500); //make it readable
}
f. Gambar Hasilnya
g. VIDEO HASILNYA
No comments:
Post a Comment