CENTER 3D
Dependencies: EFM32_CapSenseSlider EFM32_SegmentLCD mbed
Revision 0:ed973aca7da6, committed 2016-02-25
- Comitter:
- hamid_155
- Date:
- Thu Feb 25 13:08:48 2016 +0000
- Commit message:
- CENTER 3D
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EFM32_CapSense.lib Thu Feb 25 13:08:48 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/SiliconLabs/code/EFM32_CapSenseSlider/#8d096e5bc045
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EFM32_SegmentLCD.lib Thu Feb 25 13:08:48 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/SiliconLabs/code/EFM32_SegmentLCD/#114aa75da77b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Feb 25 13:08:48 2016 +0000 @@ -0,0 +1,94 @@ +#include "EFM32_SegmentLCD.h" +#include "EFM32_CapSenseSlider.h" + +/******************** Define I/O *****************************/ +InterruptIn in(PB9); + +silabs::EFM32_SegmentLCD segmentDisplay; +silabs::EFM32_CapSenseSlider capSlider; + +/******************** Define Timers *****************************/ +LowPowerTicker refreshTicker; + +/***************** Define global variables **********************/ +#define INIT_SECONDS 17600 +#define TEST_DURATION 10 + +volatile uint32_t count = 0, seconds = INIT_SECONDS; + + +/***************** Define callback handlers *********************/ +void tickerCallback(void); +void in_handler(); +void touchCallback(void); +void slideCallback(void); + +/** + * Callback for pushbutton interrupt + */ +void in_handler() { + count++; + segmentDisplay.ARing(count & 0x7, (count & 0x8) == 0); +} + +/** + * Callback for 1 second timebase + */ +void tickerCallback(void) { + seconds++; + uint32_t clockValue = ((seconds / 60) % 60) * 100 + (seconds % 60); + segmentDisplay.Number(clockValue); + segmentDisplay.Symbol(LCD_SYMBOL_COL10, seconds & 0x1); +} + +/** + * Callback for touching/untouching the cap slider + */ +void touchCallback(void) { + segmentDisplay.Symbol(LCD_SYMBOL_EFM32, capSlider.isTouched()); + + if(!capSlider.isTouched()) { + segmentDisplay.Write("Hello"); + } +} + +/** + * Callback for sliding the cap slider + */ +void slideCallback(void) { + segmentDisplay.LowerNumber(capSlider.get_position()); +} + +/*************************** MAIN *******************************/ +int main() { + // Initialize pushbutton handler + in.rise(NULL); + in.fall(in_handler); + + // Enable the capacitive slider + capSlider.start(); + capSlider.attach_touch(touchCallback); + capSlider.attach_untouch(touchCallback); + capSlider.attach_slide(-1, slideCallback); + + // Start generating the 1Hz timebase + refreshTicker.attach(&tickerCallback, 1.0f); + + printf("Initialization done! \n"); + wait(0.01f); //Need to delay slightly to give the serial transmission a chance to flush out its buffer + segmentDisplay.Write("Hello"); + + // Go into sleeping mode + while(1) + { + sleep(); + if(count >= 8) { + // Go to 'completely dead' mode to show power consumption + refreshTicker.detach(); + capSlider.stop(); + in.disable_irq(); + delete &segmentDisplay; + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Feb 25 13:08:48 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/252557024ec3 \ No newline at end of file