Typing speed tester

Dependencies:   C12832 mbed

Committer:
jad19925
Date:
Thu Feb 27 23:02:06 2014 +0000
Revision:
0:db917ef655c7
Type Racer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jad19925 0:db917ef655c7 1 /*
jad19925 0:db917ef655c7 2 Authors: Jacob Dahleen, Nadiyah Johnson
jad19925 0:db917ef655c7 3 */
jad19925 0:db917ef655c7 4 #include "mbed.h"
jad19925 0:db917ef655c7 5 #include "C12832.h"
jad19925 0:db917ef655c7 6 #include <string>
jad19925 0:db917ef655c7 7
jad19925 0:db917ef655c7 8 BusIn joy(p15,p12,p13,p16);
jad19925 0:db917ef655c7 9 DigitalIn fire(p14);
jad19925 0:db917ef655c7 10 C12832 lcd(p5, p7, p6, p8, p11);
jad19925 0:db917ef655c7 11 AnalogIn pot1(p19);
jad19925 0:db917ef655c7 12 AnalogIn pot2(p20);
jad19925 0:db917ef655c7 13 DigitalIn joyUp(p15);
jad19925 0:db917ef655c7 14 DigitalIn joyDown(p12);
jad19925 0:db917ef655c7 15 DigitalIn joyLeft(p13);
jad19925 0:db917ef655c7 16 DigitalIn joyRight(p16);
jad19925 0:db917ef655c7 17
jad19925 0:db917ef655c7 18
jad19925 0:db917ef655c7 19 Serial pc(USBTX, USBRX); // tx, rx
jad19925 0:db917ef655c7 20 InterruptIn firePress(p14);
jad19925 0:db917ef655c7 21 Timeout timeout;
jad19925 0:db917ef655c7 22 bool typing;
jad19925 0:db917ef655c7 23 bool countdown;
jad19925 0:db917ef655c7 24 bool gameOver;
jad19925 0:db917ef655c7 25 int wordCount;
jad19925 0:db917ef655c7 26
jad19925 0:db917ef655c7 27 BusOut leds(LED1,LED2,LED3,LED4);
jad19925 0:db917ef655c7 28 //const int SCREEN_WIDTH = 128;
jad19925 0:db917ef655c7 29 //const int SCREEN_HEIGHT = 32;
jad19925 0:db917ef655c7 30
jad19925 0:db917ef655c7 31 void fireISR() {
jad19925 0:db917ef655c7 32 leds=~leds;
jad19925 0:db917ef655c7 33 countdown=true;
jad19925 0:db917ef655c7 34 }
jad19925 0:db917ef655c7 35
jad19925 0:db917ef655c7 36 void endGameISR() {
jad19925 0:db917ef655c7 37 typing = false;
jad19925 0:db917ef655c7 38 gameOver = true;
jad19925 0:db917ef655c7 39 }
jad19925 0:db917ef655c7 40
jad19925 0:db917ef655c7 41 int main()
jad19925 0:db917ef655c7 42 {
jad19925 0:db917ef655c7 43 lcd.cls();
jad19925 0:db917ef655c7 44 lcd.printf("hello world");
jad19925 0:db917ef655c7 45 char c;
jad19925 0:db917ef655c7 46 typing = false;
jad19925 0:db917ef655c7 47 countdown = false;
jad19925 0:db917ef655c7 48 gameOver = false;
jad19925 0:db917ef655c7 49 wordCount = 0;
jad19925 0:db917ef655c7 50 int count = 5;
jad19925 0:db917ef655c7 51
jad19925 0:db917ef655c7 52 lcd.cls();
jad19925 0:db917ef655c7 53 lcd.locate(0,0);
jad19925 0:db917ef655c7 54 lcd.printf("Press joystick to start test");
jad19925 0:db917ef655c7 55
jad19925 0:db917ef655c7 56 //setup interrupt handlers
jad19925 0:db917ef655c7 57 firePress.rise(&fireISR);
jad19925 0:db917ef655c7 58
jad19925 0:db917ef655c7 59 while(1) {
jad19925 0:db917ef655c7 60 // if (fire) {
jad19925 0:db917ef655c7 61 // leds=0xf;
jad19925 0:db917ef655c7 62 // } else {
jad19925 0:db917ef655c7 63 // leds=joy;
jad19925 0:db917ef655c7 64 // }
jad19925 0:db917ef655c7 65 while(countdown){
jad19925 0:db917ef655c7 66 lcd.cls();
jad19925 0:db917ef655c7 67 lcd.locate(0,0);
jad19925 0:db917ef655c7 68 lcd.printf("Start Typing in %d", count);
jad19925 0:db917ef655c7 69 count--;
jad19925 0:db917ef655c7 70 wait(.5);
jad19925 0:db917ef655c7 71 if(0 == count){
jad19925 0:db917ef655c7 72 countdown=false;
jad19925 0:db917ef655c7 73 typing = true;
jad19925 0:db917ef655c7 74 count = 5;
jad19925 0:db917ef655c7 75 timeout.attach(&endGameISR,60);
jad19925 0:db917ef655c7 76 pc.printf("\r\nStart Typing\r\n");
jad19925 0:db917ef655c7 77 lcd.cls();
jad19925 0:db917ef655c7 78 lcd.locate(0,0);
jad19925 0:db917ef655c7 79 lcd.printf("Start Typing");
jad19925 0:db917ef655c7 80 }
jad19925 0:db917ef655c7 81 }
jad19925 0:db917ef655c7 82 while(typing){
jad19925 0:db917ef655c7 83 c = pc.getc();
jad19925 0:db917ef655c7 84 if('\n' == c){
jad19925 0:db917ef655c7 85 // lcd.cls();
jad19925 0:db917ef655c7 86 // lcd.locate(0,0);
jad19925 0:db917ef655c7 87 // lcd.printf("newline");
jad19925 0:db917ef655c7 88 pc.putc('\r');
jad19925 0:db917ef655c7 89 pc.putc(c);
jad19925 0:db917ef655c7 90 wordCount++;
jad19925 0:db917ef655c7 91 }
jad19925 0:db917ef655c7 92 else if('\r' == c){
jad19925 0:db917ef655c7 93 // lcd.cls();
jad19925 0:db917ef655c7 94 // lcd.locate(0,0);
jad19925 0:db917ef655c7 95 // lcd.printf("slash r");
jad19925 0:db917ef655c7 96 pc.putc(c);
jad19925 0:db917ef655c7 97 pc.putc('\n');
jad19925 0:db917ef655c7 98 wordCount++;
jad19925 0:db917ef655c7 99 }
jad19925 0:db917ef655c7 100 else if(' ' == c){
jad19925 0:db917ef655c7 101 pc.putc(c);
jad19925 0:db917ef655c7 102 wordCount++;
jad19925 0:db917ef655c7 103 }
jad19925 0:db917ef655c7 104 else{
jad19925 0:db917ef655c7 105 pc.putc(c);
jad19925 0:db917ef655c7 106 }
jad19925 0:db917ef655c7 107 }
jad19925 0:db917ef655c7 108 if(gameOver){
jad19925 0:db917ef655c7 109 lcd.cls();
jad19925 0:db917ef655c7 110 lcd.locate(0,0);
jad19925 0:db917ef655c7 111 lcd.printf("Words per minute: %d\n", wordCount);
jad19925 0:db917ef655c7 112 lcd.printf("Press joystick to start test");
jad19925 0:db917ef655c7 113 gameOver = false;
jad19925 0:db917ef655c7 114 wordCount = 0;
jad19925 0:db917ef655c7 115 }
jad19925 0:db917ef655c7 116 }
jad19925 0:db917ef655c7 117 }