![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
fsfs
Dependencies: 4DGL-uLCD-SE LSM303D mbed
Fork of LSM303D_SPI by
main.cpp
- Committer:
- shurjo_1234
- Date:
- 2014-10-21
- Revision:
- 0:684294feee71
- Child:
- 1:bad5121a35c7
File content as of revision 0:684294feee71:
#include "mbed.h" #include "LSM303D.h" SPI spi(p5, p6, p7); // mosi, miso, sclk LSM303D sensor1(spi,p15); LSM303D sensor2(spi,p16); LSM303D sensor3(spi,p17); LSM303D sensor4(spi,p18); #include "uLCD_4DGL.h" uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin; int main() { // Chip must be deselected sensor1.initialize(); float vx_old = sensor1.magnitometer(2); float fx=63.0,fy=2.0,vx= 0.0,vy=0.4; int x=63,y=2,radius=2; uLCD.background_color(BLACK); uLCD.cls(); int pts[20]; for (int level=1; level<=5; level++) { if (level == 1) { pts[0] = 30; pts[1] = 63; pts[2] = 96; pts[3] = 63; } else if (level == 2) { pts[0] = 0; pts[1] = 40; pts[2] = 50; pts[3] = 40; pts[4] = 76; pts[5] = 80; pts[6] = 126; pts[7] = 80; } else if (level == 3) { pts[0] = 0; pts[1] = 30; pts[2] = 50; pts[3] = 30; pts[4] = 76; pts[5] = 60; pts[6] = 126; pts[7] = 60; pts[8] = 76; pts[9] = 90; pts[10] = 126; pts[11] = 90; } else if (level == 4) { pts[0] = 0; pts[1] = 28; pts[2] = 50; pts[3] = 28; pts[4] = 76; pts[5] = 56; pts[6] = 126; pts[7] = 56; pts[8] = 76; pts[9] = 84; pts[10] = 126; pts[11] = 84; pts[12] = 76; pts[13] = 112; pts[14] = 126; pts[15] = 112; } else { pts[0] = 0; pts[1] = 20; pts[2] = 50; pts[3] = 20; pts[4] = 76; pts[5] = 40; pts[6] = 126; pts[7] = 40; pts[8] = 76; pts[9] = 60; pts[10] = 126; pts[11] = 60; pts[12] = 76; pts[13] = 80; pts[14] = 126; pts[15] = 80; pts[16] = 76; pts[17] = 100; pts[18] = 126; pts[19] = 100; } uLCD.cls(); for (int i=0; i<level; i++) { uLCD.line(pts[4*i], pts[4*i+1], pts[4*i+2], pts[4*i+3], WHITE); } y = 2; fy = 2; while (y<126) { vx = (sensor1.magnitometer(2)-vx_old)/100; //draw ball uLCD.filled_circle(x, y, radius, RED); //bounce off edge walls and slow down a bit? for (int i=0; i<level; i++) { if (x>pts[4*i] && x<pts[4*i+2] && y>pts[4*i+1]-1 && y<pts[4*i+3]+1) { uLCD.cls(); uLCD.text_width(4); //4X size text uLCD.text_height(4); uLCD.color(RED); uLCD.locate(0,0); uLCD.printf("GAME OVER"); return 0; } } uLCD.filled_circle(x, y, radius, BLACK); //move ball fx=fx+vx; fy=fy+vy; x=(int)fx; y=(int)fy; if (x<0) { x += 126; fx = x; } if (x>126) { x -= 126; fx = x; } } uLCD.cls(); uLCD.text_width(4); //4X size text uLCD.text_height(4); uLCD.color(RED); uLCD.locate(1,1); if (level <= 4) uLCD.printf("%2D",level+1); else { uLCD.locate(1,1); uLCD.printf("YOU WIN"); } wait(1); } }