#include "TM1637.h"
#define CLK 7 //pins definitions for TM1637 and can be changed to other ports
#define DIO 6
#define Buzzer 8
TM1637 tm1637(CLK, DIO);
int ledM = 9;
int ledH = 12;
int count = 0;
int isObstaclePin = 2; // Pin input
int isObstacle = HIGH; // diberi logika high yang berarti tidak ada halangan
//int x;
//int i = 0 +(x);
long previousMillis = 0;
unsigned long sec = 0;
void setup() {
Serial.begin(9600);
pinMode(isObstaclePin, INPUT);
delay(3000);
pinMode(Buzzer, OUTPUT);
pinMode(ledM, OUTPUT);
pinMode(ledH, OUTPUT);
tm1637.init();
tm1637.set(BRIGHT_TYPICAL); //BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
}
void loop() {
isObstacle = digitalRead(isObstaclePin);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 100) {
if (isObstacle == LOW) {
if (count == 0) {
count = 0;
}
else {
count--;
}
if (count >= 0) {
digitalWrite(9, LOW);
digitalWrite(12, HIGH);
digitalWrite(8, LOW);
noTone(Buzzer);
// tone(8, 1000, 3000);
}
}
else {
if (count == 0) {
count = 20;
}
// else {
count = count;
// }
if (count > 0 && count <= 18) {
digitalWrite(12, LOW);
digitalWrite(8, HIGH);
tone(8, 1000, 3000);
digitalWrite(9, HIGH);
}
if (count >= 18 && count <= 20 && isObstacle == HIGH){
count = 20;
digitalWrite (12,HIGH);
digitalWrite (8,LOW);
noTone(Buzzer);
digitalWrite(9,LOW);
}
}
tm1637.display(2, count / 10 % 10);
tm1637.display(3, count / 1 % 10);
previousMillis = currentMillis;
Serial.println(isObstacle);
delay(900);
// if (sec >= 100) {
// previousMillis = currentMillis;
// previousMillis = millis();
// sec = 0;
// }
//if (count <= 0){
// x = 1;
// while(i == 1 ){
// if (x == 1) break;
//
// }
// delay(1000);
}
}