8x8 ranger poster code
Dependencies: 8x8 LCDTFT_ssd0139 Ranger mbed
main.cpp@1:d82a8d064e06, 2016-06-14 (annotated)
- Committer:
- cstevens
- Date:
- Tue Jun 14 13:35:57 2016 +0000
- Revision:
- 1:d82a8d064e06
- Parent:
- 0:627ab79e5bce
8x8 for june 2016;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cstevens | 0:627ab79e5bce | 1 | #include "mbed.h" |
cstevens | 0:627ab79e5bce | 2 | #include "LCDTFT.h" |
cstevens | 0:627ab79e5bce | 3 | #include "Ranger.h" |
cstevens | 0:627ab79e5bce | 4 | #include "8x8.h" // sub to deal wtih teh 8x8 display |
cstevens | 0:627ab79e5bce | 5 | |
cstevens | 0:627ab79e5bce | 6 | |
cstevens | 0:627ab79e5bce | 7 | // pins for TFT |
cstevens | 0:627ab79e5bce | 8 | BusOut MyBus(PTA13,PTD5,PTD4,PTA12,PTA4,PTA5,PTC8,PTC9); // 8 bit bus on these dvices |
cstevens | 0:627ab79e5bce | 9 | LCDTFT MyLCD(PTB0,PTB1,PTB2,PTB3,PTC2,&MyBus);//LCDTFT(PinName PIN_RD,PinName PIN_WR,PinName PIN_RS,PinName PIN_CS,PinName PIN_RESET, BusOut *BUSLCD); |
cstevens | 0:627ab79e5bce | 10 | |
cstevens | 0:627ab79e5bce | 11 | PwmOut buzz(PTE31); |
cstevens | 0:627ab79e5bce | 12 | |
cstevens | 0:627ab79e5bce | 13 | |
cstevens | 0:627ab79e5bce | 14 | |
cstevens | 0:627ab79e5bce | 15 | //wolf whistle |
cstevens | 0:627ab79e5bce | 16 | void wolf(int wt) |
cstevens | 0:627ab79e5bce | 17 | { |
cstevens | 0:627ab79e5bce | 18 | int freq; |
cstevens | 0:627ab79e5bce | 19 | int periodus=0; |
cstevens | 0:627ab79e5bce | 20 | buzz=0; // quiet |
cstevens | 0:627ab79e5bce | 21 | |
cstevens | 0:627ab79e5bce | 22 | buzz.period_us(1e6/50); |
cstevens | 0:627ab79e5bce | 23 | buzz=0.5; // 50% duty = max volume |
cstevens | 0:627ab79e5bce | 24 | for(freq=50; freq<1200; freq=freq+20) { |
cstevens | 0:627ab79e5bce | 25 | periodus=(int)(1e6/freq); |
cstevens | 0:627ab79e5bce | 26 | buzz.period_us(periodus); |
cstevens | 0:627ab79e5bce | 27 | wait_ms(wt); |
cstevens | 0:627ab79e5bce | 28 | } |
cstevens | 0:627ab79e5bce | 29 | buzz=0; |
cstevens | 0:627ab79e5bce | 30 | wait(0.5); |
cstevens | 0:627ab79e5bce | 31 | buzz=0.5; // 50% duty = max volume |
cstevens | 0:627ab79e5bce | 32 | for(freq=1200; freq>50; freq=freq-5) { |
cstevens | 0:627ab79e5bce | 33 | periodus=(int)(1e6/freq); |
cstevens | 0:627ab79e5bce | 34 | buzz.period_us(periodus); |
cstevens | 0:627ab79e5bce | 35 | wait_ms(wt); |
cstevens | 0:627ab79e5bce | 36 | } |
cstevens | 0:627ab79e5bce | 37 | buzz=0; |
cstevens | 0:627ab79e5bce | 38 | |
cstevens | 0:627ab79e5bce | 39 | |
cstevens | 0:627ab79e5bce | 40 | |
cstevens | 0:627ab79e5bce | 41 | } |
cstevens | 0:627ab79e5bce | 42 | |
cstevens | 0:627ab79e5bce | 43 | void wface(int eye,int mth) |
cstevens | 0:627ab79e5bce | 44 | { |
cstevens | 0:627ab79e5bce | 45 | int ct=0; |
cstevens | 0:627ab79e5bce | 46 | for(ct=1; ct<5; ct++) { // display the smiley for 800 times |
cstevens | 0:627ab79e5bce | 47 | write_8x8(eye,mth); |
cstevens | 0:627ab79e5bce | 48 | }//endforct |
cstevens | 0:627ab79e5bce | 49 | } |
cstevens | 0:627ab79e5bce | 50 | |
cstevens | 0:627ab79e5bce | 51 | void sendtop() |
cstevens | 0:627ab79e5bce | 52 | { |
cstevens | 0:627ab79e5bce | 53 | MyLCD.vLCDTFTFillScreen(White); |
cstevens | 0:627ab79e5bce | 54 | MyLCD.vLCDTFTSetParametersPrintf(3,3,3,300,3,Blue,White); |
cstevens | 0:627ab79e5bce | 55 | MyLCD.printf("Internet\n of\n THINGS!"); |
cstevens | 0:627ab79e5bce | 56 | |
cstevens | 0:627ab79e5bce | 57 | MyLCD.vLCDTFTSetParametersPrintf(3,80,3,300,2,Red,White); |
cstevens | 0:627ab79e5bce | 58 | MyLCD.printf("Starts 7th & 8th Week\n"); |
cstevens | 0:627ab79e5bce | 59 | MyLCD.vLCDTFTSetParametersPrintf(3,100,3,300,3,Black,White); |
cstevens | 0:627ab79e5bce | 60 | MyLCD.printf(" Monday LR3 9am "); |
cstevens | 0:627ab79e5bce | 61 | |
cstevens | 0:627ab79e5bce | 62 | } |
cstevens | 0:627ab79e5bce | 63 | |
cstevens | 0:627ab79e5bce | 64 | void sendclose() |
cstevens | 0:627ab79e5bce | 65 | { |
cstevens | 0:627ab79e5bce | 66 | MyLCD.vLCDTFTFillScreen(White); |
cstevens | 0:627ab79e5bce | 67 | MyLCD.vLCDTFTSetParametersPrintf(3,3,3,300,3,Red,White); |
cstevens | 0:627ab79e5bce | 68 | MyLCD.printf("Too...\n"); |
cstevens | 0:627ab79e5bce | 69 | |
cstevens | 0:627ab79e5bce | 70 | MyLCD.vLCDTFTSetParametersPrintf(3,80,3,300,3,Purple,White); |
cstevens | 0:627ab79e5bce | 71 | MyLCD.printf(".....Close\n"); |
cstevens | 0:627ab79e5bce | 72 | |
cstevens | 0:627ab79e5bce | 73 | } |
cstevens | 0:627ab79e5bce | 74 | |
cstevens | 0:627ab79e5bce | 75 | Timer ev; |
cstevens | 0:627ab79e5bce | 76 | |
cstevens | 0:627ab79e5bce | 77 | int main() |
cstevens | 0:627ab79e5bce | 78 | { |
cstevens | 0:627ab79e5bce | 79 | ev.reset(); |
cstevens | 0:627ab79e5bce | 80 | ev.start(); |
cstevens | 0:627ab79e5bce | 81 | int clos=0,omesg=0; // var used to detect if they got too close!!!! |
cstevens | 0:627ab79e5bce | 82 | int ct=0,test=0,eye=0,mth=0,newmesg=0,mesg=0; // newmessg detects new lcd text, messg is index of text in messages[] |
cstevens | 0:627ab79e5bce | 83 | //each message is 8 chars and hence messg=0 is first message, messg=8 is second etc |
cstevens | 0:627ab79e5bce | 84 | |
cstevens | 0:627ab79e5bce | 85 | int cti=0,state=0; // face = value of smilie to display and state is the control variable that sets upo response based on range |
cstevens | 0:627ab79e5bce | 86 | int rangecm=0,scount=0; // scount used to select which event in a particular state is running; |
cstevens | 0:627ab79e5bce | 87 | |
cstevens | 0:627ab79e5bce | 88 | char messages[64];//| | | | | | | | |
cstevens | 0:627ab79e5bce | 89 | sprintf(messages, " Zzzzz... Hiya Helloo? Bored.. ARGHH!! Byee..."); |
cstevens | 0:627ab79e5bce | 90 | char message[8]; |
cstevens | 0:627ab79e5bce | 91 | MyLCD.vLCDTFTInit(1); // setup TFT display |
cstevens | 0:627ab79e5bce | 92 | sendtop(); |
cstevens | 0:627ab79e5bce | 93 | wolf(5); |
cstevens | 0:627ab79e5bce | 94 | buzz.period_ms(1); |
cstevens | 0:627ab79e5bce | 95 | buzz=0; |
cstevens | 0:627ab79e5bce | 96 | mesg=0; |
cstevens | 0:627ab79e5bce | 97 | newmesg=1; |
cstevens | 0:627ab79e5bce | 98 | for(ct=1;ct<50;ct++){ |
cstevens | 0:627ab79e5bce | 99 | wface(0,0); |
cstevens | 0:627ab79e5bce | 100 | } |
cstevens | 0:627ab79e5bce | 101 | |
cstevens | 0:627ab79e5bce | 102 | while(1==1) { |
cstevens | 0:627ab79e5bce | 103 | rangecm=range(); // get the range |
cstevens | 0:627ab79e5bce | 104 | //0 happy |
cstevens | 0:627ab79e5bce | 105 | //1 sad |
cstevens | 0:627ab79e5bce | 106 | //2 sleeping |
cstevens | 0:627ab79e5bce | 107 | //3 shouting |
cstevens | 0:627ab79e5bce | 108 | //4 winking |
cstevens | 0:627ab79e5bce | 109 | //5 looking left |
cstevens | 0:627ab79e5bce | 110 | // 6 looking right |
cstevens | 0:627ab79e5bce | 111 | // 7 evil |
cstevens | 0:627ab79e5bce | 112 | if(rangecm >110) state=0; // nobody about - sleeping |
cstevens | 0:627ab79e5bce | 113 | |
cstevens | 0:627ab79e5bce | 114 | if(rangecm<110) state=1; // somebody there looking left and right |
cstevens | 0:627ab79e5bce | 115 | if (rangecm<70) state=2; // hello |
cstevens | 0:627ab79e5bce | 116 | |
cstevens | 0:627ab79e5bce | 117 | if (rangecm<50) state=3; // watch out warning |
cstevens | 0:627ab79e5bce | 118 | if (rangecm<25) state=4;// TOO CLOSE ALARM |
cstevens | 0:627ab79e5bce | 119 | |
cstevens | 0:627ab79e5bce | 120 | |
cstevens | 0:627ab79e5bce | 121 | wface(eye,mth); |
cstevens | 0:627ab79e5bce | 122 | switch(state) { |
cstevens | 0:627ab79e5bce | 123 | case 0: |
cstevens | 0:627ab79e5bce | 124 | eye=3; // shuteye |
cstevens | 0:627ab79e5bce | 125 | if(scount==0) { |
cstevens | 0:627ab79e5bce | 126 | mth=4; // open = snoring |
cstevens | 0:627ab79e5bce | 127 | buzz=0.5; |
cstevens | 0:627ab79e5bce | 128 | buzz.period_ms(250); |
cstevens | 0:627ab79e5bce | 129 | if(mesg!=8) { |
cstevens | 0:627ab79e5bce | 130 | mesg=8; |
cstevens | 0:627ab79e5bce | 131 | newmesg=1; |
cstevens | 0:627ab79e5bce | 132 | }//endif mesg |
cstevens | 0:627ab79e5bce | 133 | } |
cstevens | 0:627ab79e5bce | 134 | //endif scount |
cstevens | 0:627ab79e5bce | 135 | else { |
cstevens | 0:627ab79e5bce | 136 | mth=2; // netural |
cstevens | 0:627ab79e5bce | 137 | buzz=0; |
cstevens | 0:627ab79e5bce | 138 | if(mesg!=0) { |
cstevens | 0:627ab79e5bce | 139 | mesg=0; |
cstevens | 0:627ab79e5bce | 140 | newmesg=1; |
cstevens | 0:627ab79e5bce | 141 | }//endif mesg |
cstevens | 0:627ab79e5bce | 142 | } |
cstevens | 0:627ab79e5bce | 143 | break; |
cstevens | 0:627ab79e5bce | 144 | case 1: |
cstevens | 0:627ab79e5bce | 145 | if(scount%2==0) eye=0; //look left |
cstevens | 0:627ab79e5bce | 146 | else eye=2; //look right |
cstevens | 0:627ab79e5bce | 147 | mth=2; //neutral |
cstevens | 0:627ab79e5bce | 148 | buzz=0; |
cstevens | 0:627ab79e5bce | 149 | if(mesg!=24) { |
cstevens | 0:627ab79e5bce | 150 | mesg=24; |
cstevens | 0:627ab79e5bce | 151 | newmesg=1; |
cstevens | 0:627ab79e5bce | 152 | }//endif mesg |
cstevens | 0:627ab79e5bce | 153 | break; |
cstevens | 0:627ab79e5bce | 154 | case 2: |
cstevens | 0:627ab79e5bce | 155 | if(scount==0) eye=3; // blink |
cstevens | 0:627ab79e5bce | 156 | else eye=1; // look mid |
cstevens | 0:627ab79e5bce | 157 | mth=0; |
cstevens | 0:627ab79e5bce | 158 | buzz=0; |
cstevens | 0:627ab79e5bce | 159 | if(mesg!=16) { |
cstevens | 0:627ab79e5bce | 160 | mesg=16; |
cstevens | 0:627ab79e5bce | 161 | newmesg=1; |
cstevens | 0:627ab79e5bce | 162 | }//endif mesg |
cstevens | 0:627ab79e5bce | 163 | break; |
cstevens | 0:627ab79e5bce | 164 | case 3: |
cstevens | 0:627ab79e5bce | 165 | if(scount==0) eye=3; |
cstevens | 0:627ab79e5bce | 166 | else eye=5; |
cstevens | 0:627ab79e5bce | 167 | mth=2; |
cstevens | 0:627ab79e5bce | 168 | buzz=0; |
cstevens | 0:627ab79e5bce | 169 | if(mesg!=32) { |
cstevens | 0:627ab79e5bce | 170 | mesg=32; |
cstevens | 0:627ab79e5bce | 171 | newmesg=1; |
cstevens | 0:627ab79e5bce | 172 | }//endif mesg |
cstevens | 0:627ab79e5bce | 173 | break; |
cstevens | 0:627ab79e5bce | 174 | case 4: |
cstevens | 0:627ab79e5bce | 175 | if(scount==0) eye=3; |
cstevens | 0:627ab79e5bce | 176 | else eye=5; |
cstevens | 0:627ab79e5bce | 177 | mth=1; |
cstevens | 0:627ab79e5bce | 178 | buzz=0.5; |
cstevens | 0:627ab79e5bce | 179 | buzz.period_ms(rangecm); |
cstevens | 0:627ab79e5bce | 180 | if(mesg!=40) { |
cstevens | 0:627ab79e5bce | 181 | mesg=40; |
cstevens | 0:627ab79e5bce | 182 | clos=1; |
cstevens | 0:627ab79e5bce | 183 | newmesg=1; |
cstevens | 0:627ab79e5bce | 184 | }//endif mesg |
cstevens | 0:627ab79e5bce | 185 | break; |
cstevens | 0:627ab79e5bce | 186 | } |
cstevens | 0:627ab79e5bce | 187 | if(newmesg==1) { |
cstevens | 0:627ab79e5bce | 188 | if(clos==1) { |
cstevens | 0:627ab79e5bce | 189 | sendclose(); |
cstevens | 0:627ab79e5bce | 190 | clos=0; |
cstevens | 0:627ab79e5bce | 191 | omesg=40; |
cstevens | 0:627ab79e5bce | 192 | } |
cstevens | 0:627ab79e5bce | 193 | if(mesg>0) { |
cstevens | 0:627ab79e5bce | 194 | if(omesg==40 && state !=4) { |
cstevens | 0:627ab79e5bce | 195 | sendtop(); |
cstevens | 0:627ab79e5bce | 196 | omesg=mesg; |
cstevens | 0:627ab79e5bce | 197 | } |
cstevens | 0:627ab79e5bce | 198 | for(ct=0; ct<8; ct++) { |
cstevens | 0:627ab79e5bce | 199 | message[ct]=messages[ct+mesg]; |
cstevens | 0:627ab79e5bce | 200 | } |
cstevens | 0:627ab79e5bce | 201 | MyLCD.vLCDTFTSetParametersPrintf(3,160,3,300,4,Orange,White); |
cstevens | 0:627ab79e5bce | 202 | MyLCD.printf("%s ",message); |
cstevens | 0:627ab79e5bce | 203 | } else { |
cstevens | 0:627ab79e5bce | 204 | MyLCD.vLCDTFTSetParametersPrintf(3,160,3,300,4,Orange,White); |
cstevens | 0:627ab79e5bce | 205 | MyLCD.printf(" "); |
cstevens | 0:627ab79e5bce | 206 | } |
cstevens | 0:627ab79e5bce | 207 | newmesg=0; |
cstevens | 0:627ab79e5bce | 208 | |
cstevens | 0:627ab79e5bce | 209 | } |
cstevens | 0:627ab79e5bce | 210 | cti=ev.read(); //scount switch for snoring etc |
cstevens | 0:627ab79e5bce | 211 | if(cti%3==0 && test==0) { |
cstevens | 0:627ab79e5bce | 212 | scount=(scount+1)%4; |
cstevens | 0:627ab79e5bce | 213 | test=cti; |
cstevens | 0:627ab79e5bce | 214 | } |
cstevens | 0:627ab79e5bce | 215 | if(cti>test) test=0; |
cstevens | 0:627ab79e5bce | 216 | |
cstevens | 0:627ab79e5bce | 217 | // MyLCD.printf("%d ",scount); |
cstevens | 0:627ab79e5bce | 218 | |
cstevens | 0:627ab79e5bce | 219 | //sub to write char/..?? |
cstevens | 0:627ab79e5bce | 220 | wface(eye,mth); |
cstevens | 0:627ab79e5bce | 221 | |
cstevens | 0:627ab79e5bce | 222 | |
cstevens | 0:627ab79e5bce | 223 | |
cstevens | 0:627ab79e5bce | 224 | |
cstevens | 0:627ab79e5bce | 225 | }//endwhile |
cstevens | 0:627ab79e5bce | 226 | }//endmain |