Interactive Alarm Clock Code
Dependencies: 4DGL-uLCD-SE mbed
main.cpp@0:68a3851de2ee, 2015-12-10 (annotated)
- Committer:
- tshin7
- Date:
- Thu Dec 10 08:59:55 2015 +0000
- Revision:
- 0:68a3851de2ee
Alarm Clock
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tshin7 | 0:68a3851de2ee | 1 | #include "mbed.h" |
tshin7 | 0:68a3851de2ee | 2 | #include "timeDisplay.h" |
tshin7 | 0:68a3851de2ee | 3 | #include "uLCD_4DGL.h" |
tshin7 | 0:68a3851de2ee | 4 | #include "setAlarm.h" |
tshin7 | 0:68a3851de2ee | 5 | #include "ledColorSequence.h" |
tshin7 | 0:68a3851de2ee | 6 | #include "mathProblem.h" |
tshin7 | 0:68a3851de2ee | 7 | #include "speaker.h" |
tshin7 | 0:68a3851de2ee | 8 | #include "alarmChoice.h" |
tshin7 | 0:68a3851de2ee | 9 | #include <string> |
tshin7 | 0:68a3851de2ee | 10 | |
tshin7 | 0:68a3851de2ee | 11 | DigitalIn hourSet(p5); |
tshin7 | 0:68a3851de2ee | 12 | DigitalIn minSet(p6); |
tshin7 | 0:68a3851de2ee | 13 | DigitalIn gameChoice(p7); |
tshin7 | 0:68a3851de2ee | 14 | DigitalIn missionControlWin(p28); |
tshin7 | 0:68a3851de2ee | 15 | DigitalOut missionControlReset(p29); |
tshin7 | 0:68a3851de2ee | 16 | DigitalOut missionControlStart(p30); |
tshin7 | 0:68a3851de2ee | 17 | Serial device(USBTX,USBRX); |
tshin7 | 0:68a3851de2ee | 18 | Serial bluetooth(p13,p14); |
tshin7 | 0:68a3851de2ee | 19 | timeDisplay timeLCD; |
tshin7 | 0:68a3851de2ee | 20 | setAlarm alarmSet; |
tshin7 | 0:68a3851de2ee | 21 | ledColorSequence LedGame; |
tshin7 | 0:68a3851de2ee | 22 | mathProblem mathProblemGame; |
tshin7 | 0:68a3851de2ee | 23 | alarmChoice alarmGameChoice; |
tshin7 | 0:68a3851de2ee | 24 | speaker speakerPlay; |
tshin7 | 0:68a3851de2ee | 25 | Timer tSpeaker; |
tshin7 | 0:68a3851de2ee | 26 | Timer tLED; |
tshin7 | 0:68a3851de2ee | 27 | |
tshin7 | 0:68a3851de2ee | 28 | string currentTime; |
tshin7 | 0:68a3851de2ee | 29 | string currentAlarmTime; |
tshin7 | 0:68a3851de2ee | 30 | string chosenGameName = "LED Color Sequence"; |
tshin7 | 0:68a3851de2ee | 31 | char mathProblemAnswerStr [5]; |
tshin7 | 0:68a3851de2ee | 32 | string ledColorSeq = " "; |
tshin7 | 0:68a3851de2ee | 33 | char input; |
tshin7 | 0:68a3851de2ee | 34 | int chosenGame = 0; |
tshin7 | 0:68a3851de2ee | 35 | int mathProblemAnswer=0; |
tshin7 | 0:68a3851de2ee | 36 | int mathProblemAnswerLength; |
tshin7 | 0:68a3851de2ee | 37 | int charCount = 0; |
tshin7 | 0:68a3851de2ee | 38 | int matched = 0; |
tshin7 | 0:68a3851de2ee | 39 | int score; |
tshin7 | 0:68a3851de2ee | 40 | |
tshin7 | 0:68a3851de2ee | 41 | int main() |
tshin7 | 0:68a3851de2ee | 42 | { |
tshin7 | 0:68a3851de2ee | 43 | hourSet.mode(PullDown); |
tshin7 | 0:68a3851de2ee | 44 | minSet.mode(PullDown); |
tshin7 | 0:68a3851de2ee | 45 | gameChoice.mode(PullDown); |
tshin7 | 0:68a3851de2ee | 46 | timeLCD.setTime(); |
tshin7 | 0:68a3851de2ee | 47 | bluetooth.baud(115200); |
tshin7 | 0:68a3851de2ee | 48 | tSpeaker.start(); |
tshin7 | 0:68a3851de2ee | 49 | tLED.start(); |
tshin7 | 0:68a3851de2ee | 50 | while(1) { |
tshin7 | 0:68a3851de2ee | 51 | printf("%s", missionControlWin ? "true" : "false"); |
tshin7 | 0:68a3851de2ee | 52 | currentTime = timeLCD.displayTime(); |
tshin7 | 0:68a3851de2ee | 53 | currentAlarmTime = alarmSet.displayAlarmTime(); |
tshin7 | 0:68a3851de2ee | 54 | alarmGameChoice.displayChoice(); |
tshin7 | 0:68a3851de2ee | 55 | if(hourSet==1) { |
tshin7 | 0:68a3851de2ee | 56 | alarmSet.setHour(); |
tshin7 | 0:68a3851de2ee | 57 | } else if (minSet==1) { |
tshin7 | 0:68a3851de2ee | 58 | alarmSet.setMinute(); |
tshin7 | 0:68a3851de2ee | 59 | } |
tshin7 | 0:68a3851de2ee | 60 | if (gameChoice == 1) { |
tshin7 | 0:68a3851de2ee | 61 | chosenGameName = alarmGameChoice.setGameName(); |
tshin7 | 0:68a3851de2ee | 62 | chosenGame = alarmGameChoice.setGame(); |
tshin7 | 0:68a3851de2ee | 63 | } |
tshin7 | 0:68a3851de2ee | 64 | if (currentAlarmTime.compare(currentTime)==0) { |
tshin7 | 0:68a3851de2ee | 65 | speakerPlay.playSpeaker(); |
tshin7 | 0:68a3851de2ee | 66 | if (chosenGame == 0) { |
tshin7 | 0:68a3851de2ee | 67 | ledColorSeq=LedGame.chooseColor(); |
tshin7 | 0:68a3851de2ee | 68 | tLED.stop(); |
tshin7 | 0:68a3851de2ee | 69 | tLED.reset(); |
tshin7 | 0:68a3851de2ee | 70 | tLED.start(); |
tshin7 | 0:68a3851de2ee | 71 | wait(.9); |
tshin7 | 0:68a3851de2ee | 72 | } else if (chosenGame == 1) { |
tshin7 | 0:68a3851de2ee | 73 | mathProblemAnswer = mathProblemGame.displayMathProblem(); |
tshin7 | 0:68a3851de2ee | 74 | mathProblemAnswerLength = sprintf(mathProblemAnswerStr,"%d",mathProblemAnswer); |
tshin7 | 0:68a3851de2ee | 75 | wait(.9); |
tshin7 | 0:68a3851de2ee | 76 | } else if (chosenGame ==2) { |
tshin7 | 0:68a3851de2ee | 77 | missionControlReset=1; |
tshin7 | 0:68a3851de2ee | 78 | missionControlStart=1; |
tshin7 | 0:68a3851de2ee | 79 | wait(.9); |
tshin7 | 0:68a3851de2ee | 80 | } |
tshin7 | 0:68a3851de2ee | 81 | } |
tshin7 | 0:68a3851de2ee | 82 | if (ledColorSeq!=" ") { |
tshin7 | 0:68a3851de2ee | 83 | if(tSpeaker.read()>=7.65){ |
tshin7 | 0:68a3851de2ee | 84 | tSpeaker.stop(); |
tshin7 | 0:68a3851de2ee | 85 | tSpeaker.reset(); |
tshin7 | 0:68a3851de2ee | 86 | tSpeaker.start(); |
tshin7 | 0:68a3851de2ee | 87 | speakerPlay.playSpeaker(); |
tshin7 | 0:68a3851de2ee | 88 | } |
tshin7 | 0:68a3851de2ee | 89 | if(tLED.read()>=5){ |
tshin7 | 0:68a3851de2ee | 90 | tLED.stop(); |
tshin7 | 0:68a3851de2ee | 91 | tLED.reset(); |
tshin7 | 0:68a3851de2ee | 92 | tLED.start(); |
tshin7 | 0:68a3851de2ee | 93 | LedGame.repeatColorSequence(ledColorSeq); |
tshin7 | 0:68a3851de2ee | 94 | } |
tshin7 | 0:68a3851de2ee | 95 | while(bluetooth.readable()) { |
tshin7 | 0:68a3851de2ee | 96 | while(charCount<ledColorSeq.length()) { |
tshin7 | 0:68a3851de2ee | 97 | if (bluetooth.getc()==ledColorSeq[charCount]) { |
tshin7 | 0:68a3851de2ee | 98 | matched++; |
tshin7 | 0:68a3851de2ee | 99 | charCount++; |
tshin7 | 0:68a3851de2ee | 100 | } |
tshin7 | 0:68a3851de2ee | 101 | } |
tshin7 | 0:68a3851de2ee | 102 | if (matched==ledColorSeq.length()) { |
tshin7 | 0:68a3851de2ee | 103 | speakerPlay.turnOffSpeaker(); |
tshin7 | 0:68a3851de2ee | 104 | LedGame.turnOffColor(); |
tshin7 | 0:68a3851de2ee | 105 | ledColorSeq=" "; |
tshin7 | 0:68a3851de2ee | 106 | } |
tshin7 | 0:68a3851de2ee | 107 | charCount=0; |
tshin7 | 0:68a3851de2ee | 108 | matched=0; |
tshin7 | 0:68a3851de2ee | 109 | } |
tshin7 | 0:68a3851de2ee | 110 | } else if (mathProblemAnswer != 0) { |
tshin7 | 0:68a3851de2ee | 111 | if(tSpeaker.read()>=7.65){ |
tshin7 | 0:68a3851de2ee | 112 | tSpeaker.stop(); |
tshin7 | 0:68a3851de2ee | 113 | tSpeaker.reset(); |
tshin7 | 0:68a3851de2ee | 114 | tSpeaker.start(); |
tshin7 | 0:68a3851de2ee | 115 | speakerPlay.playSpeaker(); |
tshin7 | 0:68a3851de2ee | 116 | } |
tshin7 | 0:68a3851de2ee | 117 | while(bluetooth.readable()) { |
tshin7 | 0:68a3851de2ee | 118 | while(charCount<mathProblemAnswerLength) { |
tshin7 | 0:68a3851de2ee | 119 | if (bluetooth.getc()==mathProblemAnswerStr[charCount]) { |
tshin7 | 0:68a3851de2ee | 120 | matched++; |
tshin7 | 0:68a3851de2ee | 121 | charCount++; |
tshin7 | 0:68a3851de2ee | 122 | } |
tshin7 | 0:68a3851de2ee | 123 | } |
tshin7 | 0:68a3851de2ee | 124 | if (matched==mathProblemAnswerLength) { |
tshin7 | 0:68a3851de2ee | 125 | speakerPlay.turnOffSpeaker(); |
tshin7 | 0:68a3851de2ee | 126 | mathProblemGame.eraseMathProblem(); |
tshin7 | 0:68a3851de2ee | 127 | mathProblemAnswer=0; |
tshin7 | 0:68a3851de2ee | 128 | } |
tshin7 | 0:68a3851de2ee | 129 | charCount=0; |
tshin7 | 0:68a3851de2ee | 130 | matched=0; |
tshin7 | 0:68a3851de2ee | 131 | } |
tshin7 | 0:68a3851de2ee | 132 | } else if (missionControlStart == 1) { |
tshin7 | 0:68a3851de2ee | 133 | if(tSpeaker.read()>=7.65){ |
tshin7 | 0:68a3851de2ee | 134 | tSpeaker.stop(); |
tshin7 | 0:68a3851de2ee | 135 | tSpeaker.reset(); |
tshin7 | 0:68a3851de2ee | 136 | tSpeaker.start(); |
tshin7 | 0:68a3851de2ee | 137 | speakerPlay.playSpeaker(); |
tshin7 | 0:68a3851de2ee | 138 | } |
tshin7 | 0:68a3851de2ee | 139 | if (missionControlWin == 1){ |
tshin7 | 0:68a3851de2ee | 140 | missionControlReset=0; |
tshin7 | 0:68a3851de2ee | 141 | missionControlReset=1; |
tshin7 | 0:68a3851de2ee | 142 | missionControlStart=0; |
tshin7 | 0:68a3851de2ee | 143 | speakerPlay.turnOffSpeaker(); |
tshin7 | 0:68a3851de2ee | 144 | } |
tshin7 | 0:68a3851de2ee | 145 | } |
tshin7 | 0:68a3851de2ee | 146 | } |
tshin7 | 0:68a3851de2ee | 147 | } |