FRDM-KL46Z board sLCD demo code

Dependencies:   SLCD mbed

Fork of FRDM-KL46Z LCD rtc Demo by Paul Staron

Committer:
salemtang
Date:
Wed Oct 01 13:11:15 2014 +0000
Revision:
8:18e86eb228ca
Parent:
7:33a8bfcbe3be
Child:
11:f1721a70b14e
20141001_2211 modified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
salemtang 6:10b73ebdba3d 1 /**
salemtang 6:10b73ebdba3d 2 * @file main.cpp
salemtang 6:10b73ebdba3d 3 * @brief Abstract
salemtang 8:18e86eb228ca 4 * @copyright (c) Salem TANG
salemtang 6:10b73ebdba3d 5 */
salemtang 6:10b73ebdba3d 6 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 7 // note
salemtang 6:10b73ebdba3d 8 // -----------------------------------------------------------------------------
salemtang 4:15da67d64f85 9
salemtang 6:10b73ebdba3d 10 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 11 // include files
salemtang 6:10b73ebdba3d 12 // -----------------------------------------------------------------------------
salemtang 7:33a8bfcbe3be 13 #include "main.h"
salemtang 4:15da67d64f85 14 #if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST)
star297 0:4f67859595b2 15 #include "mbed.h"
salemtang 6:10b73ebdba3d 16 #endif // RTC_CLOCK_TEST || LED_BLINK_TEST
salemtang 8:18e86eb228ca 17 #if (defined RTC_CLOCK_TEST) || (defined SLCD_BLINKING_TEST)
star297 0:4f67859595b2 18 #include "SLCD.h"
salemtang 8:18e86eb228ca 19 #endif // RTC_CLOCK_TEST || SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 20 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 21 #include "MAG3110.h"
salemtang 8:18e86eb228ca 22 #include "MMA8451Q.h"
salemtang 8:18e86eb228ca 23 #include "TSISensor.h"
salemtang 8:18e86eb228ca 24 #endif // SLCD_BLINKING_TEST
salemtang 6:10b73ebdba3d 25
salemtang 6:10b73ebdba3d 26 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 27 // general define
salemtang 6:10b73ebdba3d 28 // -----------------------------------------------------------------------------
salemtang 8:18e86eb228ca 29 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 30 #define LED_ON 0
salemtang 8:18e86eb228ca 31 #define LED_OFF 1
salemtang 8:18e86eb228ca 32 #define PRESS_ON 0
salemtang 8:18e86eb228ca 33 #define PRESS_OFF 1
salemtang 8:18e86eb228ca 34 #define MMA8451_I2C_ADDRESS (0x1d<<1)
salemtang 8:18e86eb228ca 35 #endif // SLCD_BLINKING_TEST
star297 0:4f67859595b2 36
salemtang 6:10b73ebdba3d 37 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 38 // struct define
salemtang 6:10b73ebdba3d 39 // -----------------------------------------------------------------------------
salemtang 8:18e86eb228ca 40 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 41 struct KL46_SENSOR_DATA {
salemtang 8:18e86eb228ca 42 int sw1State;
salemtang 8:18e86eb228ca 43 int sw3State;
salemtang 8:18e86eb228ca 44 float accValX;
salemtang 8:18e86eb228ca 45 float accValY;
salemtang 8:18e86eb228ca 46 float accValZ;
salemtang 8:18e86eb228ca 47 float slider;
salemtang 8:18e86eb228ca 48 float light;
salemtang 8:18e86eb228ca 49 int magValX;
salemtang 8:18e86eb228ca 50 int magValY;
salemtang 8:18e86eb228ca 51 int magValZ;
salemtang 8:18e86eb228ca 52 } sensorData;
salemtang 8:18e86eb228ca 53 #endif // SLCD_BLINKING_TEST
salemtang 3:fb38dbc95b12 54
salemtang 6:10b73ebdba3d 55 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 56 // external function
salemtang 6:10b73ebdba3d 57 // -----------------------------------------------------------------------------
star297 0:4f67859595b2 58
salemtang 6:10b73ebdba3d 59 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 60 // function prototype
salemtang 6:10b73ebdba3d 61 // -----------------------------------------------------------------------------
salemtang 8:18e86eb228ca 62 #if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST)
salemtang 3:fb38dbc95b12 63 void initializeSetting (void);
salemtang 8:18e86eb228ca 64 #endif // RTC_CLOCK_TEST || LED_BLINK_TEST || SLCD_BLINKING_TEST
salemtang 4:15da67d64f85 65 #ifdef LED_BLINK_TEST
salemtang 3:fb38dbc95b12 66 void ledBlink (float dutyfactor);
salemtang 6:10b73ebdba3d 67 #endif // LED_BLINK_TEST
salemtang 4:15da67d64f85 68 #ifdef RTC_CLOCK_TEST
salemtang 3:fb38dbc95b12 69 void rtcClock (void);
salemtang 3:fb38dbc95b12 70 void scrollMessage (void);
salemtang 3:fb38dbc95b12 71 void switchinput1_INTIRQ (void);
salemtang 3:fb38dbc95b12 72 void switchinput3_INTIRQ (void);
salemtang 6:10b73ebdba3d 73 #endif // LED_BLINK_TEST
salemtang 8:18e86eb228ca 74 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 75 void SLCD_blinking_msg_wait (char *slcd_msg1, char *slcd_msg2);
salemtang 8:18e86eb228ca 76 #endif // SLCD_BLINKING_TEST
salemtang 3:fb38dbc95b12 77
salemtang 6:10b73ebdba3d 78 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 79 // external variable
salemtang 6:10b73ebdba3d 80 // -----------------------------------------------------------------------------
salemtang 2:678c0be8c23d 81
salemtang 6:10b73ebdba3d 82 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 83 // global variable
salemtang 6:10b73ebdba3d 84 // -----------------------------------------------------------------------------
salemtang 8:18e86eb228ca 85 #if (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST)
salemtang 3:fb38dbc95b12 86 PwmOut greenled_PO(LED1);
salemtang 3:fb38dbc95b12 87 PwmOut redled_PO(LED2);
salemtang 3:fb38dbc95b12 88 DigitalIn switchinput1_DI(SW1);
salemtang 3:fb38dbc95b12 89 DigitalIn switchinput3_DI(SW3);
salemtang 4:15da67d64f85 90 float defaultdutyfactor = 0.0;
salemtang 8:18e86eb228ca 91 #endif // LED_BLINK_TEST || SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 92 #if (defined RTC_CLOCK_TEST) || (defined SLCD_BLINKING_TEST)
salemtang 4:15da67d64f85 93 DigitalOut greenled_DO(LED1);
salemtang 4:15da67d64f85 94 DigitalOut redled_DO(LED2);
salemtang 3:fb38dbc95b12 95 InterruptIn switchinput1_INT(SW1);
salemtang 3:fb38dbc95b12 96 InterruptIn switchinput3_INT(SW3);
star297 0:4f67859595b2 97 SLCD slcd;
star297 0:4f67859595b2 98 Timer scroll;
star297 0:4f67859595b2 99 struct tm t;
salemtang 2:678c0be8c23d 100 int i, j, k, lastscroll, display_timer, minute, hour, colon, dp;
star297 1:34f0bfc62803 101 char message[60];
star297 0:4f67859595b2 102 char buffer[32];
salemtang 8:18e86eb228ca 103 #endif // RTC_CLOCK_TEST || SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 104 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 105 AnalogIn light(PTE22); // analog-light input
salemtang 8:18e86eb228ca 106 TSISensor slider; // Capacitive Touch Slider
salemtang 8:18e86eb228ca 107 MAG3110 mag(PTE25, PTE24); // Magnetometer
salemtang 8:18e86eb228ca 108 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
salemtang 8:18e86eb228ca 109 Serial usb_osda(USBTX, USBRX); // OpenSDA Terminal
salemtang 8:18e86eb228ca 110 #endif // SLCD_BLINKING_TEST
star297 0:4f67859595b2 111
salemtang 6:10b73ebdba3d 112 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 113 // function
salemtang 6:10b73ebdba3d 114 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 115 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 116 //! @brief Main Function
salemtang 6:10b73ebdba3d 117 //! @param [in] nil
salemtang 6:10b73ebdba3d 118 //! @retval int
salemtang 6:10b73ebdba3d 119 // -----------------------------------------------------------------------------
salemtang 6:10b73ebdba3d 120 int main (void)
star297 1:34f0bfc62803 121 {
salemtang 8:18e86eb228ca 122 #if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST)
salemtang 3:fb38dbc95b12 123 initializeSetting();
salemtang 8:18e86eb228ca 124 #endif // RTC_CLOCK_TEST || LED_BLINK_TEST || SLCD_BLINKING_TEST
salemtang 2:678c0be8c23d 125
salemtang 3:fb38dbc95b12 126 while (true) {
salemtang 4:15da67d64f85 127 #ifdef RTC_CLOCK_TEST
salemtang 3:fb38dbc95b12 128 rtcClock();
salemtang 6:10b73ebdba3d 129 #endif // RTC_CLOCK_TEST
salemtang 4:15da67d64f85 130
salemtang 4:15da67d64f85 131 #ifdef LED_BLINK_TEST
salemtang 3:fb38dbc95b12 132 if (!switchinput1_DI) {
salemtang 4:15da67d64f85 133 ledBlink(0.5);
salemtang 4:15da67d64f85 134 } else if (!switchinput3_DI) {
salemtang 3:fb38dbc95b12 135 ledBlink(1.0);
star297 1:34f0bfc62803 136 } else {
salemtang 4:15da67d64f85 137 ledBlink(2.0);
star297 0:4f67859595b2 138 }
salemtang 6:10b73ebdba3d 139 #endif // LED_BLINK_TEST
salemtang 8:18e86eb228ca 140
salemtang 8:18e86eb228ca 141 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 142 // disable all SLCD DPs
salemtang 8:18e86eb228ca 143 slcd.DP(0, false); slcd.DP(1, false); slcd.DP(2, false);
salemtang 8:18e86eb228ca 144
salemtang 8:18e86eb228ca 145 // MAIN/Loop/Sensing and Storing data -----------------//
salemtang 8:18e86eb228ca 146 sensorData.sw1State = switchinput1_DI; sensorData.sw3State = switchinput3_DI;
salemtang 8:18e86eb228ca 147 sensorData.accValX = acc.getAccX(); // accX[-1..1]->mouse (Lab1)
salemtang 8:18e86eb228ca 148 sensorData.accValY = acc.getAccY(); // accY[-1..1]->mouse (Lab1)
salemtang 8:18e86eb228ca 149 sensorData.accValZ = acc.getAccZ(); // accZ[-1..1]->rLED
salemtang 8:18e86eb228ca 150 sensorData.slider = slider.readPercentage() * 100;
salemtang 8:18e86eb228ca 151 sensorData.light = light;
salemtang 8:18e86eb228ca 152 sensorData.magValX = mag.readVal(MAG_OUT_X_MSB);
salemtang 8:18e86eb228ca 153 sensorData.magValY = mag.readVal(MAG_OUT_Y_MSB);
salemtang 8:18e86eb228ca 154 sensorData.magValZ = mag.readVal(MAG_OUT_Z_MSB);
salemtang 8:18e86eb228ca 155
salemtang 8:18e86eb228ca 156 // MAIN/Loop/Processing and Actions -------------------//
salemtang 8:18e86eb228ca 157 // sensor -> terminal
salemtang 8:18e86eb228ca 158 if (sensorData.sw1State != PRESS_OFF) {
salemtang 8:18e86eb228ca 159 greenled_DO = !greenled_DO; //blinking
salemtang 8:18e86eb228ca 160 usb_osda.printf(" \r\n");
salemtang 8:18e86eb228ca 161 usb_osda.printf(" Switches. Light . Slider . Accelerometer . Magnetometer . Compass\r\n");
salemtang 8:18e86eb228ca 162 usb_osda.printf(" SW1:SW2| LUX | TSI | accX : accY : accZ | magX: magY: maxZ | Heading\r\n");
salemtang 8:18e86eb228ca 163 usb_osda.printf(" %d : %d | %1.3f | %2.0f %% | %+1.3f:%+1.3f:%+1.3f| %5d:%5d:%5d | Lab3 \r\n",
salemtang 8:18e86eb228ca 164 sensorData.sw1State, sensorData.sw3State, sensorData.light, sensorData.slider,
salemtang 8:18e86eb228ca 165 sensorData.accValX, sensorData.accValY, sensorData.accValZ,
salemtang 8:18e86eb228ca 166 (short)sensorData.magValX, (short)sensorData.magValY, (short)sensorData.magValZ);
salemtang 8:18e86eb228ca 167 } greenled_DO = LED_OFF;
salemtang 8:18e86eb228ca 168
salemtang 8:18e86eb228ca 169 // acc: z-axis 1g min-blinking//acc: z-axis 1g min-blinking
salemtang 8:18e86eb228ca 170 redled_PO = abs(sensorData.accValZ);
salemtang 8:18e86eb228ca 171
salemtang 8:18e86eb228ca 172 if (sensorData.slider) {
salemtang 8:18e86eb228ca 173 slcd.printf(" %3.0f", sensorData.slider); // night->light .. 1->0
salemtang 8:18e86eb228ca 174 } else {
salemtang 8:18e86eb228ca 175 slcd.printf("%1.3f", sensorData.light); // left->right .. 0->100%
salemtang 8:18e86eb228ca 176 }
salemtang 8:18e86eb228ca 177 wait(0.05); // wait 50ms
salemtang 8:18e86eb228ca 178 #endif // SLCD_BLINKING_TEST
star297 0:4f67859595b2 179 }
star297 1:34f0bfc62803 180 }
star297 0:4f67859595b2 181
salemtang 6:10b73ebdba3d 182 // -----------------------------------------------------------------------------
salemtang 3:fb38dbc95b12 183 //! @brief Initialize Setting
salemtang 6:10b73ebdba3d 184 //! @param [in] nil
salemtang 3:fb38dbc95b12 185 //! @retval nil
salemtang 6:10b73ebdba3d 186 // -----------------------------------------------------------------------------
salemtang 8:18e86eb228ca 187 #if (defined RTC_CLOCK_TEST) || (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST)
salemtang 3:fb38dbc95b12 188 void initializeSetting (void)
salemtang 3:fb38dbc95b12 189 {
salemtang 8:18e86eb228ca 190 #if (defined LED_BLINK_TEST) || (defined SLCD_BLINKING_TEST)
salemtang 3:fb38dbc95b12 191 switchinput1_DI.mode(PullUp);
salemtang 3:fb38dbc95b12 192 switchinput3_DI.mode(PullUp);
salemtang 8:18e86eb228ca 193 #endif // LED_BLINK_TEST || SLCD_BLINKING_TEST
salemtang 4:15da67d64f85 194
salemtang 4:15da67d64f85 195 #ifdef RTC_CLOCK_TEST
salemtang 4:15da67d64f85 196 time_t seconds = time(NULL);
salemtang 3:fb38dbc95b12 197
salemtang 3:fb38dbc95b12 198 slcd.All_Segments(1);
salemtang 3:fb38dbc95b12 199 wait(2);
salemtang 3:fb38dbc95b12 200 slcd.All_Segments(0);
salemtang 3:fb38dbc95b12 201 wait(1);
salemtang 3:fb38dbc95b12 202
salemtang 3:fb38dbc95b12 203 greenled_DO = 1;
salemtang 3:fb38dbc95b12 204 redled_DO = 1;
salemtang 3:fb38dbc95b12 205
salemtang 4:15da67d64f85 206 sprintf(message, " rtc clock sw3 sets the hours sw1 sets the minutes");
salemtang 3:fb38dbc95b12 207
salemtang 3:fb38dbc95b12 208 // scrolling message
salemtang 3:fb38dbc95b12 209 scroll.start();
salemtang 3:fb38dbc95b12 210 while (i < 58) {
salemtang 3:fb38dbc95b12 211 while (i < 58) {
salemtang 3:fb38dbc95b12 212 scrollMessage();
salemtang 3:fb38dbc95b12 213 }
salemtang 3:fb38dbc95b12 214 }
salemtang 3:fb38dbc95b12 215 wait(1);
salemtang 3:fb38dbc95b12 216
salemtang 5:15c484c41006 217 switchinput1_INT.rise(switchinput1_INTIRQ);
salemtang 5:15c484c41006 218 switchinput3_INT.rise(switchinput3_INTIRQ);
salemtang 6:10b73ebdba3d 219 #endif // RTC_CLOCK_TEST
salemtang 8:18e86eb228ca 220
salemtang 8:18e86eb228ca 221 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 222 greenled_DO = LED_ON; // Green LED ON to indicate running/writing
salemtang 8:18e86eb228ca 223 redled_PO = LED_OFF; // Red LED OFF
salemtang 8:18e86eb228ca 224 redled_PO.period (150);
salemtang 8:18e86eb228ca 225
salemtang 8:18e86eb228ca 226 //---- MAIN/Inits (Wait4SW1) -> Start! --------------------//
salemtang 8:18e86eb228ca 227 // wait for Press SW1 - e.g. for HID/CDC/MsensorData Windows install.
salemtang 8:18e86eb228ca 228 SLCD_blinking_msg_wait(" o","PrES"); // Lab1=Hid; 2=cdc; 3=MsensorData
salemtang 8:18e86eb228ca 229
salemtang 8:18e86eb228ca 230 //---- MAIN/Inits Interface -------------------------------//
salemtang 8:18e86eb228ca 231 usb_osda.baud (115200);
salemtang 8:18e86eb228ca 232 usb_osda.printf ("\n___________________________________\r\n");
salemtang 8:18e86eb228ca 233 usb_osda.printf ("\nFRDM-KL46Z_Lab\r\n \r\n I am a CDC serial port @OpensensorDataA/mUSB. Baud=115200 \r\n");
salemtang 8:18e86eb228ca 234
salemtang 8:18e86eb228ca 235 //---- MAIN/Inits Done! (Wait4SW1) -> MANI/Loop -----------//
salemtang 8:18e86eb228ca 236 greenled_DO = LED_OFF; // Inits are done
salemtang 8:18e86eb228ca 237 #endif // SLCD_BLINKING_TEST
salemtang 3:fb38dbc95b12 238 }
salemtang 8:18e86eb228ca 239 #endif // RTC_CLOCK_TEST || LED_BLINK_TEST || SLCD_BLINKING_TEST
salemtang 3:fb38dbc95b12 240
salemtang 6:10b73ebdba3d 241 // -----------------------------------------------------------------------------
salemtang 3:fb38dbc95b12 242 //! @brief LED Blink
salemtang 6:10b73ebdba3d 243 //! @param [in] dutyfactor Duty Factor Integer
salemtang 3:fb38dbc95b12 244 //! @retval nil
salemtang 6:10b73ebdba3d 245 // -----------------------------------------------------------------------------
salemtang 4:15da67d64f85 246 #ifdef LED_BLINK_TEST
salemtang 3:fb38dbc95b12 247 void ledBlink (float dutyfactor)
salemtang 3:fb38dbc95b12 248 {
salemtang 3:fb38dbc95b12 249 redled_PO.write(defaultdutyfactor);
salemtang 3:fb38dbc95b12 250 greenled_PO.write(dutyfactor - defaultdutyfactor);
salemtang 6:10b73ebdba3d 251 defaultdutyfactor += 0.01;
salemtang 3:fb38dbc95b12 252 if (defaultdutyfactor >= dutyfactor) defaultdutyfactor = 0.0;
salemtang 6:10b73ebdba3d 253 wait(0.5);
salemtang 3:fb38dbc95b12 254 }
salemtang 4:15da67d64f85 255 #endif
salemtang 3:fb38dbc95b12 256
salemtang 6:10b73ebdba3d 257 // -----------------------------------------------------------------------------
salemtang 3:fb38dbc95b12 258 //! @brief RTC Clock
salemtang 6:10b73ebdba3d 259 //! @param [in] nil
salemtang 3:fb38dbc95b12 260 //! @retval nil
salemtang 6:10b73ebdba3d 261 // -----------------------------------------------------------------------------
salemtang 4:15da67d64f85 262 #ifdef RTC_CLOCK_TEST
salemtang 3:fb38dbc95b12 263 void rtcClock (void)
salemtang 3:fb38dbc95b12 264 {
salemtang 3:fb38dbc95b12 265 time_t seconds = time(NULL);
salemtang 3:fb38dbc95b12 266
salemtang 3:fb38dbc95b12 267 if (display_timer > 6) {
salemtang 5:15c484c41006 268 // display Hours,Minutes for 2 seconds
salemtang 5:15c484c41006 269 strftime(buffer, 4, "%H%M", localtime(&seconds));
salemtang 3:fb38dbc95b12 270 slcd.Colon(1);
salemtang 3:fb38dbc95b12 271 redled_DO = 0;
salemtang 3:fb38dbc95b12 272 slcd.DP2(0);
salemtang 3:fb38dbc95b12 273 greenled_DO = 1;
salemtang 3:fb38dbc95b12 274 } else {
salemtang 5:15c484c41006 275 // display Minutes,Seconds for 8 seconds
salemtang 5:15c484c41006 276 strftime(buffer, 4, "%M%S", localtime(&seconds));
salemtang 3:fb38dbc95b12 277 slcd.Colon(0);
salemtang 3:fb38dbc95b12 278 redled_DO = 1;
salemtang 3:fb38dbc95b12 279 slcd.DP2(1);
salemtang 3:fb38dbc95b12 280 greenled_DO = 0;
salemtang 3:fb38dbc95b12 281 }
salemtang 3:fb38dbc95b12 282
salemtang 3:fb38dbc95b12 283 slcd.printf(buffer);
salemtang 3:fb38dbc95b12 284 wait(0.5);
salemtang 3:fb38dbc95b12 285 slcd.DP2(0);
salemtang 3:fb38dbc95b12 286 greenled_DO = 1;
salemtang 3:fb38dbc95b12 287 display_timer++;
salemtang 3:fb38dbc95b12 288 if (display_timer > 9) display_timer = 0;
salemtang 3:fb38dbc95b12 289 wait(0.5);
salemtang 3:fb38dbc95b12 290 }
salemtang 6:10b73ebdba3d 291 #endif // RTC_CLOCK_TEST
salemtang 3:fb38dbc95b12 292
salemtang 6:10b73ebdba3d 293 // -----------------------------------------------------------------------------
salemtang 3:fb38dbc95b12 294 //! @brief Scroll Message
salemtang 6:10b73ebdba3d 295 //! @param [in] nil
salemtang 3:fb38dbc95b12 296 //! @retval nil
salemtang 6:10b73ebdba3d 297 // -----------------------------------------------------------------------------
salemtang 4:15da67d64f85 298 #ifdef RTC_CLOCK_TEST
salemtang 3:fb38dbc95b12 299 void scrollMessage (void)
star297 0:4f67859595b2 300 {
star297 1:34f0bfc62803 301 if (scroll.read_ms() > lastscroll + 350) {
star297 0:4f67859595b2 302 scroll.reset();
star297 1:34f0bfc62803 303 if (i > 58) {
salemtang 4:15da67d64f85 304 i = 0;
star297 0:4f67859595b2 305 }
star297 0:4f67859595b2 306 int j, k = i;
star297 0:4f67859595b2 307 for (j = 0; j < 4; j++) {
star297 0:4f67859595b2 308 if (message[k+j]) {
star297 0:4f67859595b2 309 slcd.putc(message[k+j]);
star297 0:4f67859595b2 310 } else {
star297 0:4f67859595b2 311 slcd.putc(' ');
star297 0:4f67859595b2 312 k--;
star297 0:4f67859595b2 313 }
star297 0:4f67859595b2 314 }
star297 0:4f67859595b2 315 i++;
salemtang 2:678c0be8c23d 316 lastscroll = scroll.read_ms();
star297 0:4f67859595b2 317 }
star297 0:4f67859595b2 318 }
salemtang 6:10b73ebdba3d 319 #endif // RTC_CLOCK_TEST
salemtang 4:15da67d64f85 320
salemtang 6:10b73ebdba3d 321 // -----------------------------------------------------------------------------
salemtang 3:fb38dbc95b12 322 //! @brief Set Minutes ISR
salemtang 6:10b73ebdba3d 323 //! @param [in] nil
salemtang 3:fb38dbc95b12 324 //! @retval nil
salemtang 6:10b73ebdba3d 325 // -----------------------------------------------------------------------------
salemtang 4:15da67d64f85 326 #ifdef RTC_CLOCK_TEST
salemtang 3:fb38dbc95b12 327 void switchinput1_INTIRQ (void)
star297 0:4f67859595b2 328 {
salemtang 2:678c0be8c23d 329 display_timer = 7;
star297 0:4f67859595b2 330 time_t seconds = time(NULL);
star297 1:34f0bfc62803 331 char buffer[2];
star297 0:4f67859595b2 332 strftime(buffer, 2,"%H", localtime(&seconds));
salemtang 6:10b73ebdba3d 333 hour = atoi(buffer); // get Hour integer
star297 0:4f67859595b2 334 strftime(buffer, 2,"%M", localtime(&seconds));
salemtang 6:10b73ebdba3d 335 minute = atoi(buffer); // get Minutes integer
star297 0:4f67859595b2 336 minute++;
salemtang 2:678c0be8c23d 337 if (minute > 59) minute = 0;
salemtang 6:10b73ebdba3d 338 t.tm_sec = 0; // Seconds reset to zero
star297 1:34f0bfc62803 339 t.tm_min = minute;
star297 1:34f0bfc62803 340 t.tm_hour = hour;
star297 1:34f0bfc62803 341 t.tm_mday = 1;
star297 1:34f0bfc62803 342 t.tm_mon = 2;
star297 1:34f0bfc62803 343 t.tm_year = 114;
salemtang 2:678c0be8c23d 344 set_time(mktime(&t));
star297 0:4f67859595b2 345 }
salemtang 6:10b73ebdba3d 346 #endif // RTC_CLOCK_TEST
star297 0:4f67859595b2 347
salemtang 6:10b73ebdba3d 348 // -----------------------------------------------------------------------------
salemtang 3:fb38dbc95b12 349 //! @brief Set Hours ISR
salemtang 6:10b73ebdba3d 350 //! @param [in] nil
salemtang 3:fb38dbc95b12 351 //! @retval nil
salemtang 6:10b73ebdba3d 352 // -----------------------------------------------------------------------------
salemtang 4:15da67d64f85 353 #ifdef RTC_CLOCK_TEST
salemtang 3:fb38dbc95b12 354 void switchinput3_INTIRQ (void)
star297 0:4f67859595b2 355 {
salemtang 2:678c0be8c23d 356 display_timer = 7;
star297 0:4f67859595b2 357 time_t seconds = time(NULL);
star297 0:4f67859595b2 358 char buffer[2];
star297 1:34f0bfc62803 359 strftime(buffer, 2,"%H", localtime(&seconds));
salemtang 6:10b73ebdba3d 360 hour = atoi(buffer); // get Hour integer
star297 0:4f67859595b2 361 strftime(buffer, 2,"%M", localtime(&seconds));
salemtang 6:10b73ebdba3d 362 minute = atoi(buffer); // get Minutes integer
star297 0:4f67859595b2 363 hour++;
salemtang 2:678c0be8c23d 364 if (hour > 23) hour = 0;
salemtang 6:10b73ebdba3d 365 t.tm_sec = 0; // Seconds reset to zero
star297 1:34f0bfc62803 366 t.tm_min = minute;
star297 1:34f0bfc62803 367 t.tm_hour = hour;
star297 1:34f0bfc62803 368 t.tm_mday = 1;
star297 1:34f0bfc62803 369 t.tm_mon = 2;
star297 1:34f0bfc62803 370 t.tm_year = 114;
salemtang 2:678c0be8c23d 371 set_time(mktime(&t));
star297 0:4f67859595b2 372 }
salemtang 6:10b73ebdba3d 373 #endif //RTC_CLOCK_TEST
salemtang 8:18e86eb228ca 374
salemtang 8:18e86eb228ca 375 // -----------------------------------------------------------------------------
salemtang 8:18e86eb228ca 376 //! @brief SLCD Blinking Massage
salemtang 8:18e86eb228ca 377 //! @param [in] *slcd_msg1 Massage 1
salemtang 8:18e86eb228ca 378 //! @param [in] *slcd_msg2 Massage 2
salemtang 8:18e86eb228ca 379 //! @retval nil
salemtang 8:18e86eb228ca 380 // -----------------------------------------------------------------------------
salemtang 8:18e86eb228ca 381 #ifdef SLCD_BLINKING_TEST
salemtang 8:18e86eb228ca 382 void SLCD_blinking_msg_wait (char *slcd_msg1, char *slcd_msg2)
salemtang 8:18e86eb228ca 383 {
salemtang 8:18e86eb228ca 384 char wait4sw1 = 0; // 500ms blinking
salemtang 8:18e86eb228ca 385 slcd.CharPosition = 0;
salemtang 8:18e86eb228ca 386 // wait for Press SW1 - to start mag calibration
salemtang 8:18e86eb228ca 387 while (switchinput1_DI == PRESS_ON); // wait for release
salemtang 8:18e86eb228ca 388 while (switchinput1_DI == PRESS_OFF) { // wait for press
salemtang 8:18e86eb228ca 389 if (++wait4sw1 < 150) { // 300ms
salemtang 8:18e86eb228ca 390 slcd.printf(slcd_msg1);
salemtang 8:18e86eb228ca 391 } else { //200ms
salemtang 8:18e86eb228ca 392 slcd.printf (slcd_msg2);
salemtang 8:18e86eb228ca 393 wait (0.002);
salemtang 8:18e86eb228ca 394 slcd.CharPosition = 0;
salemtang 8:18e86eb228ca 395 }
salemtang 8:18e86eb228ca 396 }
salemtang 8:18e86eb228ca 397 while (switchinput1_DI == PRESS_ON); // wait for release
salemtang 8:18e86eb228ca 398 }
salemtang 8:18e86eb228ca 399 #endif // SLCD_BLINKING_TEST