KL46Z-lab3_full

Dependencies:   SLCD- mbed KL46Z-USBHost TSI MMA8451Q MAG3110 FATFileSystem

Committer:
Lokkus
Date:
Thu Feb 21 07:42:01 2019 +0000
Revision:
0:147f106a5503
KL46Z-lab3_full

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Lokkus 0:147f106a5503 1 //USB Academy - Lab3 rev 00
Lokkus 0:147f106a5503 2 //_____________________________________________________________//
Lokkus 0:147f106a5503 3 //======== INCLUDES ===========================================//
Lokkus 0:147f106a5503 4 //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯//
Lokkus 0:147f106a5503 5 #include "mbed.h"
Lokkus 0:147f106a5503 6 #include "MMA8451Q.h"
Lokkus 0:147f106a5503 7 #include "MAG3110.h"
Lokkus 0:147f106a5503 8 #include "SLCD.h"
Lokkus 0:147f106a5503 9 #include "TSISensor.h"
Lokkus 0:147f106a5503 10
Lokkus 0:147f106a5503 11 //#include "USBMouse.h" //Lab1-Hid
Lokkus 0:147f106a5503 12 //#include "USBSerial.h" //Lab2-cdc
Lokkus 0:147f106a5503 13 //#include "USBHostMSD.h" //Lab3-MSd
Lokkus 0:147f106a5503 14
Lokkus 0:147f106a5503 15
Lokkus 0:147f106a5503 16
Lokkus 0:147f106a5503 17
Lokkus 0:147f106a5503 18
Lokkus 0:147f106a5503 19 //_____________________________________________________________//
Lokkus 0:147f106a5503 20 //======== DEFINES & VARIABLES ================================//
Lokkus 0:147f106a5503 21 //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯//
Lokkus 0:147f106a5503 22 #define LED_ON 0 //outON, pwmON
Lokkus 0:147f106a5503 23 #define LED_OFF 1 //outOFF,pwmOFF
Lokkus 0:147f106a5503 24 DigitalOut gLED(LED_GREEN); //PTD5
Lokkus 0:147f106a5503 25
Lokkus 0:147f106a5503 26 #define rLEDperiod 150 //[ms]
Lokkus 0:147f106a5503 27 PwmOut rLED(LED_RED); //PTE29
Lokkus 0:147f106a5503 28
Lokkus 0:147f106a5503 29 #define PRESS_ON 0
Lokkus 0:147f106a5503 30 #define PRESS_OFF 1
Lokkus 0:147f106a5503 31 DigitalIn sw1(PTC3); //if(sw1) Release else Press
Lokkus 0:147f106a5503 32 DigitalIn sw3(PTC12); //while(sw3); wait for Press
Lokkus 0:147f106a5503 33
Lokkus 0:147f106a5503 34 #define MMA8451_I2C_ADDRESS (0x1d<<1)
Lokkus 0:147f106a5503 35 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
Lokkus 0:147f106a5503 36
Lokkus 0:147f106a5503 37 SLCD slcd; //[88:88][8.8.8.8] SegmentLCD
Lokkus 0:147f106a5503 38
Lokkus 0:147f106a5503 39 AnalogIn light(PTE22); //analog-light input
Lokkus 0:147f106a5503 40
Lokkus 0:147f106a5503 41 TSISensor slider; //Capacitive Touch Slider
Lokkus 0:147f106a5503 42
Lokkus 0:147f106a5503 43 MAG3110 mag(PTE25, PTE24); //Magnetometer
Lokkus 0:147f106a5503 44
Lokkus 0:147f106a5503 45 Serial usb_osda(USBTX, USBRX); //OpenSDA Terminal
Lokkus 0:147f106a5503 46 #define pf usb_osda //printf out -> osda (lab1,2,3)
Lokkus 0:147f106a5503 47
Lokkus 0:147f106a5503 48 struct KL46_SENSOR_DATA {
Lokkus 0:147f106a5503 49 int sw1State;
Lokkus 0:147f106a5503 50 int sw3State;
Lokkus 0:147f106a5503 51 float accValX;
Lokkus 0:147f106a5503 52 float accValY;
Lokkus 0:147f106a5503 53 float accValZ;
Lokkus 0:147f106a5503 54
Lokkus 0:147f106a5503 55 float slider;
Lokkus 0:147f106a5503 56 float light;
Lokkus 0:147f106a5503 57 int magValX;
Lokkus 0:147f106a5503 58 int magValY;
Lokkus 0:147f106a5503 59 int magValZ;
Lokkus 0:147f106a5503 60
Lokkus 0:147f106a5503 61 float magHeading;
Lokkus 0:147f106a5503 62 } sensorData;
Lokkus 0:147f106a5503 63 #define sD sensorData
Lokkus 0:147f106a5503 64
Lokkus 0:147f106a5503 65 void SLCD_blinking_msg_wait(char *slcd_msg1, char *slcd_msg2);
Lokkus 0:147f106a5503 66
Lokkus 0:147f106a5503 67
Lokkus 0:147f106a5503 68
Lokkus 0:147f106a5503 69
Lokkus 0:147f106a5503 70 //_____________________________________________________________//
Lokkus 0:147f106a5503 71 //======== MAIN() =============================================//
Lokkus 0:147f106a5503 72 //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯//
Lokkus 0:147f106a5503 73 int main(void)
Lokkus 0:147f106a5503 74 {
Lokkus 0:147f106a5503 75 //---- MAIN/Inits -----------------------------------------//
Lokkus 0:147f106a5503 76
Lokkus 0:147f106a5503 77 sw1.mode(PullUp);
Lokkus 0:147f106a5503 78 sw3.mode(PullUp);
Lokkus 0:147f106a5503 79
Lokkus 0:147f106a5503 80 gLED = LED_ON; //Green LED ON to indicate running/writing
Lokkus 0:147f106a5503 81 rLED = LED_OFF; //Red LED OFF
Lokkus 0:147f106a5503 82 rLED.period(rLEDperiod); //Red LED (rLED) tsi/accZ/mag
Lokkus 0:147f106a5503 83
Lokkus 0:147f106a5503 84 //---- MAIN/Inits (Wait4SW1) -> Start! --------------------//
Lokkus 0:147f106a5503 85
Lokkus 0:147f106a5503 86 //wait for Press SW1 - e.g. for HID/CDC/MSD Windows install.
Lokkus 0:147f106a5503 87 //SLCD_blinking_msg_wait(" o","Helo"); //Helo (no usb);
Lokkus 0:147f106a5503 88 SLCD_blinking_msg_wait(" o","MSd ");//Lab1=Hid;2=cdc;3=Msd
Lokkus 0:147f106a5503 89
Lokkus 0:147f106a5503 90 //---- MAIN/Inits Interface -------------------------------//
Lokkus 0:147f106a5503 91
Lokkus 0:147f106a5503 92 usb_osda.baud(115200);
Lokkus 0:147f106a5503 93 usb_osda.printf("\n___________________________________\r\n");
Lokkus 0:147f106a5503 94 usb_osda.printf("\nFRDM-KL46Z_Lab\r\n \r\n I am a CDC serial port @OpenSDA/mUSB. Baud=115200 \r\n");
Lokkus 0:147f106a5503 95
Lokkus 0:147f106a5503 96 //---- MAIN/Inits Labs ------------------------------------//
Lokkus 0:147f106a5503 97
Lokkus 0:147f106a5503 98 //---- MAIN/Inits (Wait4SW1) -> Calib. eCompass -----------//
Lokkus 0:147f106a5503 99
Lokkus 0:147f106a5503 100 //---- MAIN/Inits Done! (Wait4SW1) -> MANI/Loop -----------//
Lokkus 0:147f106a5503 101
Lokkus 0:147f106a5503 102 gLED = LED_OFF; //Inits are done
Lokkus 0:147f106a5503 103
Lokkus 0:147f106a5503 104 //---- MAIN/Loop -----------------------------------------//
Lokkus 0:147f106a5503 105 while (1) {
Lokkus 0:147f106a5503 106 //disable all SLCD DPs
Lokkus 0:147f106a5503 107 slcd.DP(0, false); slcd.DP(1, false); slcd.DP(2, false);
Lokkus 0:147f106a5503 108
Lokkus 0:147f106a5503 109 // MAIN/Loop/Sensing and Storing data -----------------//
Lokkus 0:147f106a5503 110 sD.sw1State = sw1; sD.sw3State = sw3;
Lokkus 0:147f106a5503 111 sD.accValX = acc.getAccX(); //accX[-1..1]->mouse (Lab1)
Lokkus 0:147f106a5503 112 sD.accValY = acc.getAccY(); //accY[-1..1]->mouse (Lab1)
Lokkus 0:147f106a5503 113 sD.accValZ = acc.getAccZ(); //accZ[-1..1]->rLED
Lokkus 0:147f106a5503 114
Lokkus 0:147f106a5503 115 sD.slider = slider.readPercentage() * 100;
Lokkus 0:147f106a5503 116 sD.light = light;
Lokkus 0:147f106a5503 117 sD.magValX = mag.readVal(MAG_OUT_X_MSB);
Lokkus 0:147f106a5503 118 sD.magValY = mag.readVal(MAG_OUT_Y_MSB);
Lokkus 0:147f106a5503 119 sD.magValZ = mag.readVal(MAG_OUT_Z_MSB);
Lokkus 0:147f106a5503 120
Lokkus 0:147f106a5503 121 // MAIN/Loop/Processing and Actions -------------------//
Lokkus 0:147f106a5503 122
Lokkus 0:147f106a5503 123 //acc: z-axis 1g min-blinking//acc: z-axis 1g min-blinking
Lokkus 0:147f106a5503 124 rLED = abs(sD.accValZ);
Lokkus 0:147f106a5503 125
Lokkus 0:147f106a5503 126 wait(0.05); //wait 50ms
Lokkus 0:147f106a5503 127 }
Lokkus 0:147f106a5503 128 }
Lokkus 0:147f106a5503 129
Lokkus 0:147f106a5503 130
Lokkus 0:147f106a5503 131
Lokkus 0:147f106a5503 132
Lokkus 0:147f106a5503 133
Lokkus 0:147f106a5503 134 //_____________________________________________________________//
Lokkus 0:147f106a5503 135 //======== FUNC() =============================================//
Lokkus 0:147f106a5503 136 //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯//
Lokkus 0:147f106a5503 137
Lokkus 0:147f106a5503 138 //Lab2add
Lokkus 0:147f106a5503 139 void SLCD_blinking_msg_wait(char *slcd_msg1, char *slcd_msg2)
Lokkus 0:147f106a5503 140 {
Lokkus 0:147f106a5503 141 char wait4sw1=0; //~500ms blinking
Lokkus 0:147f106a5503 142
Lokkus 0:147f106a5503 143 //wait for Press SW1 - to start mag calibration
Lokkus 0:147f106a5503 144 while(sw1 == PRESS_ON); //wait for release
Lokkus 0:147f106a5503 145 while(sw1 == PRESS_OFF) { //wait for press
Lokkus 0:147f106a5503 146 if (++wait4sw1 < 150) //300ms
Lokkus 0:147f106a5503 147 slcd.printf(slcd_msg1);
Lokkus 0:147f106a5503 148 else //200ms
Lokkus 0:147f106a5503 149 slcd.printf(slcd_msg2);
Lokkus 0:147f106a5503 150 wait(0.002);
Lokkus 0:147f106a5503 151 }
Lokkus 0:147f106a5503 152 while(sw1 == PRESS_ON); //wait for release
Lokkus 0:147f106a5503 153 }