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.
Dependencies: MMA8452 N5110 PowerControl mbed
Acceloro.cpp@1:8359e6982b30, 2015-05-11 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |