You will be able to control a yellow ball through a level like a labyrinth
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG MMA7660FC TS_DISCO_F746NG mbed
main.cpp
- Committer:
- IUT_Nicolas_C
- Date:
- 2018-05-29
- Revision:
- 0:9167afeead2e
- Child:
- 1:f41e3d62e7b2
File content as of revision 0:9167afeead2e:
#include "mbed.h" #include "LCD_DISCO_F746NG.h" #include <MMA7660FC.h> #define SLAVE_ADRESS 0x4c //---PIN SETUP MMA7660FC sensor(PB_9,PB_8,SLAVE_ADRESS<<1); LCD_DISCO_F746NG lcd; DigitalOut myled(LED1); //---DECLARATION void initLCD(); void displayAcc(float,float,float); void displayPos(int,int,int); void displayOrientation(const char*); void drawRect(int,int,int,int); void drawUi(); void drawUiButtons(); void drawUiStructure(); //---INITIALISATION void initLCD() { lcd.Clear(LCD_COLOR_WHITE); lcd.SetBackColor(LCD_COLOR_BLUE); lcd.SetTextColor(LCD_COLOR_BLACK); wait(0.3); } void displayAcc(float x, float y, float z) { char string[50]; sprintf(string,"AX = %3.3f",x); lcd.DisplayStringAt(0, LINE(5), (uint8_t *)string, CENTER_MODE); sprintf(string,"AY = %3.3f",y); lcd.DisplayStringAt(0, LINE(6), (uint8_t *)string, CENTER_MODE); sprintf(string,"AZ = %3.3f",z); lcd.DisplayStringAt(0, LINE(7), (uint8_t *)string, CENTER_MODE); } void displayOrientation(const char *o) { char string[50]; sprintf(string,"O = %s",o); lcd.DisplayStringAt(0, LINE(4), (uint8_t *)string, CENTER_MODE); } void displayPos(int x, int y, int z) { char string[50]; sprintf(string,"X = %03d",x); lcd.DisplayStringAt(0, LINE(1), (uint8_t *)string, CENTER_MODE); sprintf(string,"Y = %03d",y); lcd.DisplayStringAt(0, LINE(2), (uint8_t *)string, CENTER_MODE); sprintf(string,"Z = %03d",z); lcd.DisplayStringAt(0, LINE(3), (uint8_t *)string, CENTER_MODE); } void drawRect(int x1, int y1, int x2, int y2) { lcd.DrawRect(x1, y1, x2-x1, y2-y1); } void drawUi() { drawUiStructure(); drawUiButtons(); } void drawUiButtons() { lcd.SetTextColor(LCD_COLOR_BLUE); drawRect(415, 15,465, 65); drawRect(415,207,465,257); } void drawUiStructure() { lcd.SetTextColor(LCD_COLOR_BLACK); drawRect( 10, 10,400,262); drawRect(410, 10,470,262); } //---MAIN int main() { int data[3] = {0,0,0}; float ax=0,ay=0,az=0; const char *orientation; sensor.init(); initLCD(); drawUi(); sensor.write_reg(0x07,0); sensor.write_reg(0x04,0x000); sensor.write_reg(0x07,1); while(1) { //Getting Values data[0]=sensor.read_x(); data[1]=sensor.read_y(); data[2]=sensor.read_z(); sensor.read_Tilt(&ax,&ay,&az); orientation=sensor.read_Orientation(); //Printing Values lcd.SetTextColor(LCD_COLOR_BLACK); displayPos(data[0],data[1],data[2]); displayAcc(ax,ay,az); displayOrientation(orientation); } }