ELEC2645 (2018/19) / Mbed 2 deprecated el17zl

Dependencies:   mbed

Fork of el17zl by Zhenwen Liao

Committer:
franklzw
Date:
Wed May 08 17:19:40 2019 +0000
Revision:
18:e9e5df6ffb87
Parent:
0:3884637e48d1
Final version! Sokoban game with 3 level and a short introduction. ; Use the joystick to select from menu and enter each level. ; Use bottom A,B,X,Y to play the game,and tone can be adjusted by the potentialmeter.; Enjoy!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
franklzw 0:3884637e48d1 1 /** @file FXOS8700CQ.h
franklzw 0:3884637e48d1 2
franklzw 0:3884637e48d1 3 @ brief FXOS8700CQ Library
franklzw 0:3884637e48d1 4
franklzw 0:3884637e48d1 5 @author Dr Craig A. Evans
franklzw 0:3884637e48d1 6 @brief (c) University of Leeds, Jan 2017
franklzw 0:3884637e48d1 7
franklzw 0:3884637e48d1 8 @code
franklzw 0:3884637e48d1 9
franklzw 0:3884637e48d1 10 #include "mbed.h"
franklzw 0:3884637e48d1 11 #include "FXOS8700CQ.h"
franklzw 0:3884637e48d1 12
franklzw 0:3884637e48d1 13 // create object and specifiy pins
franklzw 0:3884637e48d1 14 FXOS8700CQ device(I2C_SDA,I2C_SCL);
franklzw 0:3884637e48d1 15
franklzw 0:3884637e48d1 16 int main()
franklzw 0:3884637e48d1 17 {
franklzw 0:3884637e48d1 18 // call initialisation method
franklzw 0:3884637e48d1 19 device.init();
franklzw 0:3884637e48d1 20
franklzw 0:3884637e48d1 21 while (1) {
franklzw 0:3884637e48d1 22
franklzw 0:3884637e48d1 23 // poll the sensor and get the values, storing in a struct
franklzw 0:3884637e48d1 24 Data values = device.get_values();
franklzw 0:3884637e48d1 25
franklzw 0:3884637e48d1 26 // print each struct member over serial
franklzw 0:3884637e48d1 27 printf("ax = %f ay = %f az = %f | mx = %f my = %f mz = %f\n"
franklzw 0:3884637e48d1 28 ,values.ax, values.ay, values.az
franklzw 0:3884637e48d1 29 ,values.mx, values.my, values.mz);
franklzw 0:3884637e48d1 30
franklzw 0:3884637e48d1 31 wait(0.5);
franklzw 0:3884637e48d1 32 }
franklzw 0:3884637e48d1 33 }
franklzw 0:3884637e48d1 34
franklzw 0:3884637e48d1 35 @endcode
franklzw 0:3884637e48d1 36
franklzw 0:3884637e48d1 37 */
franklzw 0:3884637e48d1 38
franklzw 0:3884637e48d1 39 #ifndef FXOS8700CQ_H
franklzw 0:3884637e48d1 40 #define FXOS8700CQ_H
franklzw 0:3884637e48d1 41
franklzw 0:3884637e48d1 42 #include "mbed.h"
franklzw 0:3884637e48d1 43
franklzw 0:3884637e48d1 44 // mbed API uses 8-bit addresses so need to left-shift 7-bit addresses by 1
franklzw 0:3884637e48d1 45 #define FXOS8700CQ_ADDR (0x1D << 1) // for K64F board
franklzw 0:3884637e48d1 46 // values from 13.2 datasheet
franklzw 0:3884637e48d1 47 #define FXOS8700CQ_STATUS 0x00
franklzw 0:3884637e48d1 48 #define FXOS8700CQ_WHO_AM_I 0x0D
franklzw 0:3884637e48d1 49 #define FXOS8700CQ_XYZ_DATA_CFG 0x0E
franklzw 0:3884637e48d1 50 #define FXOS8700CQ_CTRL_REG1 0x2A
franklzw 0:3884637e48d1 51 #define FXOS8700CQ_M_CTRL_REG1 0x5B
franklzw 0:3884637e48d1 52 #define FXOS8700CQ_M_CTRL_REG2 0x5C
franklzw 0:3884637e48d1 53 #define FXOS8700CQ_WHO_AM_I_VAL 0xC7
franklzw 0:3884637e48d1 54 #define FXOS8700CQ_READ_LEN 13
franklzw 0:3884637e48d1 55
franklzw 0:3884637e48d1 56 #define PI 3.14159265359f
franklzw 0:3884637e48d1 57 #define RAD2DEG 57.2957795131f
franklzw 0:3884637e48d1 58
franklzw 0:3884637e48d1 59 struct Data {
franklzw 0:3884637e48d1 60 float ax;
franklzw 0:3884637e48d1 61 float ay;
franklzw 0:3884637e48d1 62 float az;
franklzw 0:3884637e48d1 63 float mx;
franklzw 0:3884637e48d1 64 float my;
franklzw 0:3884637e48d1 65 float mz;
franklzw 0:3884637e48d1 66 };
franklzw 0:3884637e48d1 67
franklzw 0:3884637e48d1 68 class FXOS8700CQ
franklzw 0:3884637e48d1 69 {
franklzw 0:3884637e48d1 70
franklzw 0:3884637e48d1 71 public:
franklzw 0:3884637e48d1 72 FXOS8700CQ(PinName sda, PinName scl);
franklzw 0:3884637e48d1 73 ~FXOS8700CQ();
franklzw 0:3884637e48d1 74 void init();
franklzw 0:3884637e48d1 75 Data get_values();
franklzw 0:3884637e48d1 76 float get_pitch_angle();
franklzw 0:3884637e48d1 77 float get_roll_angle();
franklzw 0:3884637e48d1 78
franklzw 0:3884637e48d1 79 private:
franklzw 0:3884637e48d1 80 I2C* i2c;
franklzw 0:3884637e48d1 81
franklzw 0:3884637e48d1 82 void send_byte_to_reg(char byte,char reg);
franklzw 0:3884637e48d1 83 char read_byte_from_reg(char reg);
franklzw 0:3884637e48d1 84 void read_bytes_from_reg(char reg,int number_of_bytes,char bytes[]);
franklzw 0:3884637e48d1 85 };
franklzw 0:3884637e48d1 86
franklzw 0:3884637e48d1 87 #endif