Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- mwgold
- Date:
- 2019-11-10
- Revision:
- 0:ca7cb51e9fd1
- Child:
- 1:54512aca944d
File content as of revision 0:ca7cb51e9fd1:
/* mbed Microcontroller Library
* Copyright (c) 2018 ARM Limited
* SPDX-License-Identifier: Apache-2.0
*/
#include "mbed.h"
#include "Road.h"
#include "AccCar.h"
#include "TextLCD.h"
TextLCD lcd(p15, p16, p17, p18, p19, p20);
// main() runs in its own thread in the OS
int main() {
// ------------------------------------------------------------------------------
// The following three variables are used for timing statistics, do not modify them
Timer stopwatch; // A timer to keep track of how long the updates take, for statistics purposes
int numberCycles = 0;
int totalUpdateTime = 0;
// ------------------------------------------------------------------------------
int time = 0;
Road road1;
stopwatch.start();
stopwatch.reset();
int return_cars[MAX_CARS];
do {
int new_cars = road1.try_enter_car(time);
road1.let_cars_update();
road1.wait_for_car_update();
printf("\r\nRoad 1 Update %d\r\n", time);
road1.print_status();
if(new_cars == -1 && road1.intersection_car == -1){
lcd.printf("x, x");
}
else if(new_cars != -1 && road1.intersection_car == -1){
lcd.printf("%d, x", new_cars);
}
else if(new_cars == -1 && road1.intersection_car != -1){
lcd.printf("x, %d", road1.intersection_car);
}
else{
lcd.printf("%d, %d", new_cars, road1.intersection_car);
}
printf("\r\n");
road1.check_exit_cars(return_cars);
time++;
// ------------------------------------------------------------------
// Timing statistics logic, do not modify
totalUpdateTime += stopwatch.read_ms();
numberCycles++;
stopwatch.reset();
// ------------------------------------------------------------------
lcd.cls();
//lcd.printf("1 %d -> %d\n2 %d -> %d", 0,0,car2.position, car2.speed);
} while( road1.active_cars > 0x00);
// ----------------------------------------------------------------------
// Timing statistics printout, do not modify
printf("Average update cycle took: %fms \r\n", (totalUpdateTime*1.0)/(numberCycles*1.0));
totalUpdateTime = 0;
numberCycles = 0;
// ----------------------------------------------------------------------
}
