FRDM-KL46Z board sLCD demo code
Fork of FRDM-KL46Z LCD rtc Demo by
Diff: main.cpp
- Revision:
- 11:f1721a70b14e
- Parent:
- 8:18e86eb228ca
--- a/main.cpp Thu Oct 02 13:15:04 2014 +0000 +++ b/main.cpp Thu Oct 02 14:12:56 2014 +0000 @@ -11,13 +11,8 @@ // include files // ----------------------------------------------------------------------------- #include "main.h" -#if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST) -#include "mbed.h" -#endif // RTC_CLOCK_TEST || LED_BLINK_TEST -#if (defined RTC_CLOCK_TEST) || (defined SLCD_BLINKING_TEST) +#ifdef SLCD_BLINKING_TEST #include "SLCD.h" -#endif // RTC_CLOCK_TEST || SLCD_BLINKING_TEST -#ifdef SLCD_BLINKING_TEST #include "MAG3110.h" #include "MMA8451Q.h" #include "TSISensor.h" @@ -59,19 +54,8 @@ // ----------------------------------------------------------------------------- // function prototype // ----------------------------------------------------------------------------- -#if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST) +#if (defined SLCD_BLINKING_TEST) void initializeSetting (void); -#endif // RTC_CLOCK_TEST || LED_BLINK_TEST || SLCD_BLINKING_TEST -#ifdef LED_BLINK_TEST -void ledBlink (float dutyfactor); -#endif // LED_BLINK_TEST -#ifdef RTC_CLOCK_TEST -void rtcClock (void); -void scrollMessage (void); -void switchinput1_INTIRQ (void); -void switchinput3_INTIRQ (void); -#endif // LED_BLINK_TEST -#ifdef SLCD_BLINKING_TEST void SLCD_blinking_msg_wait (char *slcd_msg1, char *slcd_msg2); #endif // SLCD_BLINKING_TEST @@ -82,31 +66,27 @@ // ----------------------------------------------------------------------------- // global variable // ----------------------------------------------------------------------------- -#if (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST) +#if (defined SLCD_BLINKING_TEST) PwmOut greenled_PO(LED1); PwmOut redled_PO(LED2); DigitalIn switchinput1_DI(SW1); DigitalIn switchinput3_DI(SW3); -float defaultdutyfactor = 0.0; -#endif // LED_BLINK_TEST || SLCD_BLINKING_TEST -#if (defined RTC_CLOCK_TEST) || (defined SLCD_BLINKING_TEST) DigitalOut greenled_DO(LED1); DigitalOut redled_DO(LED2); InterruptIn switchinput1_INT(SW1); InterruptIn switchinput3_INT(SW3); SLCD slcd; Timer scroll; -struct tm t; -int i, j, k, lastscroll, display_timer, minute, hour, colon, dp; -char message[60]; -char buffer[32]; -#endif // RTC_CLOCK_TEST || SLCD_BLINKING_TEST -#ifdef SLCD_BLINKING_TEST AnalogIn light(PTE22); // analog-light input TSISensor slider; // Capacitive Touch Slider MAG3110 mag(PTE25, PTE24); // Magnetometer MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); Serial usb_osda(USBTX, USBRX); // OpenSDA Terminal +struct tm t; +int i, j, k, lastscroll, display_timer, minute, hour, colon, dp; +char message[60]; +char buffer[32]; +float defaultdutyfactor = 0.0; #endif // SLCD_BLINKING_TEST // ----------------------------------------------------------------------------- @@ -119,33 +99,19 @@ // ----------------------------------------------------------------------------- int main (void) { -#if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST) +#if (defined SLCD_BLINKING_TEST) initializeSetting(); -#endif // RTC_CLOCK_TEST || LED_BLINK_TEST || SLCD_BLINKING_TEST +#endif // SLCD_BLINKING_TEST while (true) { -#ifdef RTC_CLOCK_TEST - rtcClock(); -#endif // RTC_CLOCK_TEST - -#ifdef LED_BLINK_TEST - if (!switchinput1_DI) { - ledBlink(0.5); - } else if (!switchinput3_DI) { - ledBlink(1.0); - } else { - ledBlink(2.0); - } -#endif // LED_BLINK_TEST - #ifdef SLCD_BLINKING_TEST // disable all SLCD DPs slcd.DP(0, false); slcd.DP(1, false); slcd.DP(2, false); // MAIN/Loop/Sensing and Storing data -----------------// sensorData.sw1State = switchinput1_DI; sensorData.sw3State = switchinput3_DI; - sensorData.accValX = acc.getAccX(); // accX[-1..1]->mouse (Lab1) - sensorData.accValY = acc.getAccY(); // accY[-1..1]->mouse (Lab1) + sensorData.accValX = acc.getAccX(); // accX[-1..1]->mouse(Lab1) + sensorData.accValY = acc.getAccY(); // accY[-1..1]->mouse(Lab1) sensorData.accValZ = acc.getAccZ(); // accZ[-1..1]->rLED sensorData.slider = slider.readPercentage() * 100; sensorData.light = light; @@ -156,17 +122,10 @@ // MAIN/Loop/Processing and Actions -------------------// // sensor -> terminal if (sensorData.sw1State != PRESS_OFF) { - greenled_DO = !greenled_DO; //blinking - usb_osda.printf(" \r\n"); - usb_osda.printf(" Switches. Light . Slider . Accelerometer . Magnetometer . Compass\r\n"); - usb_osda.printf(" SW1:SW2| LUX | TSI | accX : accY : accZ | magX: magY: maxZ | Heading\r\n"); - usb_osda.printf(" %d : %d | %1.3f | %2.0f %% | %+1.3f:%+1.3f:%+1.3f| %5d:%5d:%5d | Lab3 \r\n", - sensorData.sw1State, sensorData.sw3State, sensorData.light, sensorData.slider, - sensorData.accValX, sensorData.accValY, sensorData.accValZ, - (short)sensorData.magValX, (short)sensorData.magValY, (short)sensorData.magValZ); + greenled_DO = !greenled_DO; // blinking } greenled_DO = LED_OFF; - // acc: z-axis 1g min-blinking//acc: z-axis 1g min-blinking + // acc:z-axis 1g min-blinking // acc:z-axis 1g min-blinking redled_PO = abs(sensorData.accValZ); if (sensorData.slider) { @@ -184,41 +143,12 @@ //! @param [in] nil //! @retval nil // ----------------------------------------------------------------------------- -#if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST) +#if (defined SLCD_BLINKING_TEST) void initializeSetting (void) { -#if (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST) +#if (defined SLCD_BLINKING_TEST) switchinput1_DI.mode(PullUp); switchinput3_DI.mode(PullUp); -#endif // LED_BLINK_TEST || SLCD_BLINKING_TEST - -#ifdef RTC_CLOCK_TEST - time_t seconds = time(NULL); - - slcd.All_Segments(1); - wait(2); - slcd.All_Segments(0); - wait(1); - - greenled_DO = 1; - redled_DO = 1; - - sprintf(message, " rtc clock sw3 sets the hours sw1 sets the minutes"); - - // scrolling message - scroll.start(); - while (i < 58) { - while (i < 58) { - scrollMessage(); - } - } - wait(1); - - switchinput1_INT.rise(switchinput1_INTIRQ); - switchinput3_INT.rise(switchinput3_INTIRQ); -#endif // RTC_CLOCK_TEST - -#ifdef SLCD_BLINKING_TEST greenled_DO = LED_ON; // Green LED ON to indicate running/writing redled_PO = LED_OFF; // Red LED OFF redled_PO.period (150); @@ -236,141 +166,7 @@ greenled_DO = LED_OFF; // Inits are done #endif // SLCD_BLINKING_TEST } -#endif // RTC_CLOCK_TEST || LED_BLINK_TEST || SLCD_BLINKING_TEST - -// ----------------------------------------------------------------------------- -//! @brief LED Blink -//! @param [in] dutyfactor Duty Factor Integer -//! @retval nil -// ----------------------------------------------------------------------------- -#ifdef LED_BLINK_TEST -void ledBlink (float dutyfactor) -{ - redled_PO.write(defaultdutyfactor); - greenled_PO.write(dutyfactor - defaultdutyfactor); - defaultdutyfactor += 0.01; - if (defaultdutyfactor >= dutyfactor) defaultdutyfactor = 0.0; - wait(0.5); -} -#endif - -// ----------------------------------------------------------------------------- -//! @brief RTC Clock -//! @param [in] nil -//! @retval nil -// ----------------------------------------------------------------------------- -#ifdef RTC_CLOCK_TEST -void rtcClock (void) -{ - time_t seconds = time(NULL); - - if (display_timer > 6) { - // display Hours,Minutes for 2 seconds - strftime(buffer, 4, "%H%M", localtime(&seconds)); - slcd.Colon(1); - redled_DO = 0; - slcd.DP2(0); - greenled_DO = 1; - } else { - // display Minutes,Seconds for 8 seconds - strftime(buffer, 4, "%M%S", localtime(&seconds)); - slcd.Colon(0); - redled_DO = 1; - slcd.DP2(1); - greenled_DO = 0; - } - - slcd.printf(buffer); - wait(0.5); - slcd.DP2(0); - greenled_DO = 1; - display_timer++; - if (display_timer > 9) display_timer = 0; - wait(0.5); -} -#endif // RTC_CLOCK_TEST - -// ----------------------------------------------------------------------------- -//! @brief Scroll Message -//! @param [in] nil -//! @retval nil -// ----------------------------------------------------------------------------- -#ifdef RTC_CLOCK_TEST -void scrollMessage (void) -{ - if (scroll.read_ms() > lastscroll + 350) { - scroll.reset(); - if (i > 58) { - i = 0; - } - int j, k = i; - for (j = 0; j < 4; j++) { - if (message[k+j]) { - slcd.putc(message[k+j]); - } else { - slcd.putc(' '); - k--; - } - } - i++; - lastscroll = scroll.read_ms(); - } -} -#endif // RTC_CLOCK_TEST - -// ----------------------------------------------------------------------------- -//! @brief Set Minutes ISR -//! @param [in] nil -//! @retval nil -// ----------------------------------------------------------------------------- -#ifdef RTC_CLOCK_TEST -void switchinput1_INTIRQ (void) -{ - display_timer = 7; - time_t seconds = time(NULL); - char buffer[2]; - strftime(buffer, 2,"%H", localtime(&seconds)); - hour = atoi(buffer); // get Hour integer - strftime(buffer, 2,"%M", localtime(&seconds)); - minute = atoi(buffer); // get Minutes integer - minute++; - if (minute > 59) minute = 0; - t.tm_sec = 0; // Seconds reset to zero - t.tm_min = minute; - t.tm_hour = hour; - t.tm_mday = 1; - t.tm_mon = 2; - t.tm_year = 114; - set_time(mktime(&t)); -} -#endif // RTC_CLOCK_TEST - -// ----------------------------------------------------------------------------- -//! @brief Set Hours ISR -//! @param [in] nil -//! @retval nil -// ----------------------------------------------------------------------------- -#ifdef RTC_CLOCK_TEST -void switchinput3_INTIRQ (void) -{ - display_timer = 7; - time_t seconds = time(NULL); - char buffer[2]; - strftime(buffer, 2,"%H", localtime(&seconds)); - hour = atoi(buffer); // get Hour integer - strftime(buffer, 2,"%M", localtime(&seconds)); - minute = atoi(buffer); // get Minutes integer - hour++; - if (hour > 23) hour = 0; - t.tm_sec = 0; // Seconds reset to zero - t.tm_min = minute; - t.tm_hour = hour; - t.tm_mday = 1; - t.tm_mon = 2; - t.tm_year = 114; - set_time(mktime(&t)); -} -#endif //RTC_CLOCK_TEST +#endif // SLCD_BLINKING_TEST // ----------------------------------------------------------------------------- //! @brief SLCD Blinking Massage