Code for Longboard
Dependencies: mbed
main2.cpp@2:b150c439e583, 2018-04-26 (annotated)
- Committer:
- OliviaR
- Date:
- Thu Apr 26 22:35:44 2018 +0000
- Revision:
- 2:b150c439e583
rev2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
OliviaR | 2:b150c439e583 | 1 | #include "mbed.h" |
OliviaR | 2:b150c439e583 | 2 | #include "uLCD_4DGL.h" |
OliviaR | 2:b150c439e583 | 3 | #include "rtos.h" |
OliviaR | 2:b150c439e583 | 4 | |
OliviaR | 2:b150c439e583 | 5 | Serial pc(USBTX, USBRX); |
OliviaR | 2:b150c439e583 | 6 | Ticker t; |
OliviaR | 2:b150c439e583 | 7 | InterruptIn risingEdge(p8); //halleffect sensor |
OliviaR | 2:b150c439e583 | 8 | uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin; |
OliviaR | 2:b150c439e583 | 9 | AnalogIn batt(p19); |
OliviaR | 2:b150c439e583 | 10 | |
OliviaR | 2:b150c439e583 | 11 | |
OliviaR | 2:b150c439e583 | 12 | volatile int count = 0.0; |
OliviaR | 2:b150c439e583 | 13 | volatile float vel = 0.0; |
OliviaR | 2:b150c439e583 | 14 | float pbatt = 0.0; |
OliviaR | 2:b150c439e583 | 15 | |
OliviaR | 2:b150c439e583 | 16 | void pulses() //hall effect triggers |
OliviaR | 2:b150c439e583 | 17 | { |
OliviaR | 2:b150c439e583 | 18 | count++; |
OliviaR | 2:b150c439e583 | 19 | } |
OliviaR | 2:b150c439e583 | 20 | void halleffect() //calculates velocity |
OliviaR | 2:b150c439e583 | 21 | { |
OliviaR | 2:b150c439e583 | 22 | float temp = count; |
OliviaR | 2:b150c439e583 | 23 | count = 0; |
OliviaR | 2:b150c439e583 | 24 | temp = temp/4; // four magnets in trigger - gives rps |
OliviaR | 2:b150c439e583 | 25 | vel = temp * 3.14159 * 0.035 * 2 *60 * 60 * 0.000621371 ; // radius of .035m |
OliviaR | 2:b150c439e583 | 26 | } |
OliviaR | 2:b150c439e583 | 27 | |
OliviaR | 2:b150c439e583 | 28 | void display(void const *argument) //update battery voltage display and velocity |
OliviaR | 2:b150c439e583 | 29 | { |
OliviaR | 2:b150c439e583 | 30 | while(1) |
OliviaR | 2:b150c439e583 | 31 | { |
OliviaR | 2:b150c439e583 | 32 | float battAdj = float(batt * 3.3 * 3.968); |
OliviaR | 2:b150c439e583 | 33 | uLCD.color(WHITE); |
OliviaR | 2:b150c439e583 | 34 | uLCD.locate(2,2); |
OliviaR | 2:b150c439e583 | 35 | uLCD.printf("%3.1f", vel*0.67); |
OliviaR | 2:b150c439e583 | 36 | uLCD.locate(2,3); |
OliviaR | 2:b150c439e583 | 37 | uLCD.printf("MPH"); |
OliviaR | 2:b150c439e583 | 38 | //if (battAdj == pbatt) break; |
OliviaR | 2:b150c439e583 | 39 | if (battAdj >= 11) { |
OliviaR | 2:b150c439e583 | 40 | uLCD.filled_rectangle(6,99,29,16,GREEN); |
OliviaR | 2:b150c439e583 | 41 | pbatt = battAdj; |
OliviaR | 2:b150c439e583 | 42 | } |
OliviaR | 2:b150c439e583 | 43 | else if ((battAdj >= 9)&&(battAdj < 11)) { |
OliviaR | 2:b150c439e583 | 44 | uLCD.filled_rectangle(6,99,29,16,WHITE); |
OliviaR | 2:b150c439e583 | 45 | uLCD.filled_rectangle(6,99,29,45,(GREEN+RED)); |
OliviaR | 2:b150c439e583 | 46 | pbatt = battAdj; |
OliviaR | 2:b150c439e583 | 47 | } |
OliviaR | 2:b150c439e583 | 48 | else if (battAdj < 9) { |
OliviaR | 2:b150c439e583 | 49 | uLCD.filled_rectangle(6,99,29,16,WHITE); |
OliviaR | 2:b150c439e583 | 50 | uLCD.filled_rectangle(6,99,29,70,RED); |
OliviaR | 2:b150c439e583 | 51 | pbatt = battAdj; |
OliviaR | 2:b150c439e583 | 52 | } |
OliviaR | 2:b150c439e583 | 53 | Thread::wait(1000); |
OliviaR | 2:b150c439e583 | 54 | } |
OliviaR | 2:b150c439e583 | 55 | |
OliviaR | 2:b150c439e583 | 56 | } |
OliviaR | 2:b150c439e583 | 57 | |
OliviaR | 2:b150c439e583 | 58 | int main() |
OliviaR | 2:b150c439e583 | 59 | { |
OliviaR | 2:b150c439e583 | 60 | uLCD.cls(); |
OliviaR | 2:b150c439e583 | 61 | uLCD.baudrate(3000000); //jack up baud rate to max |
OliviaR | 2:b150c439e583 | 62 | uLCD.background_color(BLACK); |
OliviaR | 2:b150c439e583 | 63 | uLCD.cls(); |
OliviaR | 2:b150c439e583 | 64 | uLCD.text_width(3.5); |
OliviaR | 2:b150c439e583 | 65 | uLCD.text_height(3.5); |
OliviaR | 2:b150c439e583 | 66 | uLCD.filled_rectangle(5,100,30,15,WHITE); |
OliviaR | 2:b150c439e583 | 67 | uLCD.filled_rectangle(12,15,22,10,WHITE); |
OliviaR | 2:b150c439e583 | 68 | risingEdge.rise(&pulses); //interrupt routine |
OliviaR | 2:b150c439e583 | 69 | t.attach(&halleffect, 1.0); //calculate velocity every second |
OliviaR | 2:b150c439e583 | 70 | Thread displaythread(display); //update display |
OliviaR | 2:b150c439e583 | 71 | while(1) { |
OliviaR | 2:b150c439e583 | 72 | |
OliviaR | 2:b150c439e583 | 73 | } |
OliviaR | 2:b150c439e583 | 74 | } |