add timers

This commit is contained in:
rafa 2025-05-24 02:53:19 +01:00
parent 417052335a
commit ae0603fbab

View File

@ -21,10 +21,10 @@ DallasTemperature temperature_sensors(&oneWire);
DistSensor dist_sensor = DistSensor(ULTRASONIC_SENSOR_PIN_TRIG, ULTRASONIC_SENSOR_PIN_ECHO, 25.0); DistSensor dist_sensor = DistSensor(ULTRASONIC_SENSOR_PIN_TRIG, ULTRASONIC_SENSOR_PIN_ECHO, 25.0);
Barrier barrier = Barrier(SERVO_PIN, 2); Barrier barrier = Barrier(SERVO_PIN, 2);
LCDScreen screen = LCDScreen(); LCDScreen screen = LCDScreen();
CarSpotCOntroller car_spot_controller = CarSpotCOntroller(2); CarSpotController car_spot_controller = CarSpotController(2);
JoySitkController joystick = JoySitkController(JOYSTICK_X_PIN, JOYSTICK_Y_PIN); JoystickController joystick = JoystickController(JOYSTICK_X_PIN, JOYSTICK_Y_PIN);
unsigned long current_time, sensor_last_time_activated, temperature_last_time_measured, joystick_last_time_activated; unsigned long current_time, sensor_last_time_readed, sensor_last_time_activated, temperature_last_time_measured, joystick_last_time_activated, joystick_last_time_readed, screen_last_time_updated;
float temperature_in_c = 0; float temperature_in_c = 0;
@ -37,50 +37,50 @@ void setup() {
screen.init(); screen.init();
} }
void loop() { void loop() {
current_time = millis(); current_time = millis();
if (dist_sensor.is_in_range()){ if (current_time - sensor_last_time_readed >= 1000){
sensor_last_time_activated = current_time; if (dist_sensor.is_in_range()){
if(barrier.is_closed()){ sensor_last_time_activated = current_time;
if (!car_spot_controller.is_full()){ if(barrier.is_closed()){
barrier.open(); if (!car_spot_controller.is_full()){
car_spot_controller.increment_occupied_spots(); barrier.open();
}else{ car_spot_controller.increment_occupied_spots();
tone(3, 262, 500); }else{
tone(3, 262, 500);
}
}
} else if (!dist_sensor.is_in_range() && barrier.is_open()){
if (current_time - sensor_last_time_activated >= barrier.open_time_seconds * 1000){
barrier.close();
} }
}
} else if (!dist_sensor.is_in_range() && barrier.is_open()){
if (current_time - sensor_last_time_activated >= barrier.open_time_seconds * 1000){
barrier.close();
} }
} }
if (current_time - temperature_last_time_measured >= 1000){ if (current_time - temperature_last_time_measured >= 1000){
temperature_last_time_measured = current_time; temperature_last_time_measured = current_time;
temperature_sensors.setWaitForConversion(false);
temperature_sensors.requestTemperatures(); temperature_sensors.requestTemperatures();
temperature_in_c = temperature_sensors.getTempCByIndex(0); temperature_in_c = temperature_sensors.getTempCByIndex(0);
} }
joystick.read(); if (joystick.is_moving_right() && current_time - joystick_last_time_activated >= 450){
if (joystick.is_moving_right() && current_time - joystick_last_time_activated >= 250){
joystick_last_time_activated = current_time; joystick_last_time_activated = current_time;
screen.set_state((screen.get_next_state())); screen.set_state((screen.get_next_state()));
} }
if (joystick.is_moving_left() && current_time - joystick_last_time_activated >= 250){ if (joystick.is_moving_left() && current_time - joystick_last_time_activated >= 450){
joystick_last_time_activated = current_time; joystick_last_time_activated = current_time;
screen.set_state(screen.get_previous_state()); screen.set_state(screen.get_previous_state());
} }
if (current_time - screen_last_time_updated >= 500){
screen_last_time_updated = current_time;
screen.display(temperature_in_c,car_spot_controller.get_total_spots(), car_spot_controller.get_occupied_spots());
}
screen.display(temperature_in_c,car_spot_controller.get_total_spots(), car_spot_controller.get_occupied_spots());
} }