Penn Electric Steering Wheel prototype, using 128x64 KS0108 LCD screen.

Dependencies:   CANBuffer KS0108_fork mbed-rtos mbed

Committer:
tmccurbin
Date:
Sun Jan 11 05:25:13 2015 +0000
Revision:
1:ecba213d6524
Parent:
0:640be16d7ee2
Ver 1.0: Steering wheel display uses KS0108 (64x128 LCD screen) to show real-time updates to driver.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tmccurbin 0:640be16d7ee2 1 // FORMAT_CODE_START
tmccurbin 0:640be16d7ee2 2 // FORMAT_CODE_START
tmccurbin 0:640be16d7ee2 3 #include "Steering.h"
tmccurbin 0:640be16d7ee2 4
tmccurbin 0:640be16d7ee2 5 // Macro for printing to screen; Where y is the start poition of the text, and y2 is the start position of the variable
tmccurbin 0:640be16d7ee2 6 #define PUT2SCREEN(string, var, unit, x, y, y2) display.PutString(x, y, string); display.PutString(x, y2, var); display.PutString(x,y2+15,unit);
tmccurbin 0:640be16d7ee2 7
tmccurbin 0:640be16d7ee2 8 unsigned int x = 0;
tmccurbin 0:640be16d7ee2 9 unsigned int x_old = 0;
tmccurbin 0:640be16d7ee2 10 unsigned int x_new;
tmccurbin 0:640be16d7ee2 11 int diff = x_new-x_old;
tmccurbin 0:640be16d7ee2 12 int threshold = 1;
tmccurbin 0:640be16d7ee2 13 float y = 0.0;
tmccurbin 0:640be16d7ee2 14
tmccurbin 0:640be16d7ee2 15 void update_x(void const *args)
tmccurbin 0:640be16d7ee2 16 {
tmccurbin 0:640be16d7ee2 17 while (1) {
tmccurbin 0:640be16d7ee2 18 x++;
tmccurbin 0:640be16d7ee2 19 wait_ms(1); //I added this because the microcontroller was operating so fast that you couldn't read the numbers.
tmccurbin 0:640be16d7ee2 20 if (x >= 16000) {
tmccurbin 0:640be16d7ee2 21 x = 0;
tmccurbin 0:640be16d7ee2 22 }
tmccurbin 0:640be16d7ee2 23
tmccurbin 0:640be16d7ee2 24 x_new = x;
tmccurbin 0:640be16d7ee2 25 diff = x_new - x_old;
tmccurbin 0:640be16d7ee2 26 }
tmccurbin 0:640be16d7ee2 27 }
tmccurbin 0:640be16d7ee2 28
tmccurbin 0:640be16d7ee2 29 void update_y(void const *args)
tmccurbin 0:640be16d7ee2 30 {
tmccurbin 0:640be16d7ee2 31 while(1) {
tmccurbin 0:640be16d7ee2 32 y = y + 0.000001;
tmccurbin 0:640be16d7ee2 33 if (y >= 1.0) {
tmccurbin 0:640be16d7ee2 34 y = 0;
tmccurbin 0:640be16d7ee2 35
tmccurbin 0:640be16d7ee2 36 }
tmccurbin 0:640be16d7ee2 37 }
tmccurbin 0:640be16d7ee2 38
tmccurbin 0:640be16d7ee2 39 }
tmccurbin 0:640be16d7ee2 40
tmccurbin 0:640be16d7ee2 41 AnalogOut ledBar(p18);
tmccurbin 0:640be16d7ee2 42
tmccurbin 0:640be16d7ee2 43
tmccurbin 0:640be16d7ee2 44 int main()
tmccurbin 0:640be16d7ee2 45 {
tmccurbin 0:640be16d7ee2 46 wait(1);
tmccurbin 0:640be16d7ee2 47
tmccurbin 0:640be16d7ee2 48 Thread thread(update_x);
tmccurbin 0:640be16d7ee2 49
tmccurbin 0:640be16d7ee2 50 Thread thread2(update_y);
tmccurbin 0:640be16d7ee2 51
tmccurbin 0:640be16d7ee2 52
tmccurbin 0:640be16d7ee2 53 display.PutString(0, 42, "Live Test");
tmccurbin 0:640be16d7ee2 54
tmccurbin 0:640be16d7ee2 55 PUT2SCREEN("CAN-1:", CAN1Buffer, "", 3, 0, 30);
tmccurbin 0:640be16d7ee2 56 PUT2SCREEN("CAN-2:", CAN2Buffer, "", 3, 77,107);
tmccurbin 0:640be16d7ee2 57
tmccurbin 0:640be16d7ee2 58
tmccurbin 0:640be16d7ee2 59
tmccurbin 0:640be16d7ee2 60 PUT2SCREEN("CAN-3:", CAN3Buffer, "", 5, 0, 30);
tmccurbin 0:640be16d7ee2 61 PUT2SCREEN("CAN-4:", CAN4Buffer, "", 5, 77,107);
tmccurbin 0:640be16d7ee2 62
tmccurbin 0:640be16d7ee2 63 while (1) {
tmccurbin 0:640be16d7ee2 64 printf("x = %d y = %f\n", x, y); //9600 baud (default)
tmccurbin 0:640be16d7ee2 65
tmccurbin 0:640be16d7ee2 66 ledBar = y*(2.7/3.3);
tmccurbin 0:640be16d7ee2 67
tmccurbin 0:640be16d7ee2 68 if (abs(diff) >= threshold) {
tmccurbin 0:640be16d7ee2 69 display.GotoXY(30,24);
tmccurbin 0:640be16d7ee2 70 //display.PutString(3,30, " ");
tmccurbin 0:640be16d7ee2 71 display.PrintInteger(x,3,30);
tmccurbin 0:640be16d7ee2 72 display.PrintInteger(x,3,107);
tmccurbin 0:640be16d7ee2 73 display.PrintInteger(x,5,30);
tmccurbin 0:640be16d7ee2 74 display.PrintInteger(x,5,107);
tmccurbin 0:640be16d7ee2 75 x_old = x_new;
tmccurbin 0:640be16d7ee2 76 }
tmccurbin 0:640be16d7ee2 77 }
tmccurbin 0:640be16d7ee2 78
tmccurbin 0:640be16d7ee2 79 }
tmccurbin 0:640be16d7ee2 80 // FORMAT_CODE_END
tmccurbin 0:640be16d7ee2 81 // FORMAT_CODE_END