8x8 ranger poster code

Dependencies:   8x8 LCDTFT_ssd0139 Ranger mbed

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?

UserRevisionLine numberNew 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