Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: ulcd_accel/main.cpp
- Revision:
- 0:6a73d3dc037e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ulcd_accel/main.cpp Mon Jul 28 20:29:28 2014 +0000
@@ -0,0 +1,57 @@
+// Demo for the uLCD-144-G2 and MMA8452Q 3-axis accelerometer
+
+#include "mbed.h"
+#include "MMA8452Q.h"
+#include "uLCD_4DGL.h"
+
+// Graphic LCD - TX, RX, and RES pins
+uLCD_4DGL uLCD(p9,p10,p11);
+
+// Accelerometer - SDA, SCL, and I2C address
+MMA8452Q accel(p28, p27, 0x1D);
+
+int main() {
+
+ // Initialize uLCD
+ uLCD.baudrate(115200);
+ uLCD.background_color(BLACK);
+ uLCD.cls();
+
+ // Initialize accelerometer
+ accel.init();
+
+ // Initial parameters for the circle
+ float x = 64;
+ float y = 64;
+ int radius = 4;
+ int speed = 4;
+
+ // Make a ball "fall" in direction of accelerometer
+ while (1) {
+
+ // Draw a red circle
+ uLCD.filled_circle((int)x, (int)y, radius, RED);
+
+ // Wait before erasing old circle
+ wait(0.02); // In seconds
+
+ // Erase old circle
+ uLCD.filled_circle((int)x, (int)y, radius, BLACK);
+
+ // Move circle. IMPORTANT! Notice how we adjust for sensor orientation!
+ x -= (speed * accel.readY());
+ y -= (speed * accel.readX());
+
+ // Make circle sit on edges
+ if ( x <= radius + 1 ) {
+ x = radius + 1;
+ } else if ( x >= 126 - radius ) {
+ x = 126 - radius;
+ }
+ if ( y <= radius + 1 ) {
+ y = radius + 1;
+ } else if ( y >= 126 - radius ) {
+ y = 126 - radius;
+ }
+ }
+}