a cool bubble game

Dependencies:   DmTouch_UniGraphic UniGraphic mbed

Fork of DAY_8_miniproject by Ishan Gauli

Committer:
ezimmerman17
Date:
Fri Jan 13 00:50:08 2017 +0000
Revision:
4:ca53017354e9
Parent:
0:4898efdb611a
fixed acceleration_n in .h;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igauli20 0:4898efdb611a 1 /* Do not publish changes to this program back to the remote repository. Fork your own copy, or else */
igauli20 0:4898efdb611a 2 #include "stdio.h"
igauli20 0:4898efdb611a 3 #include "mbed.h"
igauli20 0:4898efdb611a 4 #include "string"
igauli20 0:4898efdb611a 5 #include "ILI932x.h"
igauli20 0:4898efdb611a 6 #include "DmTouch.h"
igauli20 0:4898efdb611a 7
igauli20 0:4898efdb611a 8
igauli20 0:4898efdb611a 9 #include "Arial12x12.h"
igauli20 0:4898efdb611a 10 #include "Arial24x23.h"
igauli20 0:4898efdb611a 11 #include "pavement_48x34.h"
igauli20 0:4898efdb611a 12
igauli20 0:4898efdb611a 13 Serial pc(USBTX, USBRX);
igauli20 0:4898efdb611a 14 DigitalIn x_up(p6);
igauli20 0:4898efdb611a 15 DigitalIn x_down(p5);
igauli20 0:4898efdb611a 16 AnalogIn Ain(p19);
igauli20 0:4898efdb611a 17 DigitalIn slide(p9);
igauli20 0:4898efdb611a 18
igauli20 0:4898efdb611a 19 /* Configure the DisplayModule ILI9325 2.4" display for 8-bit bus communication
igauli20 0:4898efdb611a 20
igauli20 0:4898efdb611a 21 mbed pin display pin
igauli20 0:4898efdb611a 22 -------- -----------
igauli20 0:4898efdb611a 23 p15 CS (L15)
igauli20 0:4898efdb611a 24 p17 RST (L17)
igauli20 0:4898efdb611a 25 p16 RS (L4)
igauli20 0:4898efdb611a 26 p14 WR (L5)
igauli20 0:4898efdb611a 27 p20 RD (L6)
igauli20 0:4898efdb611a 28
igauli20 0:4898efdb611a 29 p30 DB8 (L7)
igauli20 0:4898efdb611a 30 p29 DB9 (L8)
igauli20 0:4898efdb611a 31 p28 DB10 (L9)
igauli20 0:4898efdb611a 32 p27 DB11 (L10)
igauli20 0:4898efdb611a 33 p26 DB12 (L11)
igauli20 0:4898efdb611a 34 p25 DB13 (L12)
igauli20 0:4898efdb611a 35 p24 DB14 (L13)
igauli20 0:4898efdb611a 36 p23 DB15 (L14)
igauli20 0:4898efdb611a 37
igauli20 0:4898efdb611a 38 p1 GND (L1)
igauli20 0:4898efdb611a 39 p40 Vin (L2)
igauli20 0:4898efdb611a 40 p40 LED Backlight (L19)
igauli20 0:4898efdb611a 41 */
igauli20 0:4898efdb611a 42 PinName dataBus[]= {p30, p29, p28, p27, p26, p25, p24, p23};
igauli20 0:4898efdb611a 43 ILI932x myLCD(BUS_8, dataBus, p15, p17, p16, p14, p20, "myLCD", 240, 320); // Bus 8 bit, bus pin array, CS, RST, DC, WR, RD, name, xpixels, ypixels
igauli20 0:4898efdb611a 44
igauli20 0:4898efdb611a 45 /* Additional connections to add touch response
igauli20 0:4898efdb611a 46
igauli20 0:4898efdb611a 47 mbed pin display pin
igauli20 0:4898efdb611a 48 -------- -----------
igauli20 0:4898efdb611a 49 p5 T_MOSI (R11)
igauli20 0:4898efdb611a 50 p6 T_MISO (R13)
igauli20 0:4898efdb611a 51 p7 T_CLK (R9)
igauli20 0:4898efdb611a 52 p8 T_CS (R10)
igauli20 0:4898efdb611a 53 p9 T_IRQ (R14)
igauli20 0:4898efdb611a 54 */
igauli20 0:4898efdb611a 55 DmTouch touch(DmTouch::DM_TFT24_104, p5, p6, p7, p8, p9);
igauli20 0:4898efdb611a 56
igauli20 0:4898efdb611a 57 char orient=3;
igauli20 0:4898efdb611a 58 int x,y;
igauli20 0:4898efdb611a 59 uint16_t tx, ty;
igauli20 0:4898efdb611a 60 Timer t;
igauli20 0:4898efdb611a 61 DigitalOut led1(LED1);
igauli20 0:4898efdb611a 62 DigitalOut led2(LED2);
igauli20 0:4898efdb611a 63 SPI acc(p5,p6,p7);
igauli20 0:4898efdb611a 64 DigitalOut cs(p14);
igauli20 0:4898efdb611a 65 char buffer[6];
igauli20 0:4898efdb611a 66 int16_t data[3];
igauli20 0:4898efdb611a 67 float x1,y1,z1;
igauli20 0:4898efdb611a 68 int main()
igauli20 0:4898efdb611a 69 {
igauli20 0:4898efdb611a 70
igauli20 0:4898efdb611a 71
igauli20 0:4898efdb611a 72
igauli20 0:4898efdb611a 73 int main(){
igauli20 0:4898efdb611a 74 cs=1;
igauli20 0:4898efdb611a 75 acc.format(8,3);
igauli20 0:4898efdb611a 76 acc.frequency(2000000);
igauli20 0:4898efdb611a 77 cs=0;
igauli20 0:4898efdb611a 78 acc.write(0x31);
igauli20 0:4898efdb611a 79 acc.write(0x0B);
igauli20 0:4898efdb611a 80 cs=1;
igauli20 0:4898efdb611a 81 cs=0;
igauli20 0:4898efdb611a 82 acc.write(0x2D);
igauli20 0:4898efdb611a 83 acc.write(0x08);
igauli20 0:4898efdb611a 84 cs=1;
igauli20 0:4898efdb611a 85 while(1){
igauli20 0:4898efdb611a 86 wait(0.2);
igauli20 0:4898efdb611a 87 cs=0;
igauli20 0:4898efdb611a 88 acc.write(0x80|0x40|0x32);
igauli20 0:4898efdb611a 89 for(int i = 0; i <=5;i++){
igauli20 0:4898efdb611a 90 buffer[i] = acc.write(0x00);
igauli20 0:4898efdb611a 91 }
igauli20 0:4898efdb611a 92 cs=1;
igauli20 0:4898efdb611a 93 data[0]= buffer[1]<<8 |buffer[0];
igauli20 0:4898efdb611a 94 data[1] = buffer[3]<<8|buffer[2];
igauli20 0:4898efdb611a 95 data[2]= buffer[5]<<8 |buffer[4];
igauli20 0:4898efdb611a 96 x1=0.004*data[0];
igauli20 0:4898efdb611a 97 y1 = 0.004*data[1];
igauli20 0:4898efdb611a 98 z1 = 0.004*data[2];
igauli20 0:4898efdb611a 99 pc.printf("x = %+1.2fg\t y = %+1.2fg\t z = %1.2fg\n\r", x1,y1,z1);
igauli20 0:4898efdb611a 100 }
igauli20 0:4898efdb611a 101
igauli20 0:4898efdb611a 102
igauli20 0:4898efdb611a 103
igauli20 0:4898efdb611a 104 //Day 8 Lab 2
igauli20 0:4898efdb611a 105 /*int y_pos = 120,x_pos = 160; //Just Variables for x-axis and y-axis
igauli20 0:4898efdb611a 106 while (1) {
igauli20 0:4898efdb611a 107
igauli20 0:4898efdb611a 108 if (!slide){
igauli20 0:4898efdb611a 109 myLCD.cls();
igauli20 0:4898efdb611a 110 }
igauli20 0:4898efdb611a 111
igauli20 0:4898efdb611a 112 y_pos = Ain*240; //converts to pixals
igauli20 0:4898efdb611a 113
igauli20 0:4898efdb611a 114 if (x_up == 1){
igauli20 0:4898efdb611a 115 if (x_pos >= 320)
igauli20 0:4898efdb611a 116 x_pos = 314;
igauli20 0:4898efdb611a 117 wait(0.08);
igauli20 0:4898efdb611a 118 x_pos = x_pos + 1;
igauli20 0:4898efdb611a 119 led1 = 1;
igauli20 0:4898efdb611a 120 }
igauli20 0:4898efdb611a 121 if (x_down == 1){
igauli20 0:4898efdb611a 122 if (x_pos <= 0)
igauli20 0:4898efdb611a 123 x_pos = 5;
igauli20 0:4898efdb611a 124 wait(0.08);
igauli20 0:4898efdb611a 125 x_pos = x_pos - 1;
igauli20 0:4898efdb611a 126 led2 = 1;
igauli20 0:4898efdb611a 127 }
igauli20 0:4898efdb611a 128 myLCD.locate(y_pos,x_pos);
igauli20 0:4898efdb611a 129 myLCD.pixel(y_pos,x_pos,White);
igauli20 0:4898efdb611a 130 }*/
igauli20 0:4898efdb611a 131 /*
igauli20 0:4898efdb611a 132
igauli20 0:4898efdb611a 133 bool down, lastDown;
igauli20 0:4898efdb611a 134 touch.init();
igauli20 0:4898efdb611a 135 t.start();
igauli20 0:4898efdb611a 136 myLCD.set_orientation(orient);
igauli20 0:4898efdb611a 137 myLCD.set_font((unsigned char*) Arial24x23);
igauli20 0:4898efdb611a 138 myLCD.background(Blue); // set background to Blue
igauli20 0:4898efdb611a 139 myLCD.foreground(White); // set chars to White
igauli20 0:4898efdb611a 140 myLCD.cls(); // clear the screen
igauli20 0:4898efdb611a 141 myLCD.locate(10,30);
igauli20 0:4898efdb611a 142 myLCD.printf("UniGraphics Demo\r\n");
igauli20 0:4898efdb611a 143 wait(2);
igauli20 0:4898efdb611a 144
igauli20 0:4898efdb611a 145 while(1)
igauli20 0:4898efdb611a 146 {
igauli20 0:4898efdb611a 147 myLCD.cls(); // clear the screen
igauli20 0:4898efdb611a 148 myLCD.set_font((unsigned char*) Arial24x23);
igauli20 0:4898efdb611a 149 myLCD.locate(0,30);
igauli20 0:4898efdb611a 150 myLCD.printf("Orientation mode: %x\r\n", orient%4);
igauli20 0:4898efdb611a 151 wait(2);
igauli20 0:4898efdb611a 152 myLCD.printf("Font is\r\n");
igauli20 0:4898efdb611a 153 myLCD.printf("Arial24x23\r\n");
igauli20 0:4898efdb611a 154 wait(2);
igauli20 0:4898efdb611a 155
igauli20 0:4898efdb611a 156 myLCD.background(Black);
igauli20 0:4898efdb611a 157 myLCD.foreground(White);
igauli20 0:4898efdb611a 158 myLCD.cls(); // clear the screen
igauli20 0:4898efdb611a 159 myLCD.set_font((unsigned char*) Arial12x12);
igauli20 0:4898efdb611a 160 myLCD.locate(0,10);
igauli20 0:4898efdb611a 161 myLCD.printf("Font changed to Arial12x_pos2\r\n");
igauli20 0:4898efdb611a 162 myLCD.printf("Background and foreground color also changed.\n\r\n\r");
igauli20 0:4898efdb611a 163 wait(2);
igauli20 0:4898efdb611a 164 myLCD.printf("Notice that if some text is too long to fit the width of the screen that it is automatically wrapped to the next line.\r\n\r\n");
igauli20 0:4898efdb611a 165 wait(2);
igauli20 0:4898efdb611a 166 myLCD.set_font((unsigned char*) Terminal6x8);
igauli20 0:4898efdb611a 167 myLCD.printf("Font changed to Terminal6x8\r\n");
igauli20 0:4898efdb611a 168 myLCD.printf("This is pretty small!\r\n");
igauli20 0:4898efdb611a 169 wait(2);
igauli20 0:4898efdb611a 170
igauli20 0:4898efdb611a 171 myLCD.cls();
igauli20 0:4898efdb611a 172 myLCD.set_font((unsigned char*) Arial24x23);
igauli20 0:4898efdb611a 173 myLCD.locate(10,10);
igauli20 0:4898efdb611a 174 myLCD.printf("Draw lines\n\r");
igauli20 0:4898efdb611a 175 myLCD.line(0,50,myLCD.width()-1,50,Yellow);
igauli20 0:4898efdb611a 176 myLCD.line(myLCD.width()-50,51,myLCD.width()-50,myLCD.height()-1,Green);
igauli20 0:4898efdb611a 177 wait(2);
igauli20 0:4898efdb611a 178
igauli20 0:4898efdb611a 179 myLCD.cls();
igauli20 0:4898efdb611a 180 myLCD.locate(10,10);
igauli20 0:4898efdb611a 181 myLCD.printf("Draw rectangles");
igauli20 0:4898efdb611a 182 myLCD.rect(10,50,50,80,Red);
igauli20 0:4898efdb611a 183 myLCD.rect(15,55,45,75,Red);
igauli20 0:4898efdb611a 184 myLCD.rect(20,60,40,70,Red);
igauli20 0:4898efdb611a 185 myLCD.fillrect(160,130,200,240,Blue);
igauli20 0:4898efdb611a 186 wait(2);
igauli20 0:4898efdb611a 187
igauli20 0:4898efdb611a 188 myLCD.cls();
igauli20 0:4898efdb611a 189 myLCD.locate(10,10);
igauli20 0:4898efdb611a 190 myLCD.printf("Draw circles");
igauli20 0:4898efdb611a 191 myLCD.circle(150,132,30,Yellow);
igauli20 0:4898efdb611a 192 myLCD.fillcircle(140,70,25,Cyan);
igauli20 0:4898efdb611a 193 wait(2);
igauli20 0:4898efdb611a 194
igauli20 0:4898efdb611a 195 myLCD.cls();
igauli20 0:4898efdb611a 196 myLCD.set_font((unsigned char*) Arial12x12);
igauli20 0:4898efdb611a 197 myLCD.locate(10,10);
igauli20 0:4898efdb611a 198 myLCD.printf("Draw function with pixels");
igauli20 0:4898efdb611a 199 double s;
igauli20 0:4898efdb611a 200 for (unsigned short i=0; i<myLCD.width(); i++)
igauli20 0:4898efdb611a 201 {
igauli20 0:4898efdb611a 202 s =10 * sin((long double) i / 10 );
igauli20 0:4898efdb611a 203 myLCD.pixel(i,80 + (int)s ,White);
igauli20 0:4898efdb611a 204 }
igauli20 0:4898efdb611a 205 wait(3);
igauli20 0:4898efdb611a 206
igauli20 0:4898efdb611a 207 // Touch screen demo
igauli20 0:4898efdb611a 208 myLCD.background(Blue); // set background to Blue
igauli20 0:4898efdb611a 209 myLCD.foreground(White); // set chars to White
igauli20 0:4898efdb611a 210 myLCD.cls(); // clear the screen
igauli20 0:4898efdb611a 211 myLCD.locate(10,30);
igauli20 0:4898efdb611a 212 myLCD.set_font((unsigned char*) Arial24x23);
igauli20 0:4898efdb611a 213 myLCD.printf("DmTouch Demo\r\n");
igauli20 0:4898efdb611a 214 myLCD.set_font((unsigned char*) Arial12x12);
igauli20 0:4898efdb611a 215 myLCD.locate(10,70);
igauli20 0:4898efdb611a 216 myLCD.printf("Coming soon...\r\nTouch screen and coordinates will display\r\n");
igauli20 0:4898efdb611a 217 myLCD.printf("Moves to next portion of demo after 30 seconds\r\n");
igauli20 0:4898efdb611a 218 wait(2);
igauli20 0:4898efdb611a 219 myLCD.background(Black); // set background to Black
igauli20 0:4898efdb611a 220 myLCD.foreground(White); // set chars to White
igauli20 0:4898efdb611a 221 myLCD.cls(); // clear the screen
igauli20 0:4898efdb611a 222
igauli20 0:4898efdb611a 223 touch.setOrientation(orient);
igauli20 0:4898efdb611a 224 down = false;
igauli20 0:4898efdb611a 225 lastDown = false;
igauli20 0:4898efdb611a 226 tx = (uint16_t)0;
igauli20 0:4898efdb611a 227 ty = (uint16_t)0;
igauli20 0:4898efdb611a 228 myLCD.locate(20,20);
igauli20 0:4898efdb611a 229 myLCD.printf("x:");
igauli20 0:4898efdb611a 230 myLCD.locate(100, 20);
igauli20 0:4898efdb611a 231 myLCD.printf("y:");
igauli20 0:4898efdb611a 232
igauli20 0:4898efdb611a 233 t.reset();
igauli20 0:4898efdb611a 234 while (t.read()<30) {
igauli20 0:4898efdb611a 235 touch.readTouchData(tx, ty, down);
igauli20 0:4898efdb611a 236 if (down) {
igauli20 0:4898efdb611a 237 myLCD.locate(40, 20);
igauli20 0:4898efdb611a 238 myLCD.printf("%5i", tx);
igauli20 0:4898efdb611a 239 myLCD.locate(120, 20);
igauli20 0:4898efdb611a 240 myLCD.printf("%5i", ty);
igauli20 0:4898efdb611a 241 myLCD.fillcircle(tx, ty, 2, Red);
igauli20 0:4898efdb611a 242 } else if (lastDown) {
igauli20 0:4898efdb611a 243 // no longer pressed, clean text
igauli20 0:4898efdb611a 244 myLCD.locate(40, 20);
igauli20 0:4898efdb611a 245 myLCD.printf(" ", tx);
igauli20 0:4898efdb611a 246 myLCD.locate(120, 20);
igauli20 0:4898efdb611a 247 myLCD.printf(" ", ty);
igauli20 0:4898efdb611a 248 }
igauli20 0:4898efdb611a 249 wait(0.040);
igauli20 0:4898efdb611a 250 lastDown = down;
igauli20 0:4898efdb611a 251 }
igauli20 0:4898efdb611a 252
igauli20 0:4898efdb611a 253
igauli20 0:4898efdb611a 254 // scroll test, only for TFT
igauli20 0:4898efdb611a 255 myLCD.cls();
igauli20 0:4898efdb611a 256 myLCD.set_font((unsigned char*) Arial24x23);
igauli20 0:4898efdb611a 257 myLCD.locate(2,10);
igauli20 0:4898efdb611a 258 myLCD.printf("Scrolling");
igauli20 0:4898efdb611a 259 myLCD.rect(0,0,myLCD.width()-1,myLCD.height()-1,White);
igauli20 0:4898efdb611a 260 myLCD.rect(1,1,myLCD.width()-2,myLCD.height()-2,Blue);
igauli20 0:4898efdb611a 261 myLCD.setscrollarea(0,myLCD.sizeY());
igauli20 0:4898efdb611a 262 wait(1);
igauli20 0:4898efdb611a 263 myLCD.scroll(1); //up 1
igauli20 0:4898efdb611a 264 wait(1);
igauli20 0:4898efdb611a 265 myLCD.scroll(0); //center
igauli20 0:4898efdb611a 266 wait(1);
igauli20 0:4898efdb611a 267 myLCD.scroll(myLCD.sizeY()-1); //down 1
igauli20 0:4898efdb611a 268 wait(1);
igauli20 0:4898efdb611a 269 myLCD.scroll(myLCD.sizeY()); // same as 0, center
igauli20 0:4898efdb611a 270 wait(1);
igauli20 0:4898efdb611a 271 myLCD.scroll(myLCD.sizeY()>>1); // half screen
igauli20 0:4898efdb611a 272 wait(1);
igauli20 0:4898efdb611a 273 myLCD.scrollreset(); // center
igauli20 0:4898efdb611a 274 wait(1);
igauli20 0:4898efdb611a 275 for(unsigned short i=1; i<=myLCD.sizeY(); i++)
igauli20 0:4898efdb611a 276 {
igauli20 0:4898efdb611a 277 myLCD.scroll(i);
igauli20 0:4898efdb611a 278 wait_ms(2);
igauli20 0:4898efdb611a 279 }
igauli20 0:4898efdb611a 280 wait(2);
igauli20 0:4898efdb611a 281 // color inversion
igauli20 0:4898efdb611a 282 for(unsigned short i=0; i<=8; i++)
igauli20 0:4898efdb611a 283 {
igauli20 0:4898efdb611a 284 myLCD.invert(i&1);
igauli20 0:4898efdb611a 285 wait_ms(200);
igauli20 0:4898efdb611a 286 }
igauli20 0:4898efdb611a 287 wait(2);
igauli20 0:4898efdb611a 288 // bmp 16bit test
igauli20 0:4898efdb611a 289 myLCD.cls();
igauli20 0:4898efdb611a 290 for(int y=0; y<myLCD.height(); y+=34)
igauli20 0:4898efdb611a 291 {
igauli20 0:4898efdb611a 292 for(int x=0; x<myLCD.width(); x+=48) myLCD.Bitmap(x,y,48,34,(unsigned char *)pavement_48x34);
igauli20 0:4898efdb611a 293 }
igauli20 0:4898efdb611a 294 wait(2);
igauli20 0:4898efdb611a 295 myLCD.set_orientation((++orient)%4);
igauli20 0:4898efdb611a 296 }*/
igauli20 0:4898efdb611a 297 }