Random terror phrases

Dependencies:   EFM32_CapSenseSlider EFM32_SegmentLCD mbed

Fork of EMF32-Segment-Touch-Demo by Max Scordamaglia

Committer:
MaxScorda
Date:
Thu Jun 25 10:05:30 2015 +0000
Revision:
0:cb2d0eb1f49e
Child:
1:611525c0aa76
Primo test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MaxScorda 0:cb2d0eb1f49e 1 #include "EFM32_SegmentLCD.h"
MaxScorda 0:cb2d0eb1f49e 2 #include "EFM32_CapSenseSlider.h"
MaxScorda 0:cb2d0eb1f49e 3
MaxScorda 0:cb2d0eb1f49e 4 /******************** Define I/O *****************************/
MaxScorda 0:cb2d0eb1f49e 5 InterruptIn in0(PB9);
MaxScorda 0:cb2d0eb1f49e 6 InterruptIn in1(PB10);
MaxScorda 0:cb2d0eb1f49e 7
MaxScorda 0:cb2d0eb1f49e 8 silabs::EFM32_SegmentLCD segmentDisplay;
MaxScorda 0:cb2d0eb1f49e 9 silabs::EFM32_CapSenseSlider capSlider;
MaxScorda 0:cb2d0eb1f49e 10
MaxScorda 0:cb2d0eb1f49e 11 /******************** Define Timers *****************************/
MaxScorda 0:cb2d0eb1f49e 12 LowPowerTicker refreshTicker;
MaxScorda 0:cb2d0eb1f49e 13
MaxScorda 0:cb2d0eb1f49e 14 /***************** Define global variables **********************/
MaxScorda 0:cb2d0eb1f49e 15 #define INIT_SECONDS 17600
MaxScorda 0:cb2d0eb1f49e 16 #define TEST_DURATION 10
MaxScorda 0:cb2d0eb1f49e 17
MaxScorda 0:cb2d0eb1f49e 18 volatile uint32_t seconds = INIT_SECONDS;
MaxScorda 0:cb2d0eb1f49e 19 int count = -1;
MaxScorda 0:cb2d0eb1f49e 20
MaxScorda 0:cb2d0eb1f49e 21
MaxScorda 0:cb2d0eb1f49e 22 /***************** Define callback handlers *********************/
MaxScorda 0:cb2d0eb1f49e 23 void tickerCallback(void);
MaxScorda 0:cb2d0eb1f49e 24 void in0_handler();
MaxScorda 0:cb2d0eb1f49e 25 void in1_handler();
MaxScorda 0:cb2d0eb1f49e 26 void touchCallback(void);
MaxScorda 0:cb2d0eb1f49e 27 void slideCallback(void);
MaxScorda 0:cb2d0eb1f49e 28
MaxScorda 0:cb2d0eb1f49e 29 /**
MaxScorda 0:cb2d0eb1f49e 30 * Callback for pushbutton interrupt
MaxScorda 0:cb2d0eb1f49e 31 */
MaxScorda 0:cb2d0eb1f49e 32
MaxScorda 0:cb2d0eb1f49e 33 void symbolGest()
MaxScorda 0:cb2d0eb1f49e 34 {
MaxScorda 0:cb2d0eb1f49e 35 if (count==7) {
MaxScorda 0:cb2d0eb1f49e 36 segmentDisplay.Symbol(LCD_SYMBOL_GECKO, true);
MaxScorda 0:cb2d0eb1f49e 37 segmentDisplay.Write("GeckoOn");
MaxScorda 0:cb2d0eb1f49e 38 } else {
MaxScorda 0:cb2d0eb1f49e 39 segmentDisplay.Symbol(LCD_SYMBOL_GECKO, false);
MaxScorda 0:cb2d0eb1f49e 40 if (count%2==0) segmentDisplay.Write("Scorda");
MaxScorda 0:cb2d0eb1f49e 41 else segmentDisplay.Write("TataGek");
MaxScorda 0:cb2d0eb1f49e 42 }
MaxScorda 0:cb2d0eb1f49e 43
MaxScorda 0:cb2d0eb1f49e 44 }
MaxScorda 0:cb2d0eb1f49e 45
MaxScorda 0:cb2d0eb1f49e 46 void in0_handler()
MaxScorda 0:cb2d0eb1f49e 47 {
MaxScorda 0:cb2d0eb1f49e 48 count++;
MaxScorda 0:cb2d0eb1f49e 49 if (count>7) count=7;
MaxScorda 0:cb2d0eb1f49e 50 else segmentDisplay.ARing(count, true);
MaxScorda 0:cb2d0eb1f49e 51 symbolGest() ;
MaxScorda 0:cb2d0eb1f49e 52
MaxScorda 0:cb2d0eb1f49e 53 }
MaxScorda 0:cb2d0eb1f49e 54
MaxScorda 0:cb2d0eb1f49e 55 void in1_handler()
MaxScorda 0:cb2d0eb1f49e 56 {
MaxScorda 0:cb2d0eb1f49e 57 segmentDisplay.ARing(count, false);
MaxScorda 0:cb2d0eb1f49e 58 count--;
MaxScorda 0:cb2d0eb1f49e 59 if (count<0) count=-1;
MaxScorda 0:cb2d0eb1f49e 60 symbolGest() ;
MaxScorda 0:cb2d0eb1f49e 61
MaxScorda 0:cb2d0eb1f49e 62 }
MaxScorda 0:cb2d0eb1f49e 63
MaxScorda 0:cb2d0eb1f49e 64
MaxScorda 0:cb2d0eb1f49e 65 /**
MaxScorda 0:cb2d0eb1f49e 66 * Callback for 1 second timebase
MaxScorda 0:cb2d0eb1f49e 67 */
MaxScorda 0:cb2d0eb1f49e 68 void tickerCallback(void)
MaxScorda 0:cb2d0eb1f49e 69 {
MaxScorda 0:cb2d0eb1f49e 70 seconds++;
MaxScorda 0:cb2d0eb1f49e 71 uint32_t clockValue = ((seconds / 60) % 60) * 100 + (seconds % 60);
MaxScorda 0:cb2d0eb1f49e 72 segmentDisplay.Number(clockValue);
MaxScorda 0:cb2d0eb1f49e 73 segmentDisplay.Symbol(LCD_SYMBOL_COL10, seconds & 0x1);
MaxScorda 0:cb2d0eb1f49e 74 }
MaxScorda 0:cb2d0eb1f49e 75
MaxScorda 0:cb2d0eb1f49e 76 /**
MaxScorda 0:cb2d0eb1f49e 77 * Callback for touching/untouching the cap slider
MaxScorda 0:cb2d0eb1f49e 78 */
MaxScorda 0:cb2d0eb1f49e 79 void touchCallback(void)
MaxScorda 0:cb2d0eb1f49e 80 {
MaxScorda 0:cb2d0eb1f49e 81 segmentDisplay.Symbol(LCD_SYMBOL_EFM32, capSlider.isTouched());
MaxScorda 0:cb2d0eb1f49e 82
MaxScorda 0:cb2d0eb1f49e 83 if(!capSlider.isTouched()) {
MaxScorda 0:cb2d0eb1f49e 84 segmentDisplay.Write("Scorda");
MaxScorda 0:cb2d0eb1f49e 85 }
MaxScorda 0:cb2d0eb1f49e 86 }
MaxScorda 0:cb2d0eb1f49e 87
MaxScorda 0:cb2d0eb1f49e 88 /**
MaxScorda 0:cb2d0eb1f49e 89 * Callback for sliding the cap slider
MaxScorda 0:cb2d0eb1f49e 90 */
MaxScorda 0:cb2d0eb1f49e 91 void slideCallback(void)
MaxScorda 0:cb2d0eb1f49e 92 {
MaxScorda 0:cb2d0eb1f49e 93 segmentDisplay.LowerNumber(capSlider.get_position());
MaxScorda 0:cb2d0eb1f49e 94 }
MaxScorda 0:cb2d0eb1f49e 95
MaxScorda 0:cb2d0eb1f49e 96 /*************************** MAIN *******************************/
MaxScorda 0:cb2d0eb1f49e 97 int main()
MaxScorda 0:cb2d0eb1f49e 98 {
MaxScorda 0:cb2d0eb1f49e 99 // Initialize pushbutton handler
MaxScorda 0:cb2d0eb1f49e 100 in0.rise(NULL);
MaxScorda 0:cb2d0eb1f49e 101 in0.fall(in0_handler);
MaxScorda 0:cb2d0eb1f49e 102
MaxScorda 0:cb2d0eb1f49e 103 in1.rise(NULL);
MaxScorda 0:cb2d0eb1f49e 104 in1.fall(in1_handler);
MaxScorda 0:cb2d0eb1f49e 105
MaxScorda 0:cb2d0eb1f49e 106 // Enable the capacitive slider
MaxScorda 0:cb2d0eb1f49e 107 capSlider.start();
MaxScorda 0:cb2d0eb1f49e 108 capSlider.attach_touch(touchCallback);
MaxScorda 0:cb2d0eb1f49e 109 capSlider.attach_untouch(touchCallback);
MaxScorda 0:cb2d0eb1f49e 110 capSlider.attach_slide(-1, slideCallback);
MaxScorda 0:cb2d0eb1f49e 111
MaxScorda 0:cb2d0eb1f49e 112 // Start generating the 1Hz timebase
MaxScorda 0:cb2d0eb1f49e 113 refreshTicker.attach(&tickerCallback, 1.0f);
MaxScorda 0:cb2d0eb1f49e 114
MaxScorda 0:cb2d0eb1f49e 115 printf("Initialization done! \n");
MaxScorda 0:cb2d0eb1f49e 116 wait(0.01f); //Need to delay slightly to give the serial transmission a chance to flush out its buffer
MaxScorda 0:cb2d0eb1f49e 117 segmentDisplay.Write("Scorda");
MaxScorda 0:cb2d0eb1f49e 118
MaxScorda 0:cb2d0eb1f49e 119
MaxScorda 0:cb2d0eb1f49e 120 // Go into sleeping mode
MaxScorda 0:cb2d0eb1f49e 121 while(1) {
MaxScorda 0:cb2d0eb1f49e 122 sleep();
MaxScorda 0:cb2d0eb1f49e 123
MaxScorda 0:cb2d0eb1f49e 124 if(count >= 8) {
MaxScorda 0:cb2d0eb1f49e 125 /*
MaxScorda 0:cb2d0eb1f49e 126 // Go to 'completely dead' mode to show power consumption
MaxScorda 0:cb2d0eb1f49e 127 refreshTicker.detach();
MaxScorda 0:cb2d0eb1f49e 128 capSlider.stop();
MaxScorda 0:cb2d0eb1f49e 129 in.disable_irq();
MaxScorda 0:cb2d0eb1f49e 130 delete &segmentDisplay;
MaxScorda 0:cb2d0eb1f49e 131
MaxScorda 0:cb2d0eb1f49e 132 */
MaxScorda 0:cb2d0eb1f49e 133 }
MaxScorda 0:cb2d0eb1f49e 134
MaxScorda 0:cb2d0eb1f49e 135 }
MaxScorda 0:cb2d0eb1f49e 136 }
MaxScorda 0:cb2d0eb1f49e 137