So I am trying to make a car park for a school project. All is going well other than the tracker sensor. As you may know when a car is sensed at the entrance the tracker sensor is constantly inputting 1's and adding it to the count, this is resulting in the count going from 0-100 in a few seconds. I need it to only go from 0-8 as that is the amount of parking spaces in the carpark. I was going to use a do..while loop or a delay but I'm not sure what to do. I need assistance to make the Tracker sensor only read once when a car is placed infront, it gives a +1 to the count and waits till the car is gone and doesn't continue giving +1 but rather just 1 so that the counter can be displayed on a 7 segment. Thanks
#include "servomotors.h"
#include "7_segment.h"
const int tra1 = 2; // Entrance
const int tra2 = 7; // Exit
void setup() {
servomotorSetup();
segment_setup();
Serial.begin(9600);
pinMode(tra1, INPUT);
pinMode(tra2, INPUT);
}
int TRA1, TRA2, count = 0;
void loop() {
TRA1 = digitalRead(tra1);
TRA2 = digitalRead(tra2);
Serial.println(TRA1);
Serial.println(TRA2);
if (TRA1 == 1) { // Entrance
servo_entrance_open();
if (count == 0) {
eight();
} else if (count == 1) { // If 1 car display 7 (8-1)
seven();
} else if (count == 2) {
six();
} else if (count == 3) {
five();
} else if (count == 4) {
four();
} else if (count == 5) {
three();
} else if (count == 6) {
two();
} else if (count == 7) {
one();
} else if (count == 8) {
zero();
}
} else if (TRA2 == 1) { // Exit
count = count - 1;
}
Serial.println(count);
}
const int SEG_A = 3;
const int SEG_B = 4;
const int SEG_C = 12;
const int SEG_D = 13;
const int SEG_E = 9;
const int SEG_F = 10;
const int SEG_G = 11;
void segment_setup() {
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);
}
// SEG_A Top
// SEG_B Top Left
// SEG_C Middle
// SEG_D Top Right
// SEG E Bottom Right
// SEG F Bottom
// SEG G Bottom Left
void zero() {
digitalWrite(SEG_A,HIGH);
digitalWrite(SEG_B,HIGH);
digitalWrite(SEG_C,LOW);
digitalWrite(SEG_D,HIGH);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_G,HIGH);
digitalWrite(SEG_F,HIGH);
}
void one() {
digitalWrite(SEG_A,LOW);
digitalWrite(SEG_B,LOW);
digitalWrite(SEG_D,HIGH);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_C,LOW);
digitalWrite(SEG_F,LOW);
digitalWrite(SEG_G,LOW);
}
void two() {
digitalWrite(SEG_A,HIGH);
digitalWrite(SEG_B,LOW);
digitalWrite(SEG_D,HIGH);
digitalWrite(SEG_C,HIGH);
digitalWrite(SEG_E,LOW);
digitalWrite(SEG_G,HIGH);
digitalWrite(SEG_F,HIGH);
}
void three() {
digitalWrite(SEG_A,HIGH);
digitalWrite(SEG_B,LOW);
digitalWrite(SEG_D,HIGH);
digitalWrite(SEG_C,HIGH);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_F,HIGH);
digitalWrite(SEG_G,LOW);
}
void four() {
digitalWrite(SEG_A,LOW);
digitalWrite(SEG_B,HIGH);
digitalWrite(SEG_C,HIGH);
digitalWrite(SEG_D,HIGH);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_F,LOW);
digitalWrite(SEG_G,LOW);
}
void five() {
digitalWrite(SEG_A,HIGH);
digitalWrite(SEG_B,HIGH);
digitalWrite(SEG_C,HIGH);
digitalWrite(SEG_D,LOW);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_F,HIGH);
digitalWrite(SEG_G,LOW);
}
void six() {
digitalWrite(SEG_A,HIGH);
digitalWrite(SEG_B,HIGH);
digitalWrite(SEG_C,HIGH);
digitalWrite(SEG_D,LOW);
digitalWrite(SEG_G,HIGH);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_F,HIGH);
}
void seven() {
digitalWrite(SEG_A,HIGH);
digitalWrite(SEG_B,LOW);
digitalWrite(SEG_C,LOW);
digitalWrite(SEG_D,HIGH);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_F,LOW);
digitalWrite(SEG_G,LOW);
}
void eight() {
digitalWrite(SEG_A,HIGH);
digitalWrite(SEG_B,HIGH);
digitalWrite(SEG_C,HIGH);
digitalWrite(SEG_D,HIGH);
digitalWrite(SEG_E,HIGH);
digitalWrite(SEG_F,HIGH);
digitalWrite(SEG_G,HIGH);
}
#include <Servo.h>
const int GATE1 = 6; // Entrance
const int GATE2 = 5;// Exit
Servo gate1;
Servo gate2;
void servomotorSetup() {
pinMode(GATE1, OUTPUT);
pinMode(GATE2, OUTPUT);
gate1.attach(GATE1);
gate2.attach(GATE2);
}
// Change servo's values according to what is needed
void servo_entrance_open() {
gate1.write(175);
}
void servo_entrance_close() {
gate1.write(72);
}
void servo_exit_open() {
gate2.write(72);
}
void servo_exit_close() {
gate2.write(175);
}