acelerometro de auteco
Dependencies: MMA8451Q TextLCD mbed
Fork of Tarea8accelerometro by
main.cpp@9:07e404aea94e, 2014-05-07 (annotated)
- Committer:
- pagomezba
- Date:
- Wed May 07 22:51:30 2014 +0000
- Revision:
- 9:07e404aea94e
- Parent:
- 8:a2b340994747
esto es paraelproyecto auteco
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chris | 2:41db78380a6e | 1 | #include "mbed.h" |
chris | 2:41db78380a6e | 2 | #include "MMA8451Q.h" |
amarincan | 8:a2b340994747 | 3 | #include "TextLCD.h" |
chris | 2:41db78380a6e | 4 | |
chris | 2:41db78380a6e | 5 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
chris | 2:41db78380a6e | 6 | |
pagomezba | 9:07e404aea94e | 7 | TextLCD lcd(PTB8, PTB9, PTB10, PTB11, PTE2, PTE3); // rs, e, d4-d7 |
pagomezba | 9:07e404aea94e | 8 | float acx=0,acy=0,acz=0, filtro=0; |
pagomezba | 9:07e404aea94e | 9 | float faroin1, faroin2, faroout; |
chris | 4:367de1084ea9 | 10 | int main(void) { |
emilmont | 5:bf5becf7469c | 11 | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); |
emilmont | 5:bf5becf7469c | 12 | PwmOut rled(LED_RED); |
emilmont | 5:bf5becf7469c | 13 | PwmOut gled(LED_GREEN); |
emilmont | 5:bf5becf7469c | 14 | PwmOut bled(LED_BLUE); |
pagomezba | 9:07e404aea94e | 15 | |
pagomezba | 9:07e404aea94e | 16 | PwmOut acx(PTD4); |
pagomezba | 9:07e404aea94e | 17 | PwmOut acy(PTA12); |
pagomezba | 9:07e404aea94e | 18 | PwmOut acz(PTA4); |
pagomezba | 9:07e404aea94e | 19 | |
pagomezba | 9:07e404aea94e | 20 | AnalogIn faroin1(PTB3); |
pagomezba | 9:07e404aea94e | 21 | AnalogIn faroin2(PTB2); |
pagomezba | 9:07e404aea94e | 22 | DigitalOut faroout(PTA13); |
pagomezba | 9:07e404aea94e | 23 | |
pagomezba | 9:07e404aea94e | 24 | Serial pc(USBTX, USBRX); // tx, rx |
pagomezba | 9:07e404aea94e | 25 | lcd.locate(0,0); |
pagomezba | 9:07e404aea94e | 26 | lcd.printf("Medicion"); |
pagomezba | 9:07e404aea94e | 27 | lcd.locate(0,1); |
amarincan | 8:a2b340994747 | 28 | lcd.printf("Acelerometro"); |
amarincan | 8:a2b340994747 | 29 | wait(2); |
amarincan | 8:a2b340994747 | 30 | lcd.locate(0,0); |
pagomezba | 9:07e404aea94e | 31 | lcd.printf("x= y="); |
amarincan | 8:a2b340994747 | 32 | lcd.locate(0,1); |
pagomezba | 9:07e404aea94e | 33 | lcd.printf("z= "); |
emilmont | 5:bf5becf7469c | 34 | while (true) { |
pagomezba | 9:07e404aea94e | 35 | |
chris | 3:f2d3e041d8f2 | 36 | rled = 1.0 - abs(acc.getAccX()); |
chris | 3:f2d3e041d8f2 | 37 | gled = 1.0 - abs(acc.getAccY()); |
chris | 3:f2d3e041d8f2 | 38 | bled = 1.0 - abs(acc.getAccZ()); |
amarincan | 8:a2b340994747 | 39 | |
pagomezba | 9:07e404aea94e | 40 | if (faroin1 > 0.5 or faroin2 > 0.5) { |
pagomezba | 9:07e404aea94e | 41 | faroout = 1; |
pagomezba | 9:07e404aea94e | 42 | filtro=((acc.getAccX()+(2*filtro))/3); |
pagomezba | 9:07e404aea94e | 43 | if (acc.getAccX() > 0) { |
pagomezba | 9:07e404aea94e | 44 | acx=0.5 + (filtro*2); |
pagomezba | 9:07e404aea94e | 45 | acy=0.5 - (filtro*2); |
pagomezba | 9:07e404aea94e | 46 | } |
pagomezba | 9:07e404aea94e | 47 | else { |
pagomezba | 9:07e404aea94e | 48 | acx=0.5 + (filtro*2); |
pagomezba | 9:07e404aea94e | 49 | acy=0.5 - (filtro*2); |
pagomezba | 9:07e404aea94e | 50 | } |
pagomezba | 9:07e404aea94e | 51 | if (acx > 1 or acy > 1) { |
pagomezba | 9:07e404aea94e | 52 | acx=1; |
pagomezba | 9:07e404aea94e | 53 | acy=1; |
pagomezba | 9:07e404aea94e | 54 | } |
pagomezba | 9:07e404aea94e | 55 | else if (acx<0 or acy<0) { |
pagomezba | 9:07e404aea94e | 56 | acx=0; |
pagomezba | 9:07e404aea94e | 57 | acy=0; |
pagomezba | 9:07e404aea94e | 58 | } |
pagomezba | 9:07e404aea94e | 59 | } |
pagomezba | 9:07e404aea94e | 60 | else { |
pagomezba | 9:07e404aea94e | 61 | faroout = 0; |
pagomezba | 9:07e404aea94e | 62 | acx=0.5; |
pagomezba | 9:07e404aea94e | 63 | acy=0.5; |
pagomezba | 9:07e404aea94e | 64 | } |
pagomezba | 9:07e404aea94e | 65 | |
pagomezba | 9:07e404aea94e | 66 | |
pagomezba | 9:07e404aea94e | 67 | //acz=0.0 + (acc.getAccZ()); |
pagomezba | 9:07e404aea94e | 68 | |
pagomezba | 9:07e404aea94e | 69 | |
pagomezba | 9:07e404aea94e | 70 | lcd.locate(2,0); |
amarincan | 8:a2b340994747 | 71 | lcd.printf(" "); |
pagomezba | 9:07e404aea94e | 72 | lcd.locate(2,0); |
pagomezba | 9:07e404aea94e | 73 | /* |
pagomezba | 9:07e404aea94e | 74 | lcd.printf("%2.2f",acx); |
pagomezba | 9:07e404aea94e | 75 | lcd.locate(11,0); |
pagomezba | 9:07e404aea94e | 76 | lcd.printf(" "); |
pagomezba | 9:07e404aea94e | 77 | lcd.locate(11,0); |
pagomezba | 9:07e404aea94e | 78 | lcd.printf("%2.2f",acy); |
pagomezba | 9:07e404aea94e | 79 | lcd.locate(2,1); |
pagomezba | 9:07e404aea94e | 80 | lcd.printf(" "); |
pagomezba | 9:07e404aea94e | 81 | lcd.locate(2,1); |
pagomezba | 9:07e404aea94e | 82 | lcd.printf("%2.2f",acz); |
pagomezba | 9:07e404aea94e | 83 | */ |
pagomezba | 9:07e404aea94e | 84 | wait(0.2); |
pagomezba | 9:07e404aea94e | 85 | //pc.printf(("%f %f %f ,"),acc.getAccX(),acc.getAccY(),acc.getAccZ()); |
pagomezba | 9:07e404aea94e | 86 | pc.printf(("%f %f %f"),acx.read(),acy.read(),faroin1.read()); |
pagomezba | 9:07e404aea94e | 87 | //pc.printf(("%f %f ,"),acx.read(),acy.read()); |
pagomezba | 9:07e404aea94e | 88 | //faroin2.read() |
pagomezba | 9:07e404aea94e | 89 | wait(0.2); //287 o 289 fluke |
chris | 2:41db78380a6e | 90 | } |
chris | 2:41db78380a6e | 91 | } |