message (1)
message (1)
int trig = 1;
int echo = 0;
int duration;
float distance;
long previousTime = 0;
bool isFinish() {
analogWrite(apwmPin, 0);
analogWrite(bpwmPin, 50);
digitalWrite(adirectionPin, LOW);
digitalWrite(bdirectionPin, LOW);
delay(300);
results[0] = digitalRead(2) == LOW;
results[1] = digitalRead(4) == LOW;
results[2] = digitalRead(5) == LOW;
results[3] = digitalRead(6) == LOW;
results[4] = digitalRead(7) == LOW;
if(results[0] && results[1] && results[2] && results[3] && results[4]){
return true;
}
return false;
}
void setup() {
pinMode(2, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(adirectionPin, OUTPUT);
pinMode(apwmPin, OUTPUT);
pinMode(bdirectionPin, OUTPUT);
pinMode(bpwmPin, OUTPUT);
pinMode(SEG_A, OUTPUT);
pinMode(SEG_B, OUTPUT);
pinMode(SEG_C, OUTPUT);
pinMode(SEG_D, OUTPUT);
pinMode(SEG_E, OUTPUT);
pinMode(SEG_F, OUTPUT);
pinMode(SEG_G, OUTPUT);
pinMode(DIGIT_ONE_PIN, OUTPUT);
pinMode(DIGIT_TWO_PIN, OUTPUT);
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
start();
}
long currenttime;
int p = 1;
int i = 9;
int l = 9;
int m = -1;
long int k;
long int j;
int q = 0;
int t = 0;
void start(){
while (p > 0 || l >= 0) {
if (p == 1) {
digitalWrite(DIGIT_ONE_PIN, HIGH);
digitalWrite(DIGIT_TWO_PIN, LOW);
displayDigit(0, DIGIT_ONE_PIN);
delay(5);
digitalWrite(DIGIT_ONE_PIN, LOW);
digitalWrite(DIGIT_TWO_PIN, HIGH);
displayDigit(1, DIGIT_TWO_PIN);
delay(5);
if (millis() > currenttime + 1000) {
currenttime = millis();
p--;
}
}
if (i >= 1 && p == 0) {
digitalWrite(DIGIT_ONE_PIN, HIGH);
digitalWrite(DIGIT_TWO_PIN, LOW);
displayDigit(i, DIGIT_ONE_PIN);
delay(5);
digitalWrite(DIGIT_ONE_PIN, LOW);
digitalWrite(DIGIT_TWO_PIN, HIGH);
displayDigit(0, DIGIT_TWO_PIN);
delay(5);
if (millis() > currenttime + 1000) {
currenttime = millis();
i--;
l--;
}
}
if (l == 0) {
digitalWrite(DIGIT_ONE_PIN, HIGH);
digitalWrite(DIGIT_TWO_PIN, LOW);
displayDigit(10, DIGIT_ONE_PIN);
delay(5);
digitalWrite(DIGIT_ONE_PIN, LOW);
digitalWrite(DIGIT_TWO_PIN, HIGH);
displayDigit(11, DIGIT_TWO_PIN);
delay(5);
if (millis() > currenttime + 1000) {
currenttime = millis();
l--;
}
}
}
}
void optellen(){
digitalWrite(DIGIT_ONE_PIN, LOW);
digitalWrite(DIGIT_TWO_PIN, HIGH);
displayDigit((millis() - 10000) / 10000 % 10, DIGIT_ONE_PIN);
k = ((millis() - 10000) / 10000 % 10); // Calculate and display the tens digit
delay(3);
digitalWrite(DIGIT_ONE_PIN, HIGH);
digitalWrite(DIGIT_TWO_PIN, LOW);
displayDigit((millis() / 1000) % 10, DIGIT_TWO_PIN);
j = ((millis() / 1000) % 10);
if (j == 10){
j = 0;
}// Calculate and display the ones digit starting from 0
delay(3);
}
void loop(){
while (ds == 1) {
long currentTime = millis();
if(duration>=38000){
// Serial.print("Out range");
}
else{
distance = duration/58;
// Serial.print(distance);
// Serial.println("cm");
}
}
optellen();
switch (var) {
case 5: // finish
if (isFinish() == true) {
analogWrite(apwmPin, 0);
analogWrite(bpwmPin, 0);
ds = 0;
}
break;
case 1: // forward
analogWrite(apwmPin, 67);
analogWrite(bpwmPin, 70);
digitalWrite(adirectionPin, LOW);
digitalWrite(bdirectionPin, LOW);
break;
case 2: // right
if (results[3] || results[4]){
analogWrite(apwmPin, 45);
analogWrite(bpwmPin, 50);
digitalWrite(adirectionPin, HIGH);
digitalWrite(bdirectionPin, LOW);
}
break;
case 3: // left
if (results[0] || results[1]){
if(results[3] || results[4]){
var = 2;
}else{
analogWrite(apwmPin, 50);
analogWrite(bpwmPin, 45);
digitalWrite(adirectionPin, LOW);
digitalWrite(bdirectionPin, HIGH);
}
}
break;
case 4: // u-turn
analogWrite(apwmPin, 70);
analogWrite(bpwmPin, 60);
digitalWrite(adirectionPin, LOW);
digitalWrite(bdirectionPin, HIGH);
break;
if (q == 1){
digitalWrite(DIGIT_ONE_PIN, HIGH);
digitalWrite(DIGIT_TWO_PIN, LOW);
displayDigit(12, DIGIT_ONE_PIN);
delay(5);
digitalWrite(DIGIT_ONE_PIN, LOW);
digitalWrite(DIGIT_TWO_PIN, HIGH);
displayDigit(12, DIGIT_TWO_PIN);
delay(5);
if (millis() > currenttime + 1000) {
currenttime = millis();
q--;
t++;
}
}
}
while (t == 4){
digitalWrite(DIGIT_ONE_PIN, HIGH);
digitalWrite(DIGIT_TWO_PIN, LOW);
displayDigit(1, DIGIT_ONE_PIN);
delay(5);
digitalWrite(DIGIT_ONE_PIN, LOW);
digitalWrite(DIGIT_TWO_PIN, HIGH);
displayDigit(13, DIGIT_TWO_PIN);
delay(5);
}
}