Aaron Reavley / Mbed 2 deprecated FingerPrintSenor

Dependencies:   mbed

Committer:
Reavley
Date:
Thu May 23 10:11:51 2019 +0000
Revision:
3:78667562f5f2
Child:
4:ca4c9403dc59
Updated Fingerprint Scanner

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Reavley 3:78667562f5f2 1 //Currentl a hand held smart assive secuirty and mulitple function tool.
Reavley 3:78667562f5f2 2 //Has the ability to active alarm and LEDs if anyone unautherised try to access it
Reavley 3:78667562f5f2 3 //Also capabile of manually actiaving the alarm, Flash the LEDs and changing the
Reavley 3:78667562f5f2 4 //LCD screen brightness, with more options to be added later.
Reavley 3:78667562f5f2 5
Reavley 3:78667562f5f2 6 //Issues - Current error of not compilying otherwhise it is compeleted
Reavley 3:78667562f5f2 7
Reavley 3:78667562f5f2 8 //Libraries
Reavley 3:78667562f5f2 9 #include "mbed.h"
Reavley 3:78667562f5f2 10 #include "GT511C3.hpp"
Reavley 3:78667562f5f2 11 #include "N5110.h"
Reavley 3:78667562f5f2 12 #include "Joystick.h"
Reavley 3:78667562f5f2 13 #include "beep.h"
Reavley 3:78667562f5f2 14
Reavley 3:78667562f5f2 15 //Ports
Reavley 3:78667562f5f2 16 Serial PC(USBTX, USBRX); //Serial Connection
Reavley 3:78667562f5f2 17 GT511C3 finger(PTC17,PTC16);//Fingerprint scanner Connection
Reavley 3:78667562f5f2 18 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // LCD screen Connection
Reavley 3:78667562f5f2 19 Joystick joystick(PTB10,PTB11,PTC16); // Joystick Connection
Reavley 3:78667562f5f2 20
Reavley 3:78667562f5f2 21
Reavley 3:78667562f5f2 22 AnalogIn mypot(PTB2); //Potentiometer on gamepad
Reavley 3:78667562f5f2 23 Beep pz(PTC10); //Piezo on gamepad
Reavley 3:78667562f5f2 24 DigitalIn start(PTC5); //Start button on gamepad
Reavley 3:78667562f5f2 25 DigitalIn back(PTB19); //Back button on gamepad
Reavley 3:78667562f5f2 26
Reavley 3:78667562f5f2 27
Reavley 3:78667562f5f2 28 DigitalIn A(PTB9); //Buttons A, B, X amd Y
Reavley 3:78667562f5f2 29 DigitalIn B(PTD0);
Reavley 3:78667562f5f2 30 DigitalIn X(PTC17);
Reavley 3:78667562f5f2 31 DigitalIn Y(PTC12);
Reavley 3:78667562f5f2 32
Reavley 3:78667562f5f2 33 DigitalOut myled(LED1); //LED on K64
Reavley 3:78667562f5f2 34 DigitalOut led1(PTA1); //LED's 1-6 on gamepad
Reavley 3:78667562f5f2 35 DigitalOut led2(PTA2);
Reavley 3:78667562f5f2 36 DigitalOut led3(PTC2);
Reavley 3:78667562f5f2 37 DigitalOut led4(PTC3);
Reavley 3:78667562f5f2 38 DigitalOut led5(PTC4);
Reavley 3:78667562f5f2 39 DigitalOut led6(PTD3);
Reavley 3:78667562f5f2 40
Reavley 3:78667562f5f2 41 //Functions
Reavley 3:78667562f5f2 42 void initization();
Reavley 3:78667562f5f2 43 void test_ports();
Reavley 3:78667562f5f2 44 void startscreen();
Reavley 3:78667562f5f2 45 void login();
Reavley 3:78667562f5f2 46 void alarm();
Reavley 3:78667562f5f2 47 void led();
Reavley 3:78667562f5f2 48 void lcdrightness();
Reavley 3:78667562f5f2 49 void piezohz();
Reavley 3:78667562f5f2 50 void alarmtime();
Reavley 3:78667562f5f2 51 void newenrol();
Reavley 3:78667562f5f2 52 void menu();
Reavley 3:78667562f5f2 53 void navigator();
Reavley 3:78667562f5f2 54 void submenu1();
Reavley 3:78667562f5f2 55 void submenu2();
Reavley 3:78667562f5f2 56 void sleep();
Reavley 3:78667562f5f2 57
Reavley 3:78667562f5f2 58 //Variables
Reavley 3:78667562f5f2 59 char buffer[14];
Reavley 3:78667562f5f2 60 float pot_value = 0.5;
Reavley 3:78667562f5f2 61 float hz_value = 1000;
Reavley 3:78667562f5f2 62 int time_value = 10;
Reavley 3:78667562f5f2 63 int sts = 0;
Reavley 3:78667562f5f2 64 int ID = 0;
Reavley 3:78667562f5f2 65
Reavley 3:78667562f5f2 66 int progress(int status,char *msg){//tracking progress
Reavley 3:78667562f5f2 67 PC.printf("%s", msg);
Reavley 3:78667562f5f2 68 return 0;
Reavley 3:78667562f5f2 69 }
Reavley 3:78667562f5f2 70
Reavley 3:78667562f5f2 71 void initization(){
Reavley 3:78667562f5f2 72
Reavley 3:78667562f5f2 73 PC.format(8,Serial::None,1);
Reavley 3:78667562f5f2 74 PC.baud(9600);
Reavley 3:78667562f5f2 75
Reavley 3:78667562f5f2 76 PC.printf("Fingerprint reader module \"GT-511C3\" test program. \n");
Reavley 3:78667562f5f2 77 PC.printf("Build: %s %s \n",__DATE__,__TIME__);
Reavley 3:78667562f5f2 78
Reavley 3:78667562f5f2 79 sts = finger.Open();
Reavley 3:78667562f5f2 80 PC.printf("sts = %d \n",sts);
Reavley 3:78667562f5f2 81 if(sts == 0){
Reavley 3:78667562f5f2 82 int i;
Reavley 3:78667562f5f2 83 PC.printf("FirmwareVersion = %lx \n",finger.FirmwareVersion);
Reavley 3:78667562f5f2 84 PC.printf("IsoAreaMaxSize = %ld \n",finger.IsoAreaMaxSize);
Reavley 3:78667562f5f2 85 PC.printf("DeviceSerialNumber = %ld \n", finger.DeviceSerialNumber);
Reavley 3:78667562f5f2 86 for(i = 0; i < sizeof(finger.DeviceSerialNumber); i++) {
Reavley 3:78667562f5f2 87 PC.printf("%02X",finger.DeviceSerialNumber[i]);
Reavley 3:78667562f5f2 88 } //prints information about the system
Reavley 3:78667562f5f2 89 }
Reavley 3:78667562f5f2 90 PC.printf("\n");
Reavley 3:78667562f5f2 91
Reavley 3:78667562f5f2 92 lcd.init(); //initiliaze lcd
Reavley 3:78667562f5f2 93 lcd.normalMode();
Reavley 3:78667562f5f2 94 lcd.setBrightness(0.5);
Reavley 3:78667562f5f2 95 lcd.setContrast(0.5);
Reavley 3:78667562f5f2 96
Reavley 3:78667562f5f2 97 joystick.init(); //initiliaze joystick
Reavley 3:78667562f5f2 98
Reavley 3:78667562f5f2 99 A.mode(PullDown); //Set buttons so, pressed = high and not pressed = low
Reavley 3:78667562f5f2 100 B.mode(PullDown);
Reavley 3:78667562f5f2 101 X.mode(PullDown);
Reavley 3:78667562f5f2 102 Y.mode(PullDown);
Reavley 3:78667562f5f2 103 start.mode(PullDown);
Reavley 3:78667562f5f2 104 back.mode(PullDown);
Reavley 3:78667562f5f2 105
Reavley 3:78667562f5f2 106 test_ports(); //test connections
Reavley 3:78667562f5f2 107 }
Reavley 3:78667562f5f2 108
Reavley 3:78667562f5f2 109 void test_ports(){
Reavley 3:78667562f5f2 110 PC.printf("test \n");
Reavley 3:78667562f5f2 111
Reavley 3:78667562f5f2 112 //check each button, LEDs and print character on screen
Reavley 3:78667562f5f2 113 if(A.read() == 1){
Reavley 3:78667562f5f2 114 lcd.clear();
Reavley 3:78667562f5f2 115 lcd.printString("Print A",0,1);
Reavley 3:78667562f5f2 116 lcd.refresh();
Reavley 3:78667562f5f2 117 PC.printf("Button A Pressed \n");
Reavley 3:78667562f5f2 118 led1 = 1; led2 = 1; wait(2);
Reavley 3:78667562f5f2 119 led1 = 0; led2 = 0;
Reavley 3:78667562f5f2 120 }
Reavley 3:78667562f5f2 121
Reavley 3:78667562f5f2 122 if(B.read() == 1){
Reavley 3:78667562f5f2 123 lcd.clear();
Reavley 3:78667562f5f2 124 lcd.printString("Print B",0,1);
Reavley 3:78667562f5f2 125 lcd.refresh();
Reavley 3:78667562f5f2 126 PC.printf("Button B Pressed \n");
Reavley 3:78667562f5f2 127 led3 = 1; led4 = 1; wait(2);
Reavley 3:78667562f5f2 128 led3 = 0; led4 = 0;
Reavley 3:78667562f5f2 129 }
Reavley 3:78667562f5f2 130
Reavley 3:78667562f5f2 131 if(Y.read() == 1){
Reavley 3:78667562f5f2 132 lcd.clear();
Reavley 3:78667562f5f2 133 lcd.printString("Print Y",0,1);
Reavley 3:78667562f5f2 134 lcd.refresh();
Reavley 3:78667562f5f2 135 PC.printf("Button Y Pressed \n");
Reavley 3:78667562f5f2 136 led5 = 1; led6 = 1; wait(2);
Reavley 3:78667562f5f2 137 led5 = 0; led6 = 0;
Reavley 3:78667562f5f2 138 }
Reavley 3:78667562f5f2 139
Reavley 3:78667562f5f2 140 if(X.read() == 1){
Reavley 3:78667562f5f2 141 lcd.clear();
Reavley 3:78667562f5f2 142 lcd.printString("Print X",0,1);
Reavley 3:78667562f5f2 143 lcd.refresh();
Reavley 3:78667562f5f2 144 PC.printf("Button X Pressed \n");
Reavley 3:78667562f5f2 145 led1 = 1; led2 = 1; led3 = 1;
Reavley 3:78667562f5f2 146 led4 = 1; led5 = 1; led6 = 1; wait(2);
Reavley 3:78667562f5f2 147 led1 = 0; led2 = 0; led3 = 0;
Reavley 3:78667562f5f2 148 led4 = 0; led5 = 0; led6 = 0;
Reavley 3:78667562f5f2 149 }
Reavley 3:78667562f5f2 150
Reavley 3:78667562f5f2 151 pot_value = mypot.read(); //range between 0.0 - 1.0
Reavley 3:78667562f5f2 152 hz_value = 10000*pot_value; // converts pot value to between 1000hz to 10000hz
Reavley 3:78667562f5f2 153
Reavley 3:78667562f5f2 154 PC.printf("Pot value = %.2f \n",pot_value);
Reavley 3:78667562f5f2 155 PC.printf("Hz value = %.2f \n",hz_value);
Reavley 3:78667562f5f2 156
Reavley 3:78667562f5f2 157 lcd.clear();
Reavley 3:78667562f5f2 158 lcd.setContrast(pot_value); //tune LCD contrast
Reavley 3:78667562f5f2 159 lcd.setBrightness(pot_value); //tune LCD brightness
Reavley 3:78667562f5f2 160 lcd.refresh();
Reavley 3:78667562f5f2 161
Reavley 3:78667562f5f2 162 if(start.read() == 1){
Reavley 3:78667562f5f2 163 startscreen();
Reavley 3:78667562f5f2 164 }
Reavley 3:78667562f5f2 165 }
Reavley 3:78667562f5f2 166
Reavley 3:78667562f5f2 167 void startscreen(){
Reavley 3:78667562f5f2 168 PC.printf("Ideal \n");
Reavley 3:78667562f5f2 169
Reavley 3:78667562f5f2 170 lcd.clear();
Reavley 3:78667562f5f2 171 lcd.printString("--Idle State--", 0,0);
Reavley 3:78667562f5f2 172 lcd.printString("To Begin", 0,1);
Reavley 3:78667562f5f2 173 lcd.printString("Press Start", 0,2);
Reavley 3:78667562f5f2 174 lcd.refresh();
Reavley 3:78667562f5f2 175 int f = 0;
Reavley 3:78667562f5f2 176
Reavley 3:78667562f5f2 177 while(start.read() != 1){
Reavley 3:78667562f5f2 178 sleep();
Reavley 3:78667562f5f2 179 }
Reavley 3:78667562f5f2 180
Reavley 3:78667562f5f2 181 if(start.read() == 1){ //when Start button pressed activate
Reavley 3:78667562f5f2 182 PC.printf("Start \n");
Reavley 3:78667562f5f2 183 int EnrollID = 11; // Correct Finger Enroll number
Reavley 3:78667562f5f2 184 if(finger.CheckEnrolled(EnrollID) == 0){
Reavley 3:78667562f5f2 185 PC.printf("EnrollID(%d) is already enrolled. Delete! \n",EnrollID);
Reavley 3:78667562f5f2 186 if(finger.DeleteID(EnrollID) == 0){
Reavley 3:78667562f5f2 187 PC.printf("Delete OK! \n");
Reavley 3:78667562f5f2 188 }
Reavley 3:78667562f5f2 189 }
Reavley 3:78667562f5f2 190
Reavley 3:78667562f5f2 191 lcd.clear(); //prompt user
Reavley 3:78667562f5f2 192 lcd.printString("Hello, Please", 0,0);
Reavley 3:78667562f5f2 193 lcd.printString("Place Finger" , 0,1);
Reavley 3:78667562f5f2 194 lcd.printString("on the Scanner",0,2);
Reavley 3:78667562f5f2 195 lcd.printString("to Verify ID!", 0,3);
Reavley 3:78667562f5f2 196 lcd.refresh();
Reavley 3:78667562f5f2 197 wait(5.0);
Reavley 3:78667562f5f2 198
Reavley 3:78667562f5f2 199 lcd.clear();
Reavley 3:78667562f5f2 200 lcd.printString("This will",0,0);
Reavley 3:78667562f5f2 201 lcd.printString("require three",0,1);
Reavley 3:78667562f5f2 202 lcd.printString("attemps of the",0,2);
Reavley 3:78667562f5f2 203 lcd.printString("desired finger",0,3);
Reavley 3:78667562f5f2 204 lcd.printString("to enroll!",0,4);
Reavley 3:78667562f5f2 205 lcd.refresh();
Reavley 3:78667562f5f2 206
Reavley 3:78667562f5f2 207 finger.Enroll(EnrollID,progress);//Enrollment
Reavley 3:78667562f5f2 208
Reavley 3:78667562f5f2 209 if(finger.CheckEnrolled(EnrollID) == 0){//Enrollment completed
Reavley 3:78667562f5f2 210 lcd.clear();
Reavley 3:78667562f5f2 211 lcd.printString("Fingerprint",0,0);
Reavley 3:78667562f5f2 212 lcd.printString("Accepted",0,1);
Reavley 3:78667562f5f2 213 lcd.refresh();
Reavley 3:78667562f5f2 214 f = 1;
Reavley 3:78667562f5f2 215 wait(2.0);
Reavley 3:78667562f5f2 216 }
Reavley 3:78667562f5f2 217 }
Reavley 3:78667562f5f2 218 finger.CmosLed(1);
Reavley 3:78667562f5f2 219 if(f == 1){
Reavley 3:78667562f5f2 220 login();
Reavley 3:78667562f5f2 221 f = 0;
Reavley 3:78667562f5f2 222 }
Reavley 3:78667562f5f2 223 }
Reavley 3:78667562f5f2 224
Reavley 3:78667562f5f2 225 void login(){
Reavley 3:78667562f5f2 226 PC.printf("Login \n");
Reavley 3:78667562f5f2 227
Reavley 3:78667562f5f2 228 lcd.clear();
Reavley 3:78667562f5f2 229 lcd.printString("Scan finger",0,0);
Reavley 3:78667562f5f2 230 lcd.printString("to login",0,1);
Reavley 3:78667562f5f2 231 lcd.refresh();
Reavley 3:78667562f5f2 232 finger.WaitPress(1);
Reavley 3:78667562f5f2 233 if(finger.Capture(1) != 0){
Reavley 3:78667562f5f2 234 ID = finger.Identify();
Reavley 3:78667562f5f2 235 PC.printf("ID = %d \n",ID);
Reavley 3:78667562f5f2 236 if(ID == 11){ //check if user has valid finger print
Reavley 3:78667562f5f2 237 lcd.clear(); //if correct, access menu
Reavley 3:78667562f5f2 238 lcd.printString("Access granted",0,0);
Reavley 3:78667562f5f2 239 lcd.printString("Welcome! Aaron",0,1);
Reavley 3:78667562f5f2 240 lcd.refresh();
Reavley 3:78667562f5f2 241 PC.printf("Access granted \n");
Reavley 3:78667562f5f2 242 wait(2.0);
Reavley 3:78667562f5f2 243 menu(); //go to menu
Reavley 3:78667562f5f2 244 }
Reavley 3:78667562f5f2 245
Reavley 3:78667562f5f2 246 if(ID == -1){ //failed to validate
Reavley 3:78667562f5f2 247 lcd.clear();
Reavley 3:78667562f5f2 248 lcd.printString("Unautherised",0,0);
Reavley 3:78667562f5f2 249 lcd.printString("Please try",0,1);
Reavley 3:78667562f5f2 250 lcd.printString("again",0,1);
Reavley 3:78667562f5f2 251 lcd.refresh();
Reavley 3:78667562f5f2 252 wait(2.0);
Reavley 3:78667562f5f2 253 int reset;
Reavley 3:78667562f5f2 254 reset++;
Reavley 3:78667562f5f2 255 if(reset == 3){ //three failed attpts locks the system
Reavley 3:78667562f5f2 256 lcd.clear();
Reavley 3:78667562f5f2 257 lcd.printString("Three failed ",0,0);
Reavley 3:78667562f5f2 258 lcd.printString("attempts, ",0,1);
Reavley 3:78667562f5f2 259 lcd.printString("locking system",0,2);
Reavley 3:78667562f5f2 260 lcd.printString("for 30 seconds",0,3);
Reavley 3:78667562f5f2 261 lcd.refresh();
Reavley 3:78667562f5f2 262 PC.printf("Locking system \n");
Reavley 3:78667562f5f2 263 alarm();
Reavley 3:78667562f5f2 264 wait(20.0);
Reavley 3:78667562f5f2 265 PC.printf("Unlocking system \n");
Reavley 3:78667562f5f2 266 reset = 0;
Reavley 3:78667562f5f2 267 startscreen();
Reavley 3:78667562f5f2 268 }
Reavley 3:78667562f5f2 269 }
Reavley 3:78667562f5f2 270 PC.printf("Remove finger \n");
Reavley 3:78667562f5f2 271 finger.WaitPress(0);
Reavley 3:78667562f5f2 272 }
Reavley 3:78667562f5f2 273 }
Reavley 3:78667562f5f2 274
Reavley 3:78667562f5f2 275 void alarm(){
Reavley 3:78667562f5f2 276 PC.printf("Alarm \n");
Reavley 3:78667562f5f2 277
Reavley 3:78667562f5f2 278 int l = 0;
Reavley 3:78667562f5f2 279 int hz = hz_value;
Reavley 3:78667562f5f2 280 int time = time_value;
Reavley 3:78667562f5f2 281 pz.beep(hz,time); //pizeo goes off for set time amount
Reavley 3:78667562f5f2 282
Reavley 3:78667562f5f2 283 if(l <= 5){ // LED's flashing for 5 cycles
Reavley 3:78667562f5f2 284 led1 = 1; wait(0.33); led1 = 0;
Reavley 3:78667562f5f2 285 led2 = 1; wait(0.33); led2 = 0;
Reavley 3:78667562f5f2 286 led3 = 1; wait(0.33); led3 = 0;
Reavley 3:78667562f5f2 287 led4 = 1; wait(0.33); led4 = 0;
Reavley 3:78667562f5f2 288 led5 = 1; wait(0.33); led5 = 0;
Reavley 3:78667562f5f2 289 led6 = 1; wait(0.33); led6 = 0;
Reavley 3:78667562f5f2 290 PC.printf("led loop %d \n",l);
Reavley 3:78667562f5f2 291 l++;
Reavley 3:78667562f5f2 292 }
Reavley 3:78667562f5f2 293 }
Reavley 3:78667562f5f2 294
Reavley 3:78667562f5f2 295 void led(){
Reavley 3:78667562f5f2 296 PC.printf("led settings \n");
Reavley 3:78667562f5f2 297 int count = 0;
Reavley 3:78667562f5f2 298
Reavley 3:78667562f5f2 299 lcd.clear();
Reavley 3:78667562f5f2 300 lcd.printString("Levels: 0 - 6",0,0); //Possiable levels
Reavley 3:78667562f5f2 301 lcd.printString("Press A to +1",0,1);
Reavley 3:78667562f5f2 302 lcd.printString("Press B to -1",0,2);
Reavley 3:78667562f5f2 303 lcd.printString("Back",0,3);
Reavley 3:78667562f5f2 304 lcd.refresh();
Reavley 3:78667562f5f2 305 PC.printf("led level %d \n",count);
Reavley 3:78667562f5f2 306 if(A.read() == 1){
Reavley 3:78667562f5f2 307 count++;
Reavley 3:78667562f5f2 308 lcd.refresh();
Reavley 3:78667562f5f2 309 }
Reavley 3:78667562f5f2 310 if(B.read() == 1){
Reavley 3:78667562f5f2 311 count--;
Reavley 3:78667562f5f2 312 lcd.refresh();
Reavley 3:78667562f5f2 313 }
Reavley 3:78667562f5f2 314 if(count == 0){
Reavley 3:78667562f5f2 315 led1 = 0; led2 = 0; led3 = 0;
Reavley 3:78667562f5f2 316 led4 = 0; led5 = 0; led6 = 0;
Reavley 3:78667562f5f2 317 }
Reavley 3:78667562f5f2 318 if(count == 1){
Reavley 3:78667562f5f2 319 led1 = 1; led2 = 0; led3 = 0;
Reavley 3:78667562f5f2 320 led4 = 0; led5 = 0; led6 = 0;
Reavley 3:78667562f5f2 321 }
Reavley 3:78667562f5f2 322 if(count == 2){
Reavley 3:78667562f5f2 323 led1 = 1; led2 = 1; led3 = 0;
Reavley 3:78667562f5f2 324 led4 = 0; led5 = 0; led6 = 0;
Reavley 3:78667562f5f2 325 }
Reavley 3:78667562f5f2 326 if(count == 3){
Reavley 3:78667562f5f2 327 led1 = 1; led2 = 1; led3 = 1;
Reavley 3:78667562f5f2 328 led4 = 0; led5 = 0; led6 = 0;
Reavley 3:78667562f5f2 329 }
Reavley 3:78667562f5f2 330 if(count == 4){
Reavley 3:78667562f5f2 331 led1 = 1; led2 = 1; led3 = 1;
Reavley 3:78667562f5f2 332 led4 = 1; led5 = 0; led6 = 0;
Reavley 3:78667562f5f2 333 }
Reavley 3:78667562f5f2 334 if(count == 5){
Reavley 3:78667562f5f2 335 led1 = 1; led2 = 1; led3 = 1;
Reavley 3:78667562f5f2 336 led4 = 1; led5 = 1; led6 = 0;
Reavley 3:78667562f5f2 337 }
Reavley 3:78667562f5f2 338 if(count == 6){
Reavley 3:78667562f5f2 339 led1 = 1; led2 = 1; led3 = 1;
Reavley 3:78667562f5f2 340 led4 = 1; led5 = 1; led6 = 1;
Reavley 3:78667562f5f2 341 }
Reavley 3:78667562f5f2 342
Reavley 3:78667562f5f2 343 if(back.read() == 1){
Reavley 3:78667562f5f2 344 menu();
Reavley 3:78667562f5f2 345 }
Reavley 3:78667562f5f2 346 }
Reavley 3:78667562f5f2 347
Reavley 3:78667562f5f2 348 void lcdbrightness(){
Reavley 3:78667562f5f2 349 PC.printf("lcd brightness \n");
Reavley 3:78667562f5f2 350
Reavley 3:78667562f5f2 351 lcd.clear();
Reavley 3:78667562f5f2 352 lcd.printString("----LCD----",0,0);// change brightness and contrast using pot
Reavley 3:78667562f5f2 353 lcd.printString("Range: 0 - 1",0,1);
Reavley 3:78667562f5f2 354 lcd.printString("Use Pot to",0,2);
Reavley 3:78667562f5f2 355 lcd.printString("change level",0,3);
Reavley 3:78667562f5f2 356 lcd.refresh();
Reavley 3:78667562f5f2 357
Reavley 3:78667562f5f2 358 if(pot_value != mypot.read()){
Reavley 3:78667562f5f2 359 pot_value = mypot.read();
Reavley 3:78667562f5f2 360 lcd.setBrightness(pot_value);
Reavley 3:78667562f5f2 361 lcd.setContrast(pot_value);
Reavley 3:78667562f5f2 362 lcd.refresh();
Reavley 3:78667562f5f2 363 }
Reavley 3:78667562f5f2 364
Reavley 3:78667562f5f2 365 if(back.read() == 1){
Reavley 3:78667562f5f2 366 menu();
Reavley 3:78667562f5f2 367 }
Reavley 3:78667562f5f2 368 }
Reavley 3:78667562f5f2 369
Reavley 3:78667562f5f2 370 void piezohz(){
Reavley 3:78667562f5f2 371 PC.printf("piezo hz \n");
Reavley 3:78667562f5f2 372
Reavley 3:78667562f5f2 373 lcd.clear();
Reavley 3:78667562f5f2 374 lcd.printString("--Piezo Khz--",0,0);// change frequency level of pizeo
Reavley 3:78667562f5f2 375 lcd.printString("Range: 1 - 10",0,1);
Reavley 3:78667562f5f2 376 lcd.printString("Use Pot to",0,2);
Reavley 3:78667562f5f2 377 lcd.printString("change level",0,3);
Reavley 3:78667562f5f2 378 lcd.refresh();
Reavley 3:78667562f5f2 379 hz_value = 10000*pot_value; // converts pot value to between 1000hz to 10000hz
Reavley 3:78667562f5f2 380 if(hz_value != (10000*mypot.read())){
Reavley 3:78667562f5f2 381 hz_value = (10000*mypot.read());
Reavley 3:78667562f5f2 382 }
Reavley 3:78667562f5f2 383 if(back.read() == 1){
Reavley 3:78667562f5f2 384 menu();
Reavley 3:78667562f5f2 385 }
Reavley 3:78667562f5f2 386 }
Reavley 3:78667562f5f2 387
Reavley 3:78667562f5f2 388 void alarmtime(){
Reavley 3:78667562f5f2 389 PC.printf("alarm time \n"); //set alarm time
Reavley 3:78667562f5f2 390
Reavley 3:78667562f5f2 391 int count = 0;
Reavley 3:78667562f5f2 392 lcd.clear();
Reavley 3:78667562f5f2 393 lcd.printString("Alarm length",0,0);
Reavley 3:78667562f5f2 394 sprintf(buffer,"Time = %2d s",count);
Reavley 3:78667562f5f2 395 lcd.printString(buffer,0,1);
Reavley 3:78667562f5f2 396 lcd.printString("Press A to +1",0,2);
Reavley 3:78667562f5f2 397 lcd.printString("Press B to -1",0,3);
Reavley 3:78667562f5f2 398 lcd.refresh();
Reavley 3:78667562f5f2 399 PC.printf("led level %d \n",count);
Reavley 3:78667562f5f2 400
Reavley 3:78667562f5f2 401 if(A.read() == 1){
Reavley 3:78667562f5f2 402 count++;
Reavley 3:78667562f5f2 403 lcd.refresh();
Reavley 3:78667562f5f2 404 }
Reavley 3:78667562f5f2 405 if(B.read() == 1){
Reavley 3:78667562f5f2 406 count--;
Reavley 3:78667562f5f2 407 lcd.refresh();
Reavley 3:78667562f5f2 408 }
Reavley 3:78667562f5f2 409 if(time_value != count){
Reavley 3:78667562f5f2 410 time_value = count;
Reavley 3:78667562f5f2 411 }
Reavley 3:78667562f5f2 412 if(back.read() == 1){
Reavley 3:78667562f5f2 413 menu();
Reavley 3:78667562f5f2 414 }
Reavley 3:78667562f5f2 415 }
Reavley 3:78667562f5f2 416
Reavley 3:78667562f5f2 417 void newenrol(){
Reavley 3:78667562f5f2 418
Reavley 3:78667562f5f2 419 PC.printf("Enrolling \n");// scan new finger
Reavley 3:78667562f5f2 420 lcd.clear();
Reavley 3:78667562f5f2 421 lcd.printString("--New Enroll--", 0,0);
Reavley 3:78667562f5f2 422 lcd.printString("Press start", 0,1);
Reavley 3:78667562f5f2 423 lcd.printString("to begin.", 0,2);
Reavley 3:78667562f5f2 424 lcd.refresh();
Reavley 3:78667562f5f2 425 int f = 0;
Reavley 3:78667562f5f2 426
Reavley 3:78667562f5f2 427 if(start.read() == 1){ //when Start button pressed activate
Reavley 3:78667562f5f2 428 PC.printf("Start \n");
Reavley 3:78667562f5f2 429 int EnrollID = 11; // Correct Finger Enroll number
Reavley 3:78667562f5f2 430 if(finger.CheckEnrolled(EnrollID) == 0){
Reavley 3:78667562f5f2 431 PC.printf("EnrollID(%d) is already enrolled. Delete! \n",EnrollID);
Reavley 3:78667562f5f2 432 if(finger.DeleteID(EnrollID) == 0){
Reavley 3:78667562f5f2 433 PC.printf("Delete OK! \n");
Reavley 3:78667562f5f2 434 }
Reavley 3:78667562f5f2 435 }
Reavley 3:78667562f5f2 436
Reavley 3:78667562f5f2 437 lcd.clear(); //prompt user
Reavley 3:78667562f5f2 438 lcd.printString("Hello, Please", 0,0);
Reavley 3:78667562f5f2 439 lcd.printString("Place Finger" , 0,1);
Reavley 3:78667562f5f2 440 lcd.printString("on the Scanner",0,2);
Reavley 3:78667562f5f2 441 lcd.printString("to Verify ID!", 0,3);
Reavley 3:78667562f5f2 442 lcd.refresh();
Reavley 3:78667562f5f2 443 wait(5.0);
Reavley 3:78667562f5f2 444
Reavley 3:78667562f5f2 445 lcd.clear();
Reavley 3:78667562f5f2 446 lcd.printString("This will",0,0);
Reavley 3:78667562f5f2 447 lcd.printString("require three",0,1);
Reavley 3:78667562f5f2 448 lcd.printString("attemps of the",0,2);
Reavley 3:78667562f5f2 449 lcd.printString("desired finger",0,3);
Reavley 3:78667562f5f2 450 lcd.printString("to enroll!",0,4);
Reavley 3:78667562f5f2 451 lcd.refresh();
Reavley 3:78667562f5f2 452
Reavley 3:78667562f5f2 453 finger.Enroll(EnrollID,progress);//Enrollment
Reavley 3:78667562f5f2 454
Reavley 3:78667562f5f2 455 if(finger.CheckEnrolled(EnrollID) == 0){//Enrollment completed
Reavley 3:78667562f5f2 456 lcd.clear();
Reavley 3:78667562f5f2 457 lcd.printString("Fingerprint",0,0);
Reavley 3:78667562f5f2 458 lcd.printString("Accepted",0,1);
Reavley 3:78667562f5f2 459 lcd.refresh();
Reavley 3:78667562f5f2 460 f = 1;
Reavley 3:78667562f5f2 461 PC.printf("Enrolled \n");
Reavley 3:78667562f5f2 462 wait(2.0);
Reavley 3:78667562f5f2 463 }
Reavley 3:78667562f5f2 464 }
Reavley 3:78667562f5f2 465 finger.CmosLed(1);
Reavley 3:78667562f5f2 466 if(f == 1){
Reavley 3:78667562f5f2 467 login();
Reavley 3:78667562f5f2 468 f = 0;
Reavley 3:78667562f5f2 469 }
Reavley 3:78667562f5f2 470 }
Reavley 3:78667562f5f2 471
Reavley 3:78667562f5f2 472 void menu(){
Reavley 3:78667562f5f2 473
Reavley 3:78667562f5f2 474 lcd.clear();
Reavley 3:78667562f5f2 475 lcd.printString("--Main Menu--",0,0);//Menu, currently having the ability to
Reavley 3:78667562f5f2 476 lcd.printString("Alarm",0,1); //Active alarm
Reavley 3:78667562f5f2 477 lcd.printString("LED Lights",0,2);//Turn on the LED's
Reavley 3:78667562f5f2 478 lcd.printString("Settings",0,3); //Change propteies
Reavley 3:78667562f5f2 479 lcd.refresh();
Reavley 3:78667562f5f2 480 PC.printf("Menu \n");
Reavley 3:78667562f5f2 481 navigator();
Reavley 3:78667562f5f2 482 int y;
Reavley 3:78667562f5f2 483
Reavley 3:78667562f5f2 484 while(A == 1){
Reavley 3:78667562f5f2 485 if(y == 1){
Reavley 3:78667562f5f2 486 alarm();
Reavley 3:78667562f5f2 487 menu();
Reavley 3:78667562f5f2 488 }
Reavley 3:78667562f5f2 489 if(y == 2){
Reavley 3:78667562f5f2 490 led();
Reavley 3:78667562f5f2 491 }
Reavley 3:78667562f5f2 492 if(y == 3){
Reavley 3:78667562f5f2 493 submenu1();
Reavley 3:78667562f5f2 494 }
Reavley 3:78667562f5f2 495 }
Reavley 3:78667562f5f2 496 }
Reavley 3:78667562f5f2 497
Reavley 3:78667562f5f2 498 void submenu1(){
Reavley 3:78667562f5f2 499
Reavley 3:78667562f5f2 500 lcd.clear();
Reavley 3:78667562f5f2 501 lcd.printString("--Settings--",0,0);
Reavley 3:78667562f5f2 502 lcd.printString("LCD Brightness",0,1);//Go to LCD settings
Reavley 3:78667562f5f2 503 lcd.printString("Piezo Hz",0,2); //Go to Piezo settings
Reavley 3:78667562f5f2 504 lcd.printString("More Settings",0,3); //Next subMenu
Reavley 3:78667562f5f2 505
Reavley 3:78667562f5f2 506 PC.printf("Submenu1 \n");
Reavley 3:78667562f5f2 507
Reavley 3:78667562f5f2 508 navigator();
Reavley 3:78667562f5f2 509 int y;
Reavley 3:78667562f5f2 510
Reavley 3:78667562f5f2 511 while(A == 1){
Reavley 3:78667562f5f2 512 if(y == 1){
Reavley 3:78667562f5f2 513 lcdbrightness();
Reavley 3:78667562f5f2 514 }
Reavley 3:78667562f5f2 515 if(y == 2){
Reavley 3:78667562f5f2 516 piezohz();
Reavley 3:78667562f5f2 517 }
Reavley 3:78667562f5f2 518 if(y == 3){
Reavley 3:78667562f5f2 519 submenu2();
Reavley 3:78667562f5f2 520 }
Reavley 3:78667562f5f2 521
Reavley 3:78667562f5f2 522 if(back.read() == 1){
Reavley 3:78667562f5f2 523 menu();
Reavley 3:78667562f5f2 524 }
Reavley 3:78667562f5f2 525 }
Reavley 3:78667562f5f2 526 }
Reavley 3:78667562f5f2 527
Reavley 3:78667562f5f2 528 void submenu2(){
Reavley 3:78667562f5f2 529
Reavley 3:78667562f5f2 530 lcd.clear();
Reavley 3:78667562f5f2 531 lcd.printString("--Return--",0,0);//Return to Menu
Reavley 3:78667562f5f2 532 lcd.printString("Alarm Time",0,1);//Change alarm time
Reavley 3:78667562f5f2 533 lcd.printString("New Enrol",0,2);//New scan for fingerprint
Reavley 3:78667562f5f2 534 lcd.printString("Go Ideal",0,3); //Sleep
Reavley 3:78667562f5f2 535
Reavley 3:78667562f5f2 536 PC.printf("Submenu2 \n");
Reavley 3:78667562f5f2 537
Reavley 3:78667562f5f2 538 navigator();
Reavley 3:78667562f5f2 539 int y;
Reavley 3:78667562f5f2 540
Reavley 3:78667562f5f2 541 if(back.read() == 1){
Reavley 3:78667562f5f2 542 submenu1();
Reavley 3:78667562f5f2 543 }
Reavley 3:78667562f5f2 544 while(A == 1){
Reavley 3:78667562f5f2 545 if(y == 1){
Reavley 3:78667562f5f2 546 alarmtime();
Reavley 3:78667562f5f2 547 }
Reavley 3:78667562f5f2 548 if(y == 2){
Reavley 3:78667562f5f2 549 newenrol();
Reavley 3:78667562f5f2 550 }
Reavley 3:78667562f5f2 551
Reavley 3:78667562f5f2 552 if(back == 1){
Reavley 3:78667562f5f2 553 startscreen();
Reavley 3:78667562f5f2 554 }
Reavley 3:78667562f5f2 555 if(back.read() == 1){
Reavley 3:78667562f5f2 556 menu();
Reavley 3:78667562f5f2 557 }
Reavley 3:78667562f5f2 558 }
Reavley 3:78667562f5f2 559 }
Reavley 3:78667562f5f2 560
Reavley 3:78667562f5f2 561 void navigator(){
Reavley 3:78667562f5f2 562
Reavley 3:78667562f5f2 563 int y;
Reavley 3:78667562f5f2 564
Reavley 3:78667562f5f2 565 Direction d = joystick.get_direction();//navigators the menu using joystick
Reavley 3:78667562f5f2 566 PC.printf("Direction = %i \n",d);
Reavley 3:78667562f5f2 567 lcd.printString(">",0,y);
Reavley 3:78667562f5f2 568 lcd.refresh();
Reavley 3:78667562f5f2 569
Reavley 3:78667562f5f2 570 if(d == 1){
Reavley 3:78667562f5f2 571 y++;
Reavley 3:78667562f5f2 572 lcd.printString(">",0,y);
Reavley 3:78667562f5f2 573 wait(0.2);
Reavley 3:78667562f5f2 574 lcd.refresh();
Reavley 3:78667562f5f2 575 }
Reavley 3:78667562f5f2 576 else if(d == 5){
Reavley 3:78667562f5f2 577 y--;
Reavley 3:78667562f5f2 578 lcd.printString(">",0,y);
Reavley 3:78667562f5f2 579 wait(0.2);
Reavley 3:78667562f5f2 580 lcd.refresh();
Reavley 3:78667562f5f2 581 }
Reavley 3:78667562f5f2 582 }
Reavley 3:78667562f5f2 583