blablabla

Dependencies:   MAG3110 MMA8451Q SLCD- TSI USBDevice mbed

Committer:
Osator
Date:
Wed Apr 16 12:20:00 2014 +0000
Revision:
0:339b7abfa147
blablabla

Who changed what in which revision?

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