Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 16000000
- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include <util/delay.h>
- #include "UI.h"
- #include "Car.h"
- #include "Uart.h"
- #include "Variables.h"
- // Initier UI globalt, så det kan tilgåes fra ISR
- UI ui;
- // Car defineres uden for main's scope, således den er tilgængelig for ISR også
- Car car;
- // Uart til debug
- UART uart(0, 9600, 8, 'N');
- int main(void)
- {
- // Som sikkerhed for, at Arduino er klar til at få opsat interrupts mv.
- _delay_ms(1000);
- // Tænd for globale interrupts
- sei();
- // Vis mulige trykknapper ved startup
- ui.showStartupMenu();
- char buttonPressed;
- while(1)
- {
- if (ui.anyButtonPressed())
- {
- uart.sendString("BUTTON PRESSED\r\n");
- buttonPressed = ui.getPressedButton();
- // Menuer i hhv. idleMode og test-/trackMode
- if (car.isInIdleMode())
- {
- uart.sendString("BUTTON PRESSED IN IDLE MODE\r\n");
- switch (buttonPressed)
- {
- case DRIVE_TRACK_BUTTON_NUMBER:
- car.driveTrack();
- ui.showAbortMenu();
- break;
- case TEST_MODE_BUTTON_NUMBER:
- car.testMode();
- ui.showAbortMenu();
- break;
- }
- } else if (car.isInTestMode() || car.isInTrackMode())
- {
- uart.sendString("BUTTON PRESSED IN TEST OR TRACK MODE\r\n");
- switch (buttonPressed) {
- case ABORT_BUTTON_NUMBER:
- car.abort();
- ui.showStartupMenu();
- break;
- }
- }
- // Så der kun kan registreres ét tryk pr. sek.
- _delay_ms(1000);
- }
- }
- }
- // Ekstern interrupt request 2 - Sensor Left. PD, ben 2 (og SW2 på Shield)
- ISR(INT2_vect) {
- uart.sendString("Reflection left detected.\r\n");
- car.reflectionDetected();
- }
- // Ekstern interrupt request 3 - Sensor Right. PD, ben 3 (og SW3 på Shield)
- ISR(INT3_vect) {
- uart.sendString("Reflection right detected.\r\n");
- car.reflectionDetected();
- }
- // Tænder for bilens sensorer igen
- ISR(TIMER1_COMPA_vect) {
- uart.sendString("Timer1 interrupt.\r\n");
- car.setReadyForNewReflection();
- }
- // Accellerer / Deaccelerer
- ISR(TIMER5_COMPA_vect) {
- car.accelerationHandler();
- }
- ISR(TIMER3_OVF_vect) {
- uart.sendString("TIMER 3 OVERFLOW \r\n");
- if (car.isInTestMode())
- {
- uart.sendString(" - TESTMODE: ALTER TEST STATE \r\n");
- car.updateTestModeState();
- } else if (car.isInTrackMode())
- {
- uart.sendString(" - TRACKMODE: TURN OFF BRAKELIGHTS \r\n");
- car.turnOffBrakeLights();
- car.disableBrakeLightTimer();
- }
- }
- ISR(TIMER0_OVF_vect) {
- car.headlightWinkHandler();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement