static uint8_t MeasureCm(void) { uint16_t us, cm; uint8_t buf[8]; us = US_Measure_us(); UTIL1_Num16uToStrFormatted(buf, sizeof(buf), us, ' ', 5); //LCD1_GotoXY(1,5); //LCD1_WriteString((char*)buf); cm = US_usToCentimeters(us, 22); UTIL1_Num16uToStrFormatted(buf, sizeof(buf), cm, ' ', 5); //LCD1_GotoXY(2,5); //LCD1_WriteString((char*)buf); LEDR_Put(cm>0 && cm<10); /* red LED if object closer than 10 cm */ // LEDB_Put(cm>=10&&cm<=100); /* blue LED if object is in 10..100 cm range */ LEDG_Put(cm>=10); /* blue LED if object is in 10..100 cm range */ return cm; }
static portTASK_FUNCTION(MainTask, pvParameters) { unsigned char lcdBuf[sizeof("1234")]; uint16_t cntr; (void)pvParameters; /* parameter not used */ TRACE_Init(); MMA1_Init(); /* enable accelerometer, if not already enabled */ MAG1_Enable(); /* enable magnetometer */ SHELL_Init(); cntr = 0; for(;;) { UTIL1_Num16uToStrFormatted(lcdBuf, sizeof(lcdBuf), cntr, '0', 4); vfnLCD_Write_Msg(lcdBuf); cntr++; if (cntr>9999) { /* can only display 4 digits */ cntr = 0; } #if APP_USE_KEY_COMPONENT KEY1_ScanKeys(); /* using component in polling mode: poll keys, this will create events as needed. */ EVNT1_HandleEvent(); #else if (SW1_GetVal()==0) { /* button pressed */ FRTOS1_vTaskDelay(50/portTICK_RATE_MS); /* wait to debounce */ while (SW1_GetVal()==0) { /* still pressed? */ LED1_On(); } } if (SW3_GetVal()==0) { /* button pressed */ FRTOS1_vTaskDelay(50/portTICK_RATE_MS); /* wait to debounce */ while (SW3_GetVal()==0) { /* still pressed? */ LED2_On(); } } #endif LED1_Neg(); FRTOS1_vTaskDelay(50/portTICK_RATE_MS); } }