void DecisionThread::checkBlink(){ if ((blinkCounter > lowerBlink)&&(blinkCounter < upperBlink)){ emit BlinkSignal(true); } else { emit BlinkSignal(false); } blinkCounter = 0; }
int main(void) { init(); adc_init(); while (1) { //Read all sensors x_sensor = read_adc(0); y_sensor = read_adc(1); light_sensor = read_adc(2); range_sensor = read_adc(3); // Set Light Sensor Switch if(light_sensor > Light_Sensor_Threshold){ // Dark isNightTime = 1; } else if (light_sensor <= Light_Sensor_Threshold && movement_timer == 0){ isNightTime = 0; } // Accelerometer Setting if ((x_sensor < x_sensor_prev - movement_threshold) || (x_sensor > x_sensor_prev + movement_threshold) || (y_sensor < y_sensor_prev - movement_threshold) || (y_sensor > y_sensor_prev + movement_threshold)) { // movement in x-axis greater than threshold, turn the light on for 3 second movement_timer = 300; } x_sensor_prev = x_sensor; y_sensor_prev = y_sensor; // Turn the headlight on if is night time //HeadLightOn(&movement_timer, isNightTime); //Brake Light, if y-axis goes negative if (y_sensor >= 512){ PORTD |= 1 <<PD4; } else { PORTD &= ~(1 << PD4); } HeadLightOn(&movement_timer, isNightTime); Detect_Rear_Object(); // Turn Signals // Right Turn Signal if ((PIND & (1 << PD2)) && (rightTurnIsOn == 0) && (leftTurnIsOn == 0)) { //If PD2, the red button is pressed, turn on Right Turn Signal rightTurnSignalCounter = 250; rightTurnIsOn = 1; //PORTD |= (1 << PD3); } if ((rightTurnSignalCounter > 0) && rightTurnIsOn) { rightTurnSignalCounter--; } else if (rightTurnSignalCounter <= 0) { rightTurnIsOn = 0; } // Left Turn Signal if ((PIND & (1 << PD7)) && (leftTurnIsOn == 0) && (rightTurnIsOn == 0)) { // If PD7 is pressed, turn on Left Turn Signal leftTurnSignalCounter = 250; leftTurnIsOn = 1; } if ((leftTurnSignalCounter > 0) && leftTurnIsOn) { leftTurnSignalCounter--; } else if (leftTurnSignalCounter <= 0) { leftTurnIsOn = 0; } // Blink signal BlinkSignal(rightTurnSignalCounter, leftTurnSignalCounter, (1 << PD3), (1<< PD5)); //Trigger is Port B0 Beep(); _delay_ms(10); // Do not change this 10 ms delay } return 0; /* never reached */ }