Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE mbed-rtos mbed
main.cpp
- Committer:
- lzzcd001
- Date:
- 2015-03-09
- Revision:
- 0:9e4f9c949728
- Child:
- 1:9465d72db54f
File content as of revision 0:9e4f9c949728:
#include "mbed.h"
#include "rtos.h"
#include "uLCD_4DGL.h"
DigitalIn yes(p5);
DigitalIn no(p6);
uLCD_4DGL lcd(p28, p27, p30);
Mutex mutex;
LocalFileSystem local("local");
void setup()
{
lcd.baudrate(3000000);
lcd.background_color(0);
lcd.cls();
lcd.text_width(3); //4X size text
lcd.text_height(3);
//lcd.printf("Initializing...");
lcd.text_string("Initializing...", 0,0,FONT_8X12,BLUE);
}
void timer(void const *in) {
int* timeNo = (int*) in;
lcd.filled_rectangle(0,90,100,95,RED);
for (int i = 10; i>=0; i--) {
mutex.lock();
lcd.locate(9,10);
lcd.printf("00:%02d", i);
lcd.filled_rectangle(i*10,90,(i+1)*10,95,BLACK);
mutex.unlock();
Thread::wait(1000);
}
*timeNo = 0;
}
int main() {
yes.mode(PullUp);
no.mode(PullUp);
lcd.baudrate(3000000);
lcd.background_color(0);
lcd.cls();
lcd.color(WHITE);
lcd.printf("Initializing...");
int answer = 1;
bool flag = false;
int response = -1;
int score = 0;
int time;
int* timePointer = &time;
int question_no = 0;
bool endFlag = false;
char* question = (char*) malloc(sizeof(char) * 150+1);;
char* answerStr = (char*) malloc(sizeof(char)+1);;
wait(2);
lcd.cls();
lcd.printf("press to start");
while (yes == true && no == true) {}
lcd.cls();
lcd.printf("Quiz starts");
wait(2);
lcd.cls();
lcd.printf("Ready");
wait(2);
int total_no_questions = 100;
std::vector<std::string> question_inds;
for (i=0; i<total_no_questions; i++) {
question_ind[i] = i;
}
FILE *f = fopen("/local/test.txt", "r");
char buffer[1];
while (!endFlag) {
fgets(question, 150, f);
fgets(answerStr, 150, f);
sprintf(buffer, "%s", answerStr);
if (buffer[0] != 't' && buffer[0] != 'f') {
lcd.cls();
lcd.printf("Quiz ends");
wait(2);
endFlag = true;
break;
}
lcd.cls();
lcd.printf("Next Question");
wait(2);
question_no++;
if (buffer[0] == 't') {
answer = 1;
} else {
answer = 0;
}
for (int i = 3; i > 0; i--) {
lcd.cls();
//lcd.text_char(i, 12, 12, RED);
lcd.printf("%d",i);
Thread::wait(1000);
}
lcd.color(WHITE);
lcd.cls();
lcd.locate(1,1);
lcd.printf(question); // to be corrected
lcd.locate(2,14);
lcd.printf("Yes");
lcd.locate(14,14);
lcd.printf("No");
time = 10;
Thread timerr(timer, (void *) timePointer);
wait(0.1);
while (time >= 0 && flag == false) {
if (yes == true && no == true) {}
else if (yes == true) {
flag = true;
response = 1;
} else if (no == true) {
flag = true;
response = 0;
}
if (time == 0) {flag = true; response = -1;}
}
timerr.terminate();
if (response == 1) {
lcd.locate(2,14);
if (response == answer) {
lcd.textbackground_color(GREEN);
lcd.printf("Yes");
score++;
} else {
lcd.textbackground_color(RED);
lcd.printf("Yes");
}
} else if (response == 0) {
lcd.locate(14,14);
if (response == answer) {
lcd.textbackground_color(GREEN);
lcd.printf("No");
score++;
} else {
lcd.textbackground_color(RED);
lcd.printf("No");
}
} else if (response == -1) {
lcd.textbackground_color(RED);
lcd.locate(2,14);
lcd.printf("Yes");
lcd.locate(14,14);
lcd.printf("No");
};
wait(2);
lcd.cls();
lcd.locate(0,0);
lcd.textbackground_color(BLACK);
response = -2;
flag = false;
}
fclose(f);
lcd.cls();
lcd.printf("Total Score: %2.2f", score/(question_no+0.0) * 100);
while (true) {}
}