LSM9DS1 i2c

Dependencies:   mbed MGC3130

Committer:
antimo8@alice.it
Date:
Wed Jul 18 23:40:51 2018 +0200
Revision:
5:ab0d54d9e071
Parent:
3:9b3780a7d51e
add mgc3130.li adn example in main

Who changed what in which revision?

UserRevisionLine numberNew contents of line
antimo8 0:553e72ae6d64 1 #include "mbed.h"
antimo8 0:553e72ae6d64 2
antimo8@alice.it 5:ab0d54d9e071 3 /*
antimo8@alice.it 5:ab0d54d9e071 4 Outlines the function of the Library’s I2C message interface, and contains the complete message reference to control and operate the MGC3X30 system.
antimo8@alice.it 5:ab0d54d9e071 5
antimo8@alice.it 5:ab0d54d9e071 6 Example:
antimo8@alice.it 5:ab0d54d9e071 7 @code
antimo8@alice.it 5:ab0d54d9e071 8 */
antimo8@alice.it 5:ab0d54d9e071 9
antimo8@alice.it 5:ab0d54d9e071 10 #include "mbed.h"
antimo8@alice.it 5:ab0d54d9e071 11 #include "MGC3130.h"
antimo8@alice.it 5:ab0d54d9e071 12
antimo8@alice.it 5:ab0d54d9e071 13 SensorData * msg = NULL;
antimo8@alice.it 5:ab0d54d9e071 14 MGC3130 device (PB_7,PA_15, PB_1, false);
antimo8@alice.it 5:ab0d54d9e071 15 Serial pc(SERIAL_TX, SERIAL_RX);
antimo8@alice.it 5:ab0d54d9e071 16 void init()
antimo8@alice.it 5:ab0d54d9e071 17 {
antimo8@alice.it 5:ab0d54d9e071 18 pc.printf("\r\n init\r\n ");
antimo8@alice.it 5:ab0d54d9e071 19 AirWheelDetection air(true);
antimo8@alice.it 5:ab0d54d9e071 20 device.setRuntimeParameter(&air);
antimo8@alice.it 3:9b3780a7d51e 21
antimo8@alice.it 5:ab0d54d9e071 22 TouchDetection touch(true);
antimo8@alice.it 5:ab0d54d9e071 23 device.setRuntimeParameter(&touch);
antimo8@alice.it 5:ab0d54d9e071 24
antimo8@alice.it 5:ab0d54d9e071 25 OutputEnable setting;
antimo8@alice.it 5:ab0d54d9e071 26 setting.enableGestureData(true)->enableTouchInfo(true)->enableAirWheelInfo(true)->enableNoisePower(false)
antimo8@alice.it 5:ab0d54d9e071 27 ->enablexyzPosition(false)->enableDSPStatus(false)->enableUncalibratedSignal(false)->enableSignalDeviation(false);
antimo8@alice.it 5:ab0d54d9e071 28 device.setRuntimeParameter(&setting);
antimo8@alice.it 5:ab0d54d9e071 29 }
antimo8@alice.it 5:ab0d54d9e071 30
antimo8@alice.it 5:ab0d54d9e071 31 void touch()
antimo8@alice.it 5:ab0d54d9e071 32 {
antimo8@alice.it 5:ab0d54d9e071 33 pc.printf("\r\n touch \r\n ");
antimo8@alice.it 5:ab0d54d9e071 34 TouchInfo * info = msg->getTouchInfo();
antimo8@alice.it 5:ab0d54d9e071 35
antimo8@alice.it 5:ab0d54d9e071 36 if (info == NULL)
antimo8@alice.it 5:ab0d54d9e071 37 return;
antimo8@alice.it 5:ab0d54d9e071 38
antimo8@alice.it 5:ab0d54d9e071 39 if (info->isTapCenterElectrode() == false)
antimo8@alice.it 5:ab0d54d9e071 40 return;
antimo8@alice.it 5:ab0d54d9e071 41 }
antimo8@alice.it 3:9b3780a7d51e 42
antimo8@alice.it 5:ab0d54d9e071 43 void airWheel()
antimo8@alice.it 5:ab0d54d9e071 44 {
antimo8@alice.it 5:ab0d54d9e071 45 pc.printf("\r\n airWheel \r\n ");
antimo8@alice.it 5:ab0d54d9e071 46 int * wheel = msg->getAirWheelInfo();
antimo8@alice.it 5:ab0d54d9e071 47 if (wheel == NULL)
antimo8@alice.it 5:ab0d54d9e071 48 return;
antimo8@alice.it 5:ab0d54d9e071 49 }
antimo8@alice.it 5:ab0d54d9e071 50
antimo8@alice.it 5:ab0d54d9e071 51 void gesture()
antimo8@alice.it 5:ab0d54d9e071 52 {
antimo8@alice.it 5:ab0d54d9e071 53 pc.printf("\r\n gesture \r\n ");
antimo8@alice.it 5:ab0d54d9e071 54 GestureInfo * info = msg->getGestureInfo();
antimo8@alice.it 5:ab0d54d9e071 55
antimo8@alice.it 5:ab0d54d9e071 56 if (info == NULL)
antimo8@alice.it 5:ab0d54d9e071 57 return;
antimo8@alice.it 5:ab0d54d9e071 58
antimo8@alice.it 5:ab0d54d9e071 59 switch (info->getRecognizedGesture()) {
antimo8@alice.it 5:ab0d54d9e071 60 //Garbage Model
antimo8@alice.it 5:ab0d54d9e071 61 case 1 :
antimo8@alice.it 5:ab0d54d9e071 62 break;
antimo8@alice.it 5:ab0d54d9e071 63 pc.printf("\r\n Flick West To East \r\n ");
antimo8@alice.it 5:ab0d54d9e071 64 //Flick West To East
antimo8@alice.it 5:ab0d54d9e071 65 case 2 :
antimo8@alice.it 5:ab0d54d9e071 66 pc.printf("\r\n Flick West To East \r\n ");
antimo8@alice.it 5:ab0d54d9e071 67 break;
antimo8@alice.it 5:ab0d54d9e071 68 //Flick East To West
antimo8@alice.it 5:ab0d54d9e071 69 case 3 :
antimo8@alice.it 5:ab0d54d9e071 70 pc.printf("\r\n Flick South To North \r\n ");
antimo8@alice.it 5:ab0d54d9e071 71 break;
antimo8@alice.it 5:ab0d54d9e071 72 //Flick South To North
antimo8@alice.it 5:ab0d54d9e071 73 case 4 :
antimo8@alice.it 5:ab0d54d9e071 74 pc.printf("\r\n //Flick North To South \r\n ");
antimo8@alice.it 5:ab0d54d9e071 75 break;
antimo8@alice.it 5:ab0d54d9e071 76 //Flick North To South
antimo8@alice.it 5:ab0d54d9e071 77 case 5 :
antimo8@alice.it 5:ab0d54d9e071 78 pc.printf("\r\n //Flick North To South \r\n ");
antimo8@alice.it 5:ab0d54d9e071 79 break;
antimo8@alice.it 5:ab0d54d9e071 80 }
antimo8@alice.it 5:ab0d54d9e071 81 }
antimo8@alice.it 5:ab0d54d9e071 82
antimo8 0:553e72ae6d64 83 int main()
antimo8 0:553e72ae6d64 84 {
antimo8@alice.it 5:ab0d54d9e071 85 init();
antimo8@alice.it 5:ab0d54d9e071 86
antimo8@alice.it 5:ab0d54d9e071 87 while(1) {
antimo8@alice.it 5:ab0d54d9e071 88 msg = device.readSensorData();
antimo8@alice.it 5:ab0d54d9e071 89
antimo8@alice.it 5:ab0d54d9e071 90 if (msg == NULL)
antimo8@alice.it 5:ab0d54d9e071 91 continue;
antimo8@alice.it 5:ab0d54d9e071 92
antimo8@alice.it 5:ab0d54d9e071 93 touch();
antimo8@alice.it 5:ab0d54d9e071 94
antimo8@alice.it 5:ab0d54d9e071 95 gesture();
antimo8@alice.it 5:ab0d54d9e071 96
antimo8@alice.it 5:ab0d54d9e071 97 airWheel();
antimo8@alice.it 5:ab0d54d9e071 98 }
antimo8@alice.it 5:ab0d54d9e071 99 }
antimo8 0:553e72ae6d64 100
antimo8@alice.it 5:ab0d54d9e071 101
antimo8@alice.it 5:ab0d54d9e071 102 // I2C i2c(PB_7,PA_15);
antimo8@alice.it 5:ab0d54d9e071 103
antimo8@alice.it 5:ab0d54d9e071 104 // DigitalOut myled(LED1);
antimo8 0:553e72ae6d64 105
antimo8@alice.it 5:ab0d54d9e071 106 // Serial pc(SERIAL_TX, SERIAL_RX);
antimo8@alice.it 5:ab0d54d9e071 107
antimo8@alice.it 5:ab0d54d9e071 108
antimo8@alice.it 5:ab0d54d9e071 109 // int main()
antimo8@alice.it 5:ab0d54d9e071 110 // {
antimo8 0:553e72ae6d64 111
antimo8@alice.it 5:ab0d54d9e071 112 // char data_write[2];
antimo8@alice.it 5:ab0d54d9e071 113 // char data_read[2];
antimo8@alice.it 5:ab0d54d9e071 114
antimo8@alice.it 5:ab0d54d9e071 115 // while (1) {
antimo8@alice.it 5:ab0d54d9e071 116 // //Read accelerometer register
antimo8@alice.it 5:ab0d54d9e071 117 // data_write[0] = AG_WHO_AM_I;
antimo8@alice.it 5:ab0d54d9e071 118 // i2c.write(0xd4, data_write, 1, 0 ); // no stop
antimo8@alice.it 5:ab0d54d9e071 119 // i2c.read(0x6a, data_read, 2, 0);
antimo8 0:553e72ae6d64 120
antimo8@alice.it 5:ab0d54d9e071 121 // // Display result
antimo8@alice.it 5:ab0d54d9e071 122 // pc.printf("data_read[0] = %x\n", data_read[0]);
antimo8@alice.it 5:ab0d54d9e071 123 // pc.printf("data_read[1] = %x\n", data_read[1]);
antimo8@alice.it 5:ab0d54d9e071 124 // myled = !myled;
antimo8@alice.it 5:ab0d54d9e071 125 // wait(1);
antimo8@alice.it 3:9b3780a7d51e 126
antimo8@alice.it 3:9b3780a7d51e 127
antimo8@alice.it 3:9b3780a7d51e 128
antimo8@alice.it 5:ab0d54d9e071 129 // }
antimo8@alice.it 3:9b3780a7d51e 130
antimo8@alice.it 5:ab0d54d9e071 131 // }
antimo8@alice.it 3:9b3780a7d51e 132