Mario Quartey-Papafio / Mbed 2 deprecated Accelerometer

Dependencies:   MMA8452 N5110 PowerControl mbed

Committer:
MrMavriks
Date:
Mon May 11 18:27:20 2015 +0000
Revision:
1:8359e6982b30
Parent:
0:39bc90f27661
Everything Works

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MrMavriks 0:39bc90f27661 1 /**
MrMavriks 0:39bc90f27661 2 @file main.h
MrMavriks 0:39bc90f27661 3 @Header file contains code for displaying acceleration, defines and global variables.
MrMavriks 0:39bc90f27661 4 @Revision 1.0
MrMavriks 0:39bc90f27661 5 @Author Mario Quartey Papafio
MrMavriks 0:39bc90f27661 6 @Date May 2015
MrMavriks 0:39bc90f27661 7 */
MrMavriks 0:39bc90f27661 8
MrMavriks 0:39bc90f27661 9
MrMavriks 0:39bc90f27661 10 #include "mbed.h"
MrMavriks 0:39bc90f27661 11 #include "N5110.h"
MrMavriks 0:39bc90f27661 12 #include "MMA8452.h"
MrMavriks 0:39bc90f27661 13 #include "PowerControl/PowerControl.h"
MrMavriks 0:39bc90f27661 14 #include "PowerControl/EthernetPowerControl.h"
MrMavriks 0:39bc90f27661 15
MrMavriks 0:39bc90f27661 16 char buffer[14]; // to store array character takes 6 pixels
MrMavriks 0:39bc90f27661 17 char buffer1[14];
MrMavriks 0:39bc90f27661 18 char buffer2[14];
MrMavriks 0:39bc90f27661 19 char buffer3[14];
MrMavriks 0:39bc90f27661 20
MrMavriks 1:8359e6982b30 21 DigitalOut led(LED1);
MrMavriks 0:39bc90f27661 22
MrMavriks 1:8359e6982b30 23 void readings();
MrMavriks 0:39bc90f27661 24
MrMavriks 1:8359e6982b30 25 PwmOut myled(p22);
MrMavriks 1:8359e6982b30 26 PwmOut buzzer(p21);
MrMavriks 0:39bc90f27661 27 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
MrMavriks 0:39bc90f27661 28 MMA8452 mma8452(p28,p27); // SDA, SCL
MrMavriks 0:39bc90f27661 29 Serial serial(USBTX,USBRX);
MrMavriks 1:8359e6982b30 30 AnalogIn pot(p20);
MrMavriks 0:39bc90f27661 31
MrMavriks 1:8359e6982b30 32 Timeout timer; // create ticker object
MrMavriks 1:8359e6982b30 33
MrMavriks 1:8359e6982b30 34 int timerFlag = 0; // flag for timer
MrMavriks 1:8359e6982b30 35
MrMavriks 1:8359e6982b30 36 //Interrupt Service Routine
MrMavriks 1:8359e6982b30 37 void timerExpired() {
MrMavriks 1:8359e6982b30 38 timerFlag = 1;
MrMavriks 1:8359e6982b30 39 //led=!led;
MrMavriks 1:8359e6982b30 40
MrMavriks 1:8359e6982b30 41 float x=-(1-pot.read())*44/45+1;
MrMavriks 1:8359e6982b30 42 timer.detach();
MrMavriks 1:8359e6982b30 43 timer.attach(&timerExpired,x);
MrMavriks 1:8359e6982b30 44
MrMavriks 0:39bc90f27661 45 }
MrMavriks 0:39bc90f27661 46
MrMavriks 0:39bc90f27661 47
MrMavriks 1:8359e6982b30 48
MrMavriks 0:39bc90f27661 49
MrMavriks 1:8359e6982b30 50 void turnon () { //Turns on LCD AND Accelerometer.
MrMavriks 0:39bc90f27661 51 lcd.init();
MrMavriks 1:8359e6982b30 52 lcd.printString("Mario Quartey", 0,0);
MrMavriks 1:8359e6982b30 53 lcd.printString("Accelerometer", 0,1);
MrMavriks 1:8359e6982b30 54 lcd.printString("Elec 2645", 0,2);
MrMavriks 1:8359e6982b30 55 lcd.printString("Dr C Evans!", 0,3);
MrMavriks 0:39bc90f27661 56 lcd.refresh();
MrMavriks 1:8359e6982b30 57 wait(2);
MrMavriks 0:39bc90f27661 58 lcd.clear();
MrMavriks 0:39bc90f27661 59 mma8452.init(); // 100 Hz update rate, ±4g scale
MrMavriks 1:8359e6982b30 60 }
MrMavriks 1:8359e6982b30 61 void readings () {
MrMavriks 1:8359e6982b30 62 Acceleration acceleration;
MrMavriks 1:8359e6982b30 63 lcd.printString("X Y Z Values", 0,0);
MrMavriks 0:39bc90f27661 64 acceleration = mma8452.readValues(); // read current values and print over serial port
MrMavriks 0:39bc90f27661 65 int xx = sprintf(buffer, "x = %.2f", acceleration.x); // figure eout the length of chars
MrMavriks 0:39bc90f27661 66 int yy = sprintf(buffer1, "y = %.2f", acceleration.y);
MrMavriks 0:39bc90f27661 67 int zz = sprintf(buffer2, "z = %.2f", acceleration.z);
MrMavriks 1:8359e6982b30 68 float mag = sqrt((acceleration.x*acceleration.x + acceleration.y*acceleration.y + acceleration.z*acceleration.z));
MrMavriks 1:8359e6982b30 69 int ff = sprintf(buffer3, "Mag = %.2f", mag);
MrMavriks 1:8359e6982b30 70 //serial.printf("x = %.2f g y = %.2f g z = %.2f g\n",acceleration.x,acceleration.y,acceleration.z);
MrMavriks 0:39bc90f27661 71 wait(0.1); // short delay until next reading
MrMavriks 0:39bc90f27661 72 if (xx <= 14){ // if the length is smaller than 14 chars. it prints
MrMavriks 0:39bc90f27661 73 lcd.printString(buffer, 10, 1);
MrMavriks 0:39bc90f27661 74 if (yy <= 14){ // if the length is smaller than 14 chars. it prints
MrMavriks 0:39bc90f27661 75 lcd.printString(buffer1, 10, 2);
MrMavriks 0:39bc90f27661 76 if (zz <= 14){ // if the length is smaller than 14 chars. it prints
MrMavriks 0:39bc90f27661 77 lcd.printString(buffer2, 10, 3);
MrMavriks 1:8359e6982b30 78 if (mag <= 14){ // if the length is smaller than 14 chars. it prints
MrMavriks 1:8359e6982b30 79 lcd.printString(buffer3, 10, 4);
MrMavriks 1:8359e6982b30 80 if (mag > 1.5)
MrMavriks 1:8359e6982b30 81 for(float p = 0.0f; p < 1.0f; p += 0.1f) {
MrMavriks 1:8359e6982b30 82 buzzer = p;
MrMavriks 1:8359e6982b30 83 wait (0.3);
MrMavriks 1:8359e6982b30 84 buzzer = 0;
MrMavriks 1:8359e6982b30 85 }}}}}}
MrMavriks 1:8359e6982b30 86
MrMavriks 1:8359e6982b30 87
MrMavriks 1:8359e6982b30 88 int main() {
MrMavriks 1:8359e6982b30 89 turnon();
MrMavriks 1:8359e6982b30 90
MrMavriks 1:8359e6982b30 91 timer.attach(&timerExpired,1);
MrMavriks 1:8359e6982b30 92
MrMavriks 1:8359e6982b30 93 PHY_PowerDown(); //Powers Down ethernet
MrMavriks 1:8359e6982b30 94
MrMavriks 1:8359e6982b30 95 while (1) {
MrMavriks 1:8359e6982b30 96
MrMavriks 1:8359e6982b30 97 for(float p = 0.0f; p < 1.0f; p += 0.1f) {
MrMavriks 1:8359e6982b30 98 myled = p;
MrMavriks 1:8359e6982b30 99
MrMavriks 1:8359e6982b30 100 }
MrMavriks 1:8359e6982b30 101
MrMavriks 1:8359e6982b30 102 if (timerFlag) {
MrMavriks 1:8359e6982b30 103 readings ();
MrMavriks 0:39bc90f27661 104
MrMavriks 1:8359e6982b30 105 timerFlag = 0;
MrMavriks 0:39bc90f27661 106 }
MrMavriks 1:8359e6982b30 107 lcd.refresh();
MrMavriks 0:39bc90f27661 108 }
MrMavriks 1:8359e6982b30 109
MrMavriks 1:8359e6982b30 110 }