tiz

Dependencies:   TextLCD X_NUCLEO_IKS01A1 func mbed-src mbed

Fork of mas by esproj

Committer:
herenvarno
Date:
Sun Dec 13 16:36:36 2015 +0000
Revision:
3:4355890e55b4
Parent:
1:1df80fe13928
Child:
4:3fecfc9eeadd
****

Who changed what in which revision?

UserRevisionLine numberNew contents of line
herenvarno 0:99767aa66bce 1 /**
herenvarno 0:99767aa66bce 2 ******************************************************************************
herenvarno 0:99767aa66bce 3 * @file main.cpp
herenvarno 0:99767aa66bce 4 * @author AST / EST
herenvarno 0:99767aa66bce 5 * @version V0.0.1
herenvarno 0:99767aa66bce 6 * @date 14-August-2015
herenvarno 0:99767aa66bce 7 * @brief Simple Example application for using the X_NUCLEO_IKS01A1
herenvarno 0:99767aa66bce 8 * MEMS Inertial & Environmental Sensor Nucleo expansion board.
herenvarno 0:99767aa66bce 9 ******************************************************************************
herenvarno 0:99767aa66bce 10 * @attention
herenvarno 0:99767aa66bce 11 *
herenvarno 0:99767aa66bce 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
herenvarno 0:99767aa66bce 13 *
herenvarno 0:99767aa66bce 14 * Redistribution and use in source and binary forms, with or without modification,
herenvarno 0:99767aa66bce 15 * are permitted provided that the following conditions are met:
herenvarno 0:99767aa66bce 16 * 1. Redistributions of source code must retain the above copyright notice,
herenvarno 0:99767aa66bce 17 * this list of conditions and the following disclaimer.
herenvarno 0:99767aa66bce 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
herenvarno 0:99767aa66bce 19 * this list of conditions and the following disclaimer in the documentation
herenvarno 0:99767aa66bce 20 * and/or other materials provided with the distribution.
herenvarno 0:99767aa66bce 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
herenvarno 0:99767aa66bce 22 * may be used to endorse or promote products derived from this software
herenvarno 0:99767aa66bce 23 * without specific prior written permission.
herenvarno 0:99767aa66bce 24 *
herenvarno 0:99767aa66bce 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
herenvarno 0:99767aa66bce 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
herenvarno 0:99767aa66bce 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
herenvarno 0:99767aa66bce 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
herenvarno 0:99767aa66bce 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
herenvarno 0:99767aa66bce 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
herenvarno 0:99767aa66bce 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
herenvarno 0:99767aa66bce 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
herenvarno 0:99767aa66bce 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
herenvarno 0:99767aa66bce 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
herenvarno 0:99767aa66bce 35 *
herenvarno 0:99767aa66bce 36 ******************************************************************************
herenvarno 0:99767aa66bce 37 */
herenvarno 0:99767aa66bce 38
herenvarno 0:99767aa66bce 39 /* Includes */
herenvarno 3:4355890e55b4 40 #include "main.h"
herenvarno 0:99767aa66bce 41
herenvarno 0:99767aa66bce 42 /* Instantiate the expansion board */
herenvarno 0:99767aa66bce 43 static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(D14, D15);
herenvarno 0:99767aa66bce 44
herenvarno 0:99767aa66bce 45 /* Retrieve the composing elements of the expansion board */
herenvarno 0:99767aa66bce 46 static GyroSensor *gyroscope = mems_expansion_board->GetGyroscope();
herenvarno 0:99767aa66bce 47 static MotionSensor *accelerometer = mems_expansion_board->GetAccelerometer();
herenvarno 0:99767aa66bce 48 static MagneticSensor *magnetometer = mems_expansion_board->magnetometer;
herenvarno 0:99767aa66bce 49 static HumiditySensor *humidity_sensor = mems_expansion_board->ht_sensor;
herenvarno 0:99767aa66bce 50 static PressureSensor *pressure_sensor = mems_expansion_board->pt_sensor;
herenvarno 0:99767aa66bce 51 static TempSensor *temp_sensor1 = mems_expansion_board->ht_sensor;
herenvarno 0:99767aa66bce 52 static TempSensor *temp_sensor2 = mems_expansion_board->pt_sensor;
herenvarno 0:99767aa66bce 53
herenvarno 0:99767aa66bce 54 /* Helper function for printing floats & doubles */
herenvarno 0:99767aa66bce 55 static char *printDouble(char* str, double v, int decimalDigits=2)
herenvarno 0:99767aa66bce 56 {
herenvarno 0:99767aa66bce 57 int i = 1;
herenvarno 0:99767aa66bce 58 int intPart, fractPart;
herenvarno 0:99767aa66bce 59 int len;
herenvarno 0:99767aa66bce 60 char *ptr;
herenvarno 0:99767aa66bce 61
herenvarno 0:99767aa66bce 62 /* prepare decimal digits multiplicator */
herenvarno 0:99767aa66bce 63 for (;decimalDigits!=0; i*=10, decimalDigits--);
herenvarno 0:99767aa66bce 64
herenvarno 0:99767aa66bce 65 /* calculate integer & fractinal parts */
herenvarno 0:99767aa66bce 66 intPart = (int)v;
herenvarno 0:99767aa66bce 67 fractPart = (int)((v-(double)(int)v)*i);
herenvarno 0:99767aa66bce 68
herenvarno 0:99767aa66bce 69 /* fill in integer part */
herenvarno 0:99767aa66bce 70 sprintf(str, "%i.", intPart);
herenvarno 0:99767aa66bce 71
herenvarno 0:99767aa66bce 72 /* prepare fill in of fractional part */
herenvarno 0:99767aa66bce 73 len = strlen(str);
herenvarno 0:99767aa66bce 74 ptr = &str[len];
herenvarno 0:99767aa66bce 75
herenvarno 0:99767aa66bce 76 /* fill in leading fractional zeros */
herenvarno 0:99767aa66bce 77 for (i/=10;i>1; i/=10, ptr++) {
herenvarno 0:99767aa66bce 78 if(fractPart >= i) break;
herenvarno 0:99767aa66bce 79 *ptr = '0';
herenvarno 0:99767aa66bce 80 }
herenvarno 0:99767aa66bce 81
herenvarno 0:99767aa66bce 82 /* fill in (rest of) fractional part */
herenvarno 0:99767aa66bce 83 sprintf(ptr, "%i", fractPart);
herenvarno 0:99767aa66bce 84
herenvarno 0:99767aa66bce 85 return str;
herenvarno 0:99767aa66bce 86 }
herenvarno 0:99767aa66bce 87
herenvarno 0:99767aa66bce 88 DigitalOut myled(LED1);
herenvarno 0:99767aa66bce 89 DigitalIn mybutton(USER_BUTTON);
herenvarno 3:4355890e55b4 90 Display mydisplay;
herenvarno 3:4355890e55b4 91 RawData myrawdata;
herenvarno 0:99767aa66bce 92
herenvarno 3:4355890e55b4 93 uint8_t fbtn=BTN_RELEASED;
herenvarno 3:4355890e55b4 94 uint8_t fbtn_counter=0;
herenvarno 3:4355890e55b4 95 uint8_t mode=MODE_NORMAL;
herenvarno 3:4355890e55b4 96 uint8_t func=FUNC_DATETIME;
herenvarno 3:4355890e55b4 97 uint8_t config_index=0;
herenvarno 3:4355890e55b4 98
herenvarno 3:4355890e55b4 99
herenvarno 3:4355890e55b4 100 /**
herenvarno 3:4355890e55b4 101 * FUNC: wait_action
herenvarno 3:4355890e55b4 102 * DESC: wait for pressing button action, update the global flag for next polling cycle
herenvarno 3:4355890e55b4 103 */
herenvarno 3:4355890e55b4 104 void wait_action()
herenvarno 3:4355890e55b4 105 {
herenvarno 3:4355890e55b4 106 fbtn=BTN_RELEASED;
herenvarno 3:4355890e55b4 107 for(int i=0; i<5; i++)
herenvarno 3:4355890e55b4 108 {
herenvarno 3:4355890e55b4 109 if(fbtn==BTN_RELEASED)
herenvarno 3:4355890e55b4 110 {
herenvarno 3:4355890e55b4 111 if(mybutton==1 and fbtn==BTN_RELEASED)
herenvarno 3:4355890e55b4 112 {
herenvarno 3:4355890e55b4 113 if(fbtn_counter>0 and fbtn_counter<=10)
herenvarno 3:4355890e55b4 114 {
herenvarno 3:4355890e55b4 115 fbtn=BTN_PRESSED;
herenvarno 3:4355890e55b4 116 }
herenvarno 3:4355890e55b4 117 else if(fbtn_counter>10 and fbtn_counter<=30)
herenvarno 3:4355890e55b4 118 {
herenvarno 3:4355890e55b4 119 fbtn=BTN_PRESSED_LONG;
herenvarno 3:4355890e55b4 120 }
herenvarno 3:4355890e55b4 121 else if(fbtn_counter>30)
herenvarno 3:4355890e55b4 122 {
herenvarno 3:4355890e55b4 123 fbtn=BTN_PRESSED_VERY_LONG;
herenvarno 3:4355890e55b4 124 }
herenvarno 3:4355890e55b4 125 fbtn_counter=0;
herenvarno 3:4355890e55b4 126 }
herenvarno 3:4355890e55b4 127 else
herenvarno 3:4355890e55b4 128 {
herenvarno 3:4355890e55b4 129 fbtn_counter+=1;
herenvarno 3:4355890e55b4 130 }
herenvarno 3:4355890e55b4 131 }
herenvarno 3:4355890e55b4 132 wait(0.1);
herenvarno 3:4355890e55b4 133 }
herenvarno 3:4355890e55b4 134 }
herenvarno 3:4355890e55b4 135
herenvarno 1:1df80fe13928 136
herenvarno 0:99767aa66bce 137 /* Simple main function */
herenvarno 0:99767aa66bce 138 int main() {
herenvarno 0:99767aa66bce 139 myled=0;
herenvarno 0:99767aa66bce 140 uint8_t func=0;
herenvarno 0:99767aa66bce 141 uint8_t button_mem=0;
herenvarno 0:99767aa66bce 142
herenvarno 3:4355890e55b4 143
herenvarno 3:4355890e55b4 144
herenvarno 0:99767aa66bce 145 uint8_t id;
herenvarno 0:99767aa66bce 146 float value1, value2;
herenvarno 3:4355890e55b4 147 char buffer0[16];
herenvarno 0:99767aa66bce 148 char buffer1[32], buffer2[32];
herenvarno 0:99767aa66bce 149 int32_t axes[3];
herenvarno 0:99767aa66bce 150 int16_t axxx[3];
herenvarno 0:99767aa66bce 151
herenvarno 3:4355890e55b4 152 /*
herenvarno 0:99767aa66bce 153
herenvarno 3:4355890e55b4 154 PersistorStorage ps=PersistorStorage();
herenvarno 3:4355890e55b4 155 strcpy(ps.storage, "hello");
herenvarno 3:4355890e55b4 156 ps.writeStorageToFlash();
herenvarno 0:99767aa66bce 157
herenvarno 3:4355890e55b4 158 PersistorStorage ps1=PersistorStorage();
herenvarno 3:4355890e55b4 159 ps1.ReadStorageFromFlash();
herenvarno 3:4355890e55b4 160
herenvarno 3:4355890e55b4 161 printf("%s", ps1.storage);
herenvarno 3:4355890e55b4 162 */
herenvarno 3:4355890e55b4 163 /*HAL_Init();
herenvarno 3:4355890e55b4 164 __HAL_FLASH_CLEAR_FLAG( FLASH_FLAG_EOP | FLASH_FLAG_OPERR |FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGSERR );
herenvarno 3:4355890e55b4 165 printf("hello\n");
herenvarno 3:4355890e55b4 166 uint64_t a=124;
herenvarno 3:4355890e55b4 167 uint32_t pageerr = 100;
herenvarno 3:4355890e55b4 168 HAL_FLASH_Unlock();
herenvarno 3:4355890e55b4 169 FLASH_EraseInitTypeDef es;
herenvarno 3:4355890e55b4 170 es.TypeErase=FLASH_TYPEERASE_MASSERASE;
herenvarno 3:4355890e55b4 171 es.Banks=FLASH_BANK_2;
herenvarno 3:4355890e55b4 172 es.Page=0;
herenvarno 3:4355890e55b4 173 es.NbPages=1;
herenvarno 3:4355890e55b4 174
herenvarno 3:4355890e55b4 175 if( HAL_OK != (HAL_FLASHEx_Erase_IT( &es))) {
herenvarno 3:4355890e55b4 176 printf("ERROR %d\n", pageerr);
herenvarno 3:4355890e55b4 177 HAL_FLASH_Lock();
herenvarno 3:4355890e55b4 178 }
herenvarno 3:4355890e55b4 179 __HAL_FLASH_CLEAR_FLAG( FLASH_FLAG_EOP | FLASH_FLAG_OPERR |FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGSERR );
herenvarno 3:4355890e55b4 180 HAL_FLASH_Unlock();
herenvarno 3:4355890e55b4 181 printf("%d\n", HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, 0x08080000, a));
herenvarno 3:4355890e55b4 182 printf("hello\n");
herenvarno 3:4355890e55b4 183 printf("%d\n", HAL_FLASH_GetError());
herenvarno 3:4355890e55b4 184 HAL_FLASH_Lock();
herenvarno 3:4355890e55b4 185
herenvarno 3:4355890e55b4 186 static const int StorageSize = 64;
herenvarno 3:4355890e55b4 187 static unsigned int storage[ StorageSize ] __attribute__((aligned(32)));
herenvarno 3:4355890e55b4 188 HAL_FLASH_Unlock();
herenvarno 3:4355890e55b4 189 memcpy( (uint32_t*)storage, (uint32_t*)(0x08080000), StorageSize);
herenvarno 3:4355890e55b4 190 HAL_FLASH_Lock();
herenvarno 3:4355890e55b4 191
herenvarno 3:4355890e55b4 192 for(int i=0; i<StorageSize; i++)
herenvarno 3:4355890e55b4 193 {
herenvarno 3:4355890e55b4 194 printf("%4x ",storage[i]);
herenvarno 3:4355890e55b4 195 }
herenvarno 3:4355890e55b4 196 printf("\n");
herenvarno 3:4355890e55b4 197 */
herenvarno 3:4355890e55b4 198
herenvarno 3:4355890e55b4 199
herenvarno 3:4355890e55b4 200
herenvarno 3:4355890e55b4 201
herenvarno 3:4355890e55b4 202
herenvarno 3:4355890e55b4 203
herenvarno 3:4355890e55b4 204
herenvarno 0:99767aa66bce 205
herenvarno 3:4355890e55b4 206 /*
herenvarno 0:99767aa66bce 207 printf("\r\n--- Starting new run ---\r\n");
herenvarno 0:99767aa66bce 208
herenvarno 0:99767aa66bce 209 humidity_sensor->ReadID(&id);
herenvarno 0:99767aa66bce 210 printf("HTS221 humidity & temperature = 0x%X\r\n", id);
herenvarno 0:99767aa66bce 211 pressure_sensor->ReadID(&id);
herenvarno 0:99767aa66bce 212 printf("LPS25H pressure & temperature = 0x%X\r\n", id);
herenvarno 0:99767aa66bce 213 magnetometer->ReadID(&id);
herenvarno 0:99767aa66bce 214 printf("LIS3MDL magnetometer = 0x%X\r\n", id);
herenvarno 0:99767aa66bce 215 gyroscope->ReadID(&id);
herenvarno 0:99767aa66bce 216 printf("LSM6DS0 accelerometer & gyroscope = 0x%X\r\n", id);
herenvarno 3:4355890e55b4 217 */
herenvarno 3:4355890e55b4 218
herenvarno 3:4355890e55b4 219 while(1)
herenvarno 3:4355890e55b4 220 {
herenvarno 3:4355890e55b4 221 // MEASURE AND DISPLAY
herenvarno 3:4355890e55b4 222 if(mode==MODE_NORMAL)
herenvarno 3:4355890e55b4 223 {
herenvarno 3:4355890e55b4 224 myled=0;
herenvarno 3:4355890e55b4 225 if(func==FUNC_DATETIME)
herenvarno 3:4355890e55b4 226 {
herenvarno 3:4355890e55b4 227 myrawdata.__time=time(NULL);
herenvarno 3:4355890e55b4 228 myrawdata.str_date(buffer0);
herenvarno 3:4355890e55b4 229 myrawdata.str_time(buffer1);
herenvarno 3:4355890e55b4 230 }
herenvarno 3:4355890e55b4 231 else if(func==FUNC_TEMPHUMI)
herenvarno 3:4355890e55b4 232 {
herenvarno 3:4355890e55b4 233 temp_sensor1->GetTemperature(&myrawdata.__temp);
herenvarno 3:4355890e55b4 234 humidity_sensor->GetHumidity(&myrawdata.__humi);
herenvarno 3:4355890e55b4 235 myrawdata.str_temperature(buffer0);
herenvarno 3:4355890e55b4 236 myrawdata.str_humidity(buffer1);
herenvarno 3:4355890e55b4 237 }
herenvarno 3:4355890e55b4 238 else if(func==FUNC_PRESSURE)
herenvarno 3:4355890e55b4 239 {
herenvarno 3:4355890e55b4 240 pressure_sensor->GetPressure(&myrawdata.__pressure);
herenvarno 3:4355890e55b4 241 myrawdata.str_pressure(buffer0);
herenvarno 3:4355890e55b4 242 myrawdata.str_altitude(buffer1);
herenvarno 3:4355890e55b4 243 }
herenvarno 3:4355890e55b4 244 else if(func==FUNC_CPASSDIR)
herenvarno 3:4355890e55b4 245 {
herenvarno 3:4355890e55b4 246 magnetometer->Get_M_Axes(myrawdata.__mag);
herenvarno 3:4355890e55b4 247 accelerometer->Get_X_Axes(myrawdata.__acc);
herenvarno 3:4355890e55b4 248 gyroscope->Get_G_Axes(myrawdata.__gyr);
herenvarno 3:4355890e55b4 249 myrawdata.str_magnetic(buffer0);
herenvarno 3:4355890e55b4 250 myrawdata.str_direction(buffer1);
herenvarno 3:4355890e55b4 251 }
herenvarno 3:4355890e55b4 252 mydisplay.show(buffer0, buffer1);
herenvarno 3:4355890e55b4 253 }
herenvarno 3:4355890e55b4 254 else
herenvarno 3:4355890e55b4 255 {
herenvarno 3:4355890e55b4 256 myled=1;
herenvarno 3:4355890e55b4 257 if(func==FUNC_DATETIME)
herenvarno 3:4355890e55b4 258 {
herenvarno 3:4355890e55b4 259 myrawdata.str_date(buffer0);
herenvarno 3:4355890e55b4 260 myrawdata.str_time(buffer1);
herenvarno 3:4355890e55b4 261 }
herenvarno 3:4355890e55b4 262 mydisplay.show(buffer0, buffer1);
herenvarno 3:4355890e55b4 263 }
herenvarno 3:4355890e55b4 264
herenvarno 3:4355890e55b4 265 // NEXT STATE
herenvarno 3:4355890e55b4 266 if(mode==MODE_NORMAL)
herenvarno 3:4355890e55b4 267 {
herenvarno 3:4355890e55b4 268 if(fbtn==BTN_PRESSED_LONG || fbtn==BTN_PRESSED_VERY_LONG)
herenvarno 3:4355890e55b4 269 {
herenvarno 3:4355890e55b4 270 mode=MODE_CONFIG;
herenvarno 3:4355890e55b4 271 }
herenvarno 3:4355890e55b4 272 else if(fbtn==BTN_PRESSED)
herenvarno 3:4355890e55b4 273 {
herenvarno 3:4355890e55b4 274 func=func+1;
herenvarno 3:4355890e55b4 275 if(func>FUNC_CPASSDIR)
herenvarno 3:4355890e55b4 276 func=FUNC_DATETIME;
herenvarno 3:4355890e55b4 277 }
herenvarno 3:4355890e55b4 278 }
herenvarno 3:4355890e55b4 279 else
herenvarno 3:4355890e55b4 280 {
herenvarno 3:4355890e55b4 281 if(fbtn==BTN_PRESSED_VERY_LONG)
herenvarno 3:4355890e55b4 282 {
herenvarno 3:4355890e55b4 283 config_index=0;
herenvarno 3:4355890e55b4 284 mode=MODE_NORMAL;
herenvarno 3:4355890e55b4 285 }
herenvarno 3:4355890e55b4 286 else if(fbtn==BTN_PRESSED_LONG)
herenvarno 3:4355890e55b4 287 {
herenvarno 3:4355890e55b4 288 config_index+=1;
herenvarno 3:4355890e55b4 289 }
herenvarno 3:4355890e55b4 290 else if(fbtn==BTN_PRESSED)
herenvarno 3:4355890e55b4 291 {
herenvarno 3:4355890e55b4 292 if(func==FUNC_DATETIME)
herenvarno 3:4355890e55b4 293 {
herenvarno 3:4355890e55b4 294 if(config_index==0)
herenvarno 3:4355890e55b4 295 {
herenvarno 3:4355890e55b4 296 myrawdata.add_year_10();
herenvarno 3:4355890e55b4 297 }
herenvarno 3:4355890e55b4 298 else if(config_index==1)
herenvarno 3:4355890e55b4 299 {
herenvarno 3:4355890e55b4 300 myrawdata.add_year_1();
herenvarno 3:4355890e55b4 301 }
herenvarno 3:4355890e55b4 302 else if(config_index==2)
herenvarno 3:4355890e55b4 303 {
herenvarno 3:4355890e55b4 304 myrawdata.add_month();
herenvarno 3:4355890e55b4 305 }
herenvarno 3:4355890e55b4 306 else if(config_index==3)
herenvarno 3:4355890e55b4 307 {
herenvarno 3:4355890e55b4 308 myrawdata.add_day();
herenvarno 3:4355890e55b4 309 }
herenvarno 3:4355890e55b4 310 }
herenvarno 3:4355890e55b4 311 }
herenvarno 3:4355890e55b4 312 }
herenvarno 3:4355890e55b4 313
herenvarno 3:4355890e55b4 314 wait_action();
herenvarno 3:4355890e55b4 315 }
herenvarno 3:4355890e55b4 316
herenvarno 3:4355890e55b4 317 raise_error(ERROR_CONFIG);
herenvarno 3:4355890e55b4 318
herenvarno 1:1df80fe13928 319 printf("START CALIBRATION\n");
herenvarno 1:1df80fe13928 320 int32_t m_max[3]={0};
herenvarno 1:1df80fe13928 321 int32_t m_min[3]={0};
herenvarno 1:1df80fe13928 322 for (int i=0; i<1000; i++)
herenvarno 1:1df80fe13928 323 {
herenvarno 1:1df80fe13928 324
herenvarno 1:1df80fe13928 325 magnetometer->Get_M_Axes(axes);
herenvarno 1:1df80fe13928 326 if(i==0)
herenvarno 1:1df80fe13928 327 {
herenvarno 1:1df80fe13928 328 for(int j=0; j<3; j++)
herenvarno 1:1df80fe13928 329 {
herenvarno 1:1df80fe13928 330 m_max[j]=axes[j];
herenvarno 1:1df80fe13928 331 m_min[j]=axes[j];
herenvarno 1:1df80fe13928 332 }
herenvarno 1:1df80fe13928 333 }
herenvarno 1:1df80fe13928 334 else
herenvarno 1:1df80fe13928 335 {
herenvarno 1:1df80fe13928 336 for(int j=0; j<3; j++)
herenvarno 1:1df80fe13928 337 {
herenvarno 1:1df80fe13928 338 if(axes[j]>m_max[j]) m_max[j]=axes[j];
herenvarno 1:1df80fe13928 339 if(axes[j]<m_min[j]) m_min[j]=axes[j];
herenvarno 1:1df80fe13928 340 }
herenvarno 1:1df80fe13928 341 }
herenvarno 1:1df80fe13928 342 wait(0.05);
herenvarno 1:1df80fe13928 343 }
herenvarno 1:1df80fe13928 344
herenvarno 1:1df80fe13928 345 printf("MAX : %d, %d, %d\n", m_max[0], m_max[1], m_max[2]);
herenvarno 1:1df80fe13928 346 printf("MIN : %d, %d, %d\n", m_min[0], m_min[1], m_min[2]);
herenvarno 1:1df80fe13928 347
herenvarno 0:99767aa66bce 348
herenvarno 0:99767aa66bce 349 while(1) {
herenvarno 0:99767aa66bce 350 if((mybutton!=0) && (button_mem==0))
herenvarno 0:99767aa66bce 351 {
herenvarno 0:99767aa66bce 352 func++;
herenvarno 0:99767aa66bce 353 if(func>=6)
herenvarno 0:99767aa66bce 354 func=0;
herenvarno 0:99767aa66bce 355 }
herenvarno 0:99767aa66bce 356 button_mem=mybutton;
herenvarno 0:99767aa66bce 357 printf("func: %d\r\n", func);
herenvarno 0:99767aa66bce 358 printf("\r\n");
herenvarno 0:99767aa66bce 359
herenvarno 0:99767aa66bce 360 if(func==0)
herenvarno 0:99767aa66bce 361 {
herenvarno 0:99767aa66bce 362 time_t seconds = time(NULL);
herenvarno 0:99767aa66bce 363 printf("Time as a basic string = %s\r\n", ctime(&seconds));
herenvarno 0:99767aa66bce 364 }
herenvarno 0:99767aa66bce 365 else if(func==1)
herenvarno 0:99767aa66bce 366 {
herenvarno 0:99767aa66bce 367 temp_sensor1->GetTemperature(&value1);
herenvarno 0:99767aa66bce 368 humidity_sensor->GetHumidity(&value2);
herenvarno 0:99767aa66bce 369
herenvarno 0:99767aa66bce 370 if(value2 > 70)
herenvarno 0:99767aa66bce 371 myled=1;
herenvarno 0:99767aa66bce 372 else
herenvarno 0:99767aa66bce 373 myled=0;
herenvarno 0:99767aa66bce 374 printf("HTS221: [temp] %7s C, [hum] %s%%\r\n", printDouble(buffer1, value1), printDouble(buffer2, value2));
herenvarno 0:99767aa66bce 375 }
herenvarno 0:99767aa66bce 376 else if(func==2)
herenvarno 0:99767aa66bce 377 {
herenvarno 0:99767aa66bce 378 temp_sensor2->GetFahrenheit(&value1);
herenvarno 0:99767aa66bce 379 pressure_sensor->GetPressure(&value2);
herenvarno 0:99767aa66bce 380 printf("LPS25H: [temp] %7s F, [press] %smbar\r\n", printDouble(buffer1, value1), printDouble(buffer2, value2));
herenvarno 0:99767aa66bce 381 printf("Altitude: %s m\r\n", printDouble(buffer1, 44300-44300*pow((value2/1013.25), 0.00019)));
herenvarno 0:99767aa66bce 382 }
herenvarno 0:99767aa66bce 383 else if(func==3)
herenvarno 0:99767aa66bce 384 {
herenvarno 0:99767aa66bce 385 magnetometer->Get_M_Axes(axes);
herenvarno 1:1df80fe13928 386 axxx[0]=axes[0]-((m_max[0]+m_min[0])/2);
herenvarno 1:1df80fe13928 387 axxx[1]=axes[1]-((m_max[1]+m_min[1])/2);
herenvarno 1:1df80fe13928 388 axxx[2]=axes[2]-((m_max[2]+m_min[2])/2);
herenvarno 0:99767aa66bce 389 printf("LIS3MDL [mag/mgauss]: %6ld, %6ld, %6ld\r\n", axxx[0], axxx[1], axxx[2]);
herenvarno 1:1df80fe13928 390 printf("DIR: %s deg\r\n", printDouble(buffer1, 90-atan(float(axxx[0])/float(axxx[1])/3.1416)));
herenvarno 0:99767aa66bce 391 }
herenvarno 0:99767aa66bce 392 else if(func==4)
herenvarno 0:99767aa66bce 393 {
herenvarno 0:99767aa66bce 394 accelerometer->Get_X_Axes(axes);
herenvarno 0:99767aa66bce 395 printf("LSM6DS0 [acc/mg]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
herenvarno 0:99767aa66bce 396 }
herenvarno 0:99767aa66bce 397 else if(func==5)
herenvarno 0:99767aa66bce 398 {
herenvarno 0:99767aa66bce 399 gyroscope ->Get_G_Axes(axes);
herenvarno 0:99767aa66bce 400 printf("LSM6DS0 [gyro/mdps]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
herenvarno 0:99767aa66bce 401 }
herenvarno 0:99767aa66bce 402 wait(1.5);
herenvarno 0:99767aa66bce 403 }
herenvarno 0:99767aa66bce 404 }