//Nama : Muhammad Farchan Setyawan
//NIM : 1002210072
//Prodi : TI - Karyawan
//Tanggal 21/05/2024
// program ini adalah program speedometer indicator
// user dapat menekan tombol hijau sebelah kanan mikrocontroller untuk
// memulai system. dan tombol merah di atas mikrokontroller untuk
// stop atau reset system
// ketika kecepatan naik dari 0 menuju maksimum 200km/jam, lampu indikator
// warna hijau akan menyala apabila kecepatan kurang dari 80km/j
// warna kuning akan menyala apabila kecepatan mulai dari 80 ~ 110km/j
// dan warna merah akan menyala apabila kecepatan diatas 110km/jam
// artinya berbahaya mengemudi dengan kecepatan tersebut.
// status bar dibawah kontroller juga akan menampilkan kecepatan saat ini
int speedometer_in = 0;
int merah = 32;
int kuning = 25;
int hijau = 12;
int pb_button = 35;
int pb_button2 = 34;
int start_stop = 0;
int test = 22;
int test2 = 23;
int speed_raw=0;
int speed_value=0;
void setup() {
Serial.begin(115200);
Serial.println("");
Serial.println("");
Serial.println("==========================");
Serial.println("System Speedometer Ready");
Serial.println("==========================");
Serial.println("");
Serial.println("");
pinMode(speedometer_in, INPUT);
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
pinMode(test, OUTPUT);
pinMode(test2, OUTPUT);
pinMode(pb_button, INPUT); //Start System
pinMode(pb_button2, INPUT); //Stop System
start_stop=0;
speed_raw=0;
speed_value=0;
}
void loop() {
digitalWrite(test, digitalRead(pb_button));
digitalWrite(test2, digitalRead(pb_button2));
if (digitalRead(pb_button)==HIGH){
if (start_stop == 0) {
start_stop =1;
}
}
if (digitalRead(pb_button2)==HIGH){
start_stop =0;
digitalWrite(merah,LOW);
digitalWrite(kuning,LOW);
digitalWrite(hijau,LOW);
}
if (start_stop == 1){
speed_raw = analogRead(speedometer_in);
speed_value = map(speed_raw,0,4098,0,240);
Serial.print("Kecepatan: ");
Serial.print(speed_value);
Serial.println(" km/jam");
if (speed_value>0 & speed_value<=80){
digitalWrite(hijau,HIGH);
}
else {
digitalWrite(hijau,LOW);
};
if (speed_value>80 & speed_value<=110){
digitalWrite(kuning,HIGH);
}
else {
digitalWrite(kuning,LOW);
};
if (speed_value>110){
digitalWrite(merah,HIGH);
}
else {
digitalWrite(merah,LOW);
};
}
}