Copy_Assignment3
Dependencies: mbed MCP23017 WattBob_TextLCD mbed-rtos
Diff: source/my_tools.cpp
- Revision:
- 0:8940db3353d7
diff -r 000000000000 -r 8940db3353d7 source/my_tools.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/source/my_tools.cpp Wed Mar 28 18:51:55 2018 +0000 @@ -0,0 +1,102 @@ +#include "my_tools.h" + +using namespace std; + +// TASK 1 +// Read an analog input and return a float between 0 and 1 +float readAnalogInput(AnalogIn pin) +{ + return (pin.read()); +} + +// Delete first value of the given vector (the head) +void deleteFirstValueVec(vector<float> &vec) +{ + vec.erase(vec.begin()); +} + +// TASK 4 & 5 +int monitorValue(float value, DigitalOut led, float thresholdValue) +{ + if (value > thresholdValue) + { + led = 1; + return (1); + } + else + { + led = 0; + return (0); + } +} + +// TASK 6 +void writeOnLCD(WattBob_TextLCD &lcd, float odometer, float avg) +{ + static bool firstTime = true; + /* We clear the LCD only the first time this function is run */ + if (firstTime) + { + /* Clear Display */ + lcd.cls(); + + /* Print Distance */ + lcd.locate(0, 0); + lcd.printf("D km: "); + + /* Print Avg Values of Speed */ + lcd.locate(1, 0); + lcd.printf("S kmh: "); + + firstTime = false; + } + + /* Print Distance */ + lcd.locate(0, 7); + lcd.printf("%.2f", odometer/1000); + + /* Print Avg Value of Speed */ + lcd.locate(1, 7); + lcd.printf("%05.1f", avg*3.6); +} + +// TASK 10 +void updateLEDs(carStructure *myCar, bool right, bool left) +{ + if (right && left) + { + // Both ON - 2Hz + myCar->p_rightLight->period_ms(500); + myCar->p_rightLight->pulsewidth_ms(250); + + myCar->p_leftLight->period_ms(500); + myCar->p_leftLight->pulsewidth_ms(250); + } + else if (right) + { + // Only right - 1Hz + myCar->p_rightLight->period_ms(1000); + myCar->p_rightLight->pulsewidth_ms(500); + + myCar->p_leftLight->period_ms(1000); + myCar->p_leftLight->pulsewidth_ms(0); + } + else if (left) + { + // Only left - 1Hz + myCar->p_rightLight->period_ms(1000); + myCar->p_rightLight->pulsewidth_ms(0); + + myCar->p_leftLight->period_ms(1000); + myCar->p_leftLight->pulsewidth_ms(500); + } + else + { + // Both OFF + myCar->p_rightLight->period_ms(1000); + myCar->p_rightLight->pulsewidth_ms(0.0); + + myCar->p_leftLight->period_ms(1000); + myCar->p_leftLight->pulsewidth_ms(0.0); + } +}