#define echo 12
#define trig 13
const int pin_led[] = {2,3,4,5,6,7,8,9,10,11};
int squen_led = 10;
float mA, bar, bit_value;
void setup() {
Serial.begin(9600);
//deklarasi pin bar
for(int i = 0;i <= 9; i++) {
pinMode(pin_led[i], OUTPUT);
digitalWrite(pin_led[i], HIGH);
delay(50);
}
for(int i = 9; i >= 0; i--) {
digitalWrite(pin_led[i], LOW);
delay(50);
}
//deklarasi pin ultrasonik
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
//perhitungan scalling 3 bar
//inisialisasi sistem
Serial.println("------SISTEM DIAKTIFKAN------");
delay(1000);
}
void loop() {
int jarak = baca_jarakCM();
jarak = map(jarak, 0, 401, 5, 0);
Serial.print("jarak: ");
Serial.print(jarak); Serial.println(" meter");
delay(100);
int level_led = map(jarak, 0, 5, 0, squen_led);
for(int i = 0; i < squen_led; i++) {
if(i < level_led) {
digitalWrite(pin_led[i], HIGH);
}
else {
digitalWrite(pin_led[i], LOW);
}
}
}
int baca_jarakCM() {
//transmit
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
//recieve
int duration = pulseIn(echo, HIGH);
return duration / 58;
}
//fungsi map menggunakan float agar pecahan bisa terlihat
float mapFloat(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}