wsqWD

Dependencies:   4DGL-uLCD-SE MMA8452Q2

Committer:
lukeamlicke
Date:
Wed Apr 01 15:06:02 2020 +0000
Revision:
0:386a88a6aab2
fhdfgh

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lukeamlicke 0:386a88a6aab2 1 // Demo for the uLCD-144-G2 and MMA8452Q 3-axis accelerometer
lukeamlicke 0:386a88a6aab2 2
lukeamlicke 0:386a88a6aab2 3 #include "mbed.h"
lukeamlicke 0:386a88a6aab2 4 #include "MMA8452Q.h"
lukeamlicke 0:386a88a6aab2 5 #include "uLCD_4DGL.h"
lukeamlicke 0:386a88a6aab2 6
lukeamlicke 0:386a88a6aab2 7 // Graphic LCD - TX, RX, and RES pins
lukeamlicke 0:386a88a6aab2 8 uLCD_4DGL uLCD(p9,p10,p11);
lukeamlicke 0:386a88a6aab2 9
lukeamlicke 0:386a88a6aab2 10 // Accelerometer - SDA, SCL, and I2C address
lukeamlicke 0:386a88a6aab2 11 MMA8452Q accel(p28, p27, 0x1D);
lukeamlicke 0:386a88a6aab2 12
lukeamlicke 0:386a88a6aab2 13 int main() {
lukeamlicke 0:386a88a6aab2 14
lukeamlicke 0:386a88a6aab2 15 // Initialize uLCD
lukeamlicke 0:386a88a6aab2 16 uLCD.baudrate(115200);
lukeamlicke 0:386a88a6aab2 17 uLCD.background_color(BLACK);
lukeamlicke 0:386a88a6aab2 18 uLCD.cls();
lukeamlicke 0:386a88a6aab2 19
lukeamlicke 0:386a88a6aab2 20 // Initialize accelerometer
lukeamlicke 0:386a88a6aab2 21 accel.init();
lukeamlicke 0:386a88a6aab2 22
lukeamlicke 0:386a88a6aab2 23 // Initial parameters for the circle
lukeamlicke 0:386a88a6aab2 24 float x = 64;
lukeamlicke 0:386a88a6aab2 25 float y = 64;
lukeamlicke 0:386a88a6aab2 26 int radius = 4;
lukeamlicke 0:386a88a6aab2 27 int speed = 4;
lukeamlicke 0:386a88a6aab2 28
lukeamlicke 0:386a88a6aab2 29 // Make a ball "fall" in direction of accelerometer
lukeamlicke 0:386a88a6aab2 30 while (1) {
lukeamlicke 0:386a88a6aab2 31
lukeamlicke 0:386a88a6aab2 32 // Draw a red circle
lukeamlicke 0:386a88a6aab2 33 uLCD.filled_circle((int)x, (int)y, radius, RED);
lukeamlicke 0:386a88a6aab2 34
lukeamlicke 0:386a88a6aab2 35 // Wait before erasing old circle
lukeamlicke 0:386a88a6aab2 36 wait(0.02); // In seconds
lukeamlicke 0:386a88a6aab2 37
lukeamlicke 0:386a88a6aab2 38 // Erase old circle
lukeamlicke 0:386a88a6aab2 39 uLCD.filled_circle((int)x, (int)y, radius, BLACK);
lukeamlicke 0:386a88a6aab2 40
lukeamlicke 0:386a88a6aab2 41 // Move circle. IMPORTANT! Notice how we adjust for sensor orientation!
lukeamlicke 0:386a88a6aab2 42 x -= (speed * accel.readY());
lukeamlicke 0:386a88a6aab2 43 y -= (speed * accel.readX());
lukeamlicke 0:386a88a6aab2 44
lukeamlicke 0:386a88a6aab2 45 // Make circle sit on edges
lukeamlicke 0:386a88a6aab2 46 if ( x <= radius + 1 ) {
lukeamlicke 0:386a88a6aab2 47 x = radius + 1;
lukeamlicke 0:386a88a6aab2 48 } else if ( x >= 126 - radius ) {
lukeamlicke 0:386a88a6aab2 49 x = 126 - radius;
lukeamlicke 0:386a88a6aab2 50 }
lukeamlicke 0:386a88a6aab2 51 if ( y <= radius + 1 ) {
lukeamlicke 0:386a88a6aab2 52 y = radius + 1;
lukeamlicke 0:386a88a6aab2 53 } else if ( y >= 126 - radius ) {
lukeamlicke 0:386a88a6aab2 54 y = 126 - radius;
lukeamlicke 0:386a88a6aab2 55 }
lukeamlicke 0:386a88a6aab2 56 }
lukeamlicke 0:386a88a6aab2 57 }