Code for Longboard

Dependencies:   mbed

Committer:
OliviaR
Date:
Thu Apr 26 22:35:44 2018 +0000
Revision:
2:b150c439e583
rev2

Who changed what in which revision?

UserRevisionLine numberNew 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 }