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.
main.cpp@1:2a3b76b2e4e5, 2021-07-10 (annotated)
- Committer:
- uwizeyimana
- Date:
- Sat Jul 10 17:44:52 2021 +0000
- Revision:
- 1:2a3b76b2e4e5
- Parent:
- 0:6e0a4dac6596
- Child:
- 2:b990d41df49e
updated
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
uwizeyimana | 0:6e0a4dac6596 | 1 | /*mobile project |
uwizeyimana | 0:6e0a4dac6596 | 2 | GROUP MEMBERS: |
uwizeyimana | 0:6e0a4dac6596 | 3 | 1)UWIZEYIMANA ABDULKARIM REG NBER:220020691 |
uwizeyimana | 0:6e0a4dac6596 | 4 | 2)AMOUR SALIM MOHAMMED REG NBER: 221027397 |
uwizeyimana | 0:6e0a4dac6596 | 5 | 3)SHAAME M. BAKAR REG NBER: 220020578 |
uwizeyimana | 0:6e0a4dac6596 | 6 | 4)ANGELIQUE*/ |
uwizeyimana | 0:6e0a4dac6596 | 7 | |
uwizeyimana | 0:6e0a4dac6596 | 8 | #include "mbed.h" |
uwizeyimana | 0:6e0a4dac6596 | 9 | #include "C12832.h" |
uwizeyimana | 0:6e0a4dac6596 | 10 | #include "Sht31.h" |
uwizeyimana | 0:6e0a4dac6596 | 11 | #include <string> |
uwizeyimana | 1:2a3b76b2e4e5 | 12 | #include "time.h" |
uwizeyimana | 1:2a3b76b2e4e5 | 13 | time_t startTime; |
uwizeyimana | 1:2a3b76b2e4e5 | 14 | time_t stopTime; |
uwizeyimana | 1:2a3b76b2e4e5 | 15 | time_t startReading; |
uwizeyimana | 1:2a3b76b2e4e5 | 16 | time_t stopReading; |
uwizeyimana | 1:2a3b76b2e4e5 | 17 | int readingDuration; |
uwizeyimana | 0:6e0a4dac6596 | 18 | Serial device (p9,p10); |
uwizeyimana | 0:6e0a4dac6596 | 19 | C12832 lcd(SPI_MOSI, SPI_SCK, SPI_MISO, p8, p11); |
uwizeyimana | 0:6e0a4dac6596 | 20 | Sht31 theo(I2C_SDA, I2C_SCL); |
uwizeyimana | 0:6e0a4dac6596 | 21 | DigitalOut led(p13); |
uwizeyimana | 0:6e0a4dac6596 | 22 | DigitalOut bed(p12); |
uwizeyimana | 0:6e0a4dac6596 | 23 | DigitalOut wed(p14); |
uwizeyimana | 0:6e0a4dac6596 | 24 | InterruptIn btn(p15); |
uwizeyimana | 0:6e0a4dac6596 | 25 | InterruptIn swt(p11); |
uwizeyimana | 1:2a3b76b2e4e5 | 26 | Timeout t; |
uwizeyimana | 1:2a3b76b2e4e5 | 27 | Ticker k; |
uwizeyimana | 1:2a3b76b2e4e5 | 28 | Ticker topicTicker; |
uwizeyimana | 1:2a3b76b2e4e5 | 29 | Ticker durationTime; |
uwizeyimana | 1:2a3b76b2e4e5 | 30 | Ticker resetted; |
uwizeyimana | 1:2a3b76b2e4e5 | 31 | Ticker backagain; |
uwizeyimana | 0:6e0a4dac6596 | 32 | int direction=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 33 | int i=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 34 | int pushDuration; |
uwizeyimana | 0:6e0a4dac6596 | 35 | int current=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 36 | int state=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 37 | |
uwizeyimana | 0:6e0a4dac6596 | 38 | string str1 = "Menu of the Day"; |
uwizeyimana | 0:6e0a4dac6596 | 39 | string str2 = "Rwanda Food Services Ltd"; |
uwizeyimana | 0:6e0a4dac6596 | 40 | string str3="Rwanda Food Services Ltd,click Btn to browseMenu"; |
uwizeyimana | 0:6e0a4dac6596 | 41 | string topics[]={"1.Out Side catering services", |
uwizeyimana | 0:6e0a4dac6596 | 42 | "2.Restaurent Services","3.fast Food Services", |
uwizeyimana | 0:6e0a4dac6596 | 43 | "4.Online ordering Food Services", |
uwizeyimana | 0:6e0a4dac6596 | 44 | "5.Cook Training Services " |
uwizeyimana | 0:6e0a4dac6596 | 45 | }; |
uwizeyimana | 0:6e0a4dac6596 | 46 | string content[]={"11.online bookings buffet package for 80+ guests with 10 percent off", |
uwizeyimana | 0:6e0a4dac6596 | 47 | "22.Pilawo, biriyani, African food,western food","33.fried chicken with salad,fried fish with salad,Nyama choma", |
uwizeyimana | 0:6e0a4dac6596 | 48 | "44.African food,westen food,fast food,pilawo,biriyani", |
uwizeyimana | 0:6e0a4dac6596 | 49 | "55.bread,samosa cooking and smoothies preparation " |
uwizeyimana | 0:6e0a4dac6596 | 50 | }; |
uwizeyimana | 0:6e0a4dac6596 | 51 | void display(string sms){ |
uwizeyimana | 0:6e0a4dac6596 | 52 | lcd.cls(); // change dane here |
uwizeyimana | 0:6e0a4dac6596 | 53 | lcd.locate(0,0); |
uwizeyimana | 0:6e0a4dac6596 | 54 | lcd.printf(sms.c_str()); |
uwizeyimana | 0:6e0a4dac6596 | 55 | } |
uwizeyimana | 0:6e0a4dac6596 | 56 | |
uwizeyimana | 1:2a3b76b2e4e5 | 57 | void welcomeMsg(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 58 | display(str2); |
uwizeyimana | 0:6e0a4dac6596 | 59 | } |
uwizeyimana | 0:6e0a4dac6596 | 60 | |
uwizeyimana | 1:2a3b76b2e4e5 | 61 | void displayState1(){ |
uwizeyimana | 0:6e0a4dac6596 | 62 | float temp = theo.readTemperature(); |
uwizeyimana | 0:6e0a4dac6596 | 63 | time_t seconds = time(NULL); |
uwizeyimana | 0:6e0a4dac6596 | 64 | char buffer[32]; |
uwizeyimana | 0:6e0a4dac6596 | 65 | strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); |
uwizeyimana | 0:6e0a4dac6596 | 66 | lcd.locate(5, 20); // get cursor to position x=3px and y=5px |
uwizeyimana | 0:6e0a4dac6596 | 67 | lcd.cls(); |
uwizeyimana | 0:6e0a4dac6596 | 68 | lcd.set_auto_up(0); |
uwizeyimana | 1:2a3b76b2e4e5 | 69 | lcd.locate(5, 1); |
uwizeyimana | 0:6e0a4dac6596 | 70 | lcd.printf("Local Time: %s",buffer); |
uwizeyimana | 1:2a3b76b2e4e5 | 71 | lcd.locate(5, 9); |
uwizeyimana | 0:6e0a4dac6596 | 72 | lcd.printf("Temperature: %.2f C", temp); |
uwizeyimana | 0:6e0a4dac6596 | 73 | } |
uwizeyimana | 0:6e0a4dac6596 | 74 | |
uwizeyimana | 0:6e0a4dac6596 | 75 | |
uwizeyimana | 1:2a3b76b2e4e5 | 76 | void whiteled() |
uwizeyimana | 0:6e0a4dac6596 | 77 | { |
uwizeyimana | 1:2a3b76b2e4e5 | 78 | wed=!wed; |
uwizeyimana | 1:2a3b76b2e4e5 | 79 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 80 | void forwards(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 81 | display(topics[i]); |
uwizeyimana | 1:2a3b76b2e4e5 | 82 | current=i; |
uwizeyimana | 1:2a3b76b2e4e5 | 83 | i+=1; |
uwizeyimana | 1:2a3b76b2e4e5 | 84 | if(i>4){ |
uwizeyimana | 1:2a3b76b2e4e5 | 85 | i=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 86 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 87 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 88 | void backwards(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 89 | display(topics[i]); |
uwizeyimana | 1:2a3b76b2e4e5 | 90 | current=i; |
uwizeyimana | 1:2a3b76b2e4e5 | 91 | i-=1; |
uwizeyimana | 1:2a3b76b2e4e5 | 92 | if(i<0){ |
uwizeyimana | 1:2a3b76b2e4e5 | 93 | i=4; |
uwizeyimana | 0:6e0a4dac6596 | 94 | } |
uwizeyimana | 0:6e0a4dac6596 | 95 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 96 | void displayState2(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 97 | if(direction==0){ |
uwizeyimana | 1:2a3b76b2e4e5 | 98 | i=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 99 | bed=1; |
uwizeyimana | 1:2a3b76b2e4e5 | 100 | led=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 101 | topicTicker.attach(callback(&forwards),2.0f); |
uwizeyimana | 1:2a3b76b2e4e5 | 102 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 103 | else{ |
uwizeyimana | 1:2a3b76b2e4e5 | 104 | i=4; |
uwizeyimana | 1:2a3b76b2e4e5 | 105 | led=1; |
uwizeyimana | 1:2a3b76b2e4e5 | 106 | bed=0; |
uwizeyimana | 1:2a3b76b2e4e5 | 107 | topicTicker.attach(callback(& backwards),2.0f); |
uwizeyimana | 1:2a3b76b2e4e5 | 108 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 109 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 110 | |
uwizeyimana | 1:2a3b76b2e4e5 | 111 | void fallBtn(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 112 | state = 0; |
uwizeyimana | 1:2a3b76b2e4e5 | 113 | |
uwizeyimana | 1:2a3b76b2e4e5 | 114 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 115 | void mode1(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 116 | k.attach(callback(& whiteled),1.0f); |
uwizeyimana | 1:2a3b76b2e4e5 | 117 | displayState1(); |
uwizeyimana | 1:2a3b76b2e4e5 | 118 | t.attach(callback(&displayState2),3.0f); |
uwizeyimana | 1:2a3b76b2e4e5 | 119 | |
uwizeyimana | 1:2a3b76b2e4e5 | 120 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 121 | |
uwizeyimana | 1:2a3b76b2e4e5 | 122 | void riseSwt(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 123 | time(&startReading); |
uwizeyimana | 1:2a3b76b2e4e5 | 124 | display(content[current]); |
uwizeyimana | 1:2a3b76b2e4e5 | 125 | topicTicker.detach(); |
uwizeyimana | 1:2a3b76b2e4e5 | 126 | |
uwizeyimana | 0:6e0a4dac6596 | 127 | |
uwizeyimana | 0:6e0a4dac6596 | 128 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 129 | void fallSwt(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 130 | topicTicker.detach(); |
uwizeyimana | 1:2a3b76b2e4e5 | 131 | time(&stopReading); |
uwizeyimana | 1:2a3b76b2e4e5 | 132 | readingDuration=stopReading-startReading; |
uwizeyimana | 1:2a3b76b2e4e5 | 133 | printf("Reading time is:%d \n",readingDuration); |
uwizeyimana | 1:2a3b76b2e4e5 | 134 | if(readingDuration>5){ |
uwizeyimana | 1:2a3b76b2e4e5 | 135 | printf("message sent,Item Id is:%d \n",current+1); |
uwizeyimana | 1:2a3b76b2e4e5 | 136 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 137 | displayState2(); |
uwizeyimana | 0:6e0a4dac6596 | 138 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 139 | void countDuration(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 140 | time(&stopTime); |
uwizeyimana | 1:2a3b76b2e4e5 | 141 | pushDuration=stopTime-startTime; |
uwizeyimana | 1:2a3b76b2e4e5 | 142 | if(pushDuration>5){ |
uwizeyimana | 1:2a3b76b2e4e5 | 143 | display("System resetting......\n"); |
uwizeyimana | 1:2a3b76b2e4e5 | 144 | durationTime.detach(); |
uwizeyimana | 1:2a3b76b2e4e5 | 145 | topicTicker.detach(); |
uwizeyimana | 1:2a3b76b2e4e5 | 146 | resetted.attach(callback(&welcomeMsg),10.0f); |
uwizeyimana | 1:2a3b76b2e4e5 | 147 | direction=!direction; |
uwizeyimana | 1:2a3b76b2e4e5 | 148 | backagain.attach(callback(&mode1),15.0f); |
uwizeyimana | 1:2a3b76b2e4e5 | 149 | |
uwizeyimana | 1:2a3b76b2e4e5 | 150 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 151 | else if(pushDuration>3 && state==0 ){ |
uwizeyimana | 1:2a3b76b2e4e5 | 152 | state =0; |
uwizeyimana | 1:2a3b76b2e4e5 | 153 | direction=!direction; |
uwizeyimana | 1:2a3b76b2e4e5 | 154 | displayState2(); |
uwizeyimana | 1:2a3b76b2e4e5 | 155 | |
uwizeyimana | 1:2a3b76b2e4e5 | 156 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 157 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 158 | void riseBtn(){ |
uwizeyimana | 1:2a3b76b2e4e5 | 159 | time(&startTime); |
uwizeyimana | 1:2a3b76b2e4e5 | 160 | durationTime.attach(callback(&countDuration),0.5f); |
uwizeyimana | 1:2a3b76b2e4e5 | 161 | |
uwizeyimana | 1:2a3b76b2e4e5 | 162 | } |
uwizeyimana | 1:2a3b76b2e4e5 | 163 | |
uwizeyimana | 0:6e0a4dac6596 | 164 | int main() { |
uwizeyimana | 1:2a3b76b2e4e5 | 165 | welcomeMsg(); |
uwizeyimana | 1:2a3b76b2e4e5 | 166 | t.attach(callback(&mode1),5.0f); |
uwizeyimana | 1:2a3b76b2e4e5 | 167 | btn.rise(callback(&riseBtn)); |
uwizeyimana | 1:2a3b76b2e4e5 | 168 | btn.fall(callback(&fallBtn)); |
uwizeyimana | 1:2a3b76b2e4e5 | 169 | swt.rise(callback(&riseSwt)); |
uwizeyimana | 1:2a3b76b2e4e5 | 170 | swt.fall(callback(&fallSwt)); |
uwizeyimana | 0:6e0a4dac6596 | 171 | } |