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: mbed 4DGL-uLCD-SE
Diff: main.cpp
- Revision:
- 0:ce3fa8a3840c
- Child:
- 1:fc3efaef8625
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Dec 08 18:56:02 2019 +0000
@@ -0,0 +1,192 @@
+#include "mbed.h"
+#include "uLCD_4DGL.h"
+#include "Speaker.h"
+
+AnalogIn light1(p19);
+AnalogIn light2(p18);
+DigitalIn button(p8);
+DigitalOut led(p26);
+PwmOut speaker(p25);
+
+DigitalOut mag2(p20);
+DigitalOut mag1(p21);
+Serial blue(p28,p27);
+BusOut myled(LED1,LED2,LED3,LED4);
+uLCD_4DGL uLCD(p9,p10,p11);
+Serial pc(USBTX, USBRX);
+typedef struct Locker {
+ int used;
+ int code;
+} Locker;
+
+struct Locker l1 = {0, 1234};
+struct Locker l2 = {0, 4321};
+void wait_loop() {
+ int j = 0;
+ for (int i = 0; i < 50000; i++) {
+ j++;
+ }
+}
+void fill() {
+ uLCD.filled_rectangle(0, 0, 128, 128, 0x000000);
+ uLCD.locate(0,0);
+}
+int read_code() {
+ char bnum=0;
+ int ans = 0;
+ int len = 0;
+ uLCD.printf("\nEnter code\n");
+ while(len < 8) {
+ if (blue.getc()=='!') {
+ if (blue.getc()=='B') { //button data packet
+ bnum = blue.getc(); //button number
+ myled = bnum - '0';
+ len++;
+ if (len % 2 == 1) {
+ ans = ans * 10 + (bnum - '0');
+ uLCD.printf("%d", bnum - '0');
+ }
+ }
+ }
+ }
+ fill();
+ wait(1);
+ return ans;
+}
+
+int read_which_locker() {
+ char bnum=0;
+ int ans = 0;
+ int len = 0;
+ uLCD.printf("\nEnter Locker");
+ while(len < 2) {
+ if (blue.getc()=='!') {
+ if (blue.getc()=='B') { //button data packet
+ bnum = blue.getc(); //button number
+ ans = bnum - '0';
+ fill();
+ uLCD.printf("%d",ans);
+ len++;
+ }
+ }
+ }
+ fill();
+ wait(1);
+ return ans;
+}
+
+int rent_or_open() {
+ char bnum=0;
+ int ans = 0;
+ int len = 0;
+ uLCD.printf("\n1.Rent a locker\n2.Unlock an locker");
+ while(len < 2) {
+ if (blue.getc()=='!') {
+ if (blue.getc()=='B') { //button data packet
+ bnum = blue.getc(); //button number
+ ans = bnum - '0';
+ uLCD.printf("%d",ans);
+ len++;
+ }
+ }
+ }
+ fill();
+ wait(1);
+ return ans;
+}
+
+void open_used() {
+ int locker = read_which_locker();
+ wait_loop();
+
+ if (locker == 1 && l1.used == 0) {
+ uLCD.printf("\nThe locker is empty");
+ wait(1);
+ return;
+ }
+
+ if (locker == 2 && l2.used == 0) {
+ uLCD.printf("\nThe locker is empty");
+ wait(1);
+ return;
+ }
+ int code = read_code();
+ fill();
+ if (locker == 1 && l1.code == code) {
+ uLCD.printf("\nLocker 1 is now open");
+ mag1 = 1;
+ int lock = 0;
+ while(light1.read() > .05 || lock == 0) {
+ lock = lock | button.read();
+ }
+ mag1 = 0;
+ l1.used = 0;
+ } else if (locker == 2 && l2.code == code) {
+ uLCD.printf("\nLocker 2 is now open");
+ mag2 = 1;
+ int lock = 0;
+ while(light2.read() > .01 || lock == 0) {
+ lock = lock | button.read();
+ }
+ mag2 = 0;
+ l2.used = 0;
+ } else {
+ uLCD.printf("\nInvlaid locker and code combination");
+ led = 1;
+ speaker = .5;
+ wait(.5);
+ led = 0;
+ speaker = 0;
+ wait(.5);
+ led = 1;
+ speaker = .5;
+ wait(.5);
+ led = 0;
+ speaker = 0;
+ wait(.5);
+
+ }
+}
+
+void rent_unused(){
+ if (l1.used == 0) {
+ uLCD.printf("\nPlease place item in locker 1, create a code, and close the door");
+ mag1 = 1;
+ int code = read_code();
+ l1.code = code;
+ l1.used = 1;
+ mag1 = 0;
+
+ } else if (l2.used == 0) {
+ uLCD.printf("\nPlease place item in locker 2, create a code, and close the door");
+ mag2 = 1;
+ int code = read_code();
+ l2.code = code;
+ l2.used = 1;
+ mag2 = 0;
+
+ } else {
+ uLCD.printf("\nSorry all lockers are taken");
+ wait(1);
+ }
+}
+
+int main() {
+ mag1 = 0;
+ mag2 = 0;
+ speaker.period(1.0/5000.0);
+ while(1){
+ uLCD.locate(0,0);
+ uLCD.printf("Welcome to\n our locker"); //Default Green on black text
+ int option = rent_or_open();
+ if (option == 1) {
+ rent_unused();
+ } else if (option == 2) {
+ open_used();
+ } else {
+ uLCD.printf("\nPlease enter valid option");
+ }
+ uLCD.reset();
+
+ }
+}