Kenneth Lujan
/
light_sense_46_
KLUJA-SSD341-Hw-5.2
Fork of light_sense_46 by
main.cpp@1:9e9a864e45ca, 2016-09-19 (annotated)
- Committer:
- kennylujan42
- Date:
- Mon Sep 19 06:58:23 2016 +0000
- Revision:
- 1:9e9a864e45ca
- Parent:
- 0:ba4f1298c690
KLUJA-SSD341-Hw-5.2.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
scohennm | 0:ba4f1298c690 | 1 | #include "mbed.h" |
kennylujan42 | 1:9e9a864e45ca | 2 | #include "SLCD.h" |
kennylujan42 | 1:9e9a864e45ca | 3 | #include "TSISensor.h" |
scohennm | 0:ba4f1298c690 | 4 | #define PROGNAME "Light_Sense_v1\n\r" |
scohennm | 0:ba4f1298c690 | 5 | #define DATATIME 0.5 |
kennylujan42 | 1:9e9a864e45ca | 6 | #define LCDLEN 10 |
kennylujan42 | 1:9e9a864e45ca | 7 | #define PRINTDEBUG |
kennylujan42 | 1:9e9a864e45ca | 8 | #define LIGHTSENSORPORT PTE22 |
kennylujan42 | 1:9e9a864e45ca | 9 | #define leftButton PTC12 |
kennylujan42 | 1:9e9a864e45ca | 10 | #define rightButton PTC3 |
kennylujan42 | 1:9e9a864e45ca | 11 | #define BUTUP true |
kennylujan42 | 1:9e9a864e45ca | 12 | #define BUTDOWN false |
kennylujan42 | 1:9e9a864e45ca | 13 | #define NUMBUTS 2 |
kennylujan42 | 1:9e9a864e45ca | 14 | #define LEDON false |
kennylujan42 | 1:9e9a864e45ca | 15 | #define LEDOFF true |
kennylujan42 | 1:9e9a864e45ca | 16 | #define TSILIMIT 0.99 |
kennylujan42 | 1:9e9a864e45ca | 17 | #define LCDCHARLEN 100 |
scohennm | 0:ba4f1298c690 | 18 | |
scohennm | 0:ba4f1298c690 | 19 | |
scohennm | 0:ba4f1298c690 | 20 | AnalogIn LightSensor(PTE22); // define light sensor |
scohennm | 0:ba4f1298c690 | 21 | PwmOut redLed(LED_RED); |
kennylujan42 | 1:9e9a864e45ca | 22 | PwmOut greenLed(LED_GREEN); |
kennylujan42 | 1:9e9a864e45ca | 23 | SLCD slcd; |
kennylujan42 | 1:9e9a864e45ca | 24 | Serial pc(USBTX, USBRX); |
kennylujan42 | 1:9e9a864e45ca | 25 | Timer LEDTimer; |
kennylujan42 | 1:9e9a864e45ca | 26 | Ticker tick; |
scohennm | 0:ba4f1298c690 | 27 | |
kennylujan42 | 1:9e9a864e45ca | 28 | int ledState = LEDON; |
kennylujan42 | 1:9e9a864e45ca | 29 | int buttonStates[NUMBUTS] = {BUTDOWN,BUTUP}; |
kennylujan42 | 1:9e9a864e45ca | 30 | DigitalIn buttons[NUMBUTS] = {rightButton, leftButton}; |
kennylujan42 | 1:9e9a864e45ca | 31 | DigitalOut LEDs[NUMBUTS] = {LED_GREEN, LED_RED}; |
scohennm | 0:ba4f1298c690 | 32 | |
kennylujan42 | 1:9e9a864e45ca | 33 | volatile bool ticked; |
kennylujan42 | 1:9e9a864e45ca | 34 | float tsidata; |
kennylujan42 | 1:9e9a864e45ca | 35 | |
kennylujan42 | 1:9e9a864e45ca | 36 | void LCDMess(char *lMess){ |
kennylujan42 | 1:9e9a864e45ca | 37 | slcd.Home(); |
kennylujan42 | 1:9e9a864e45ca | 38 | slcd.clear(); |
kennylujan42 | 1:9e9a864e45ca | 39 | slcd.printf(lMess); |
kennylujan42 | 1:9e9a864e45ca | 40 | } |
kennylujan42 | 1:9e9a864e45ca | 41 | |
kennylujan42 | 1:9e9a864e45ca | 42 | void tickFunction( void ) { |
kennylujan42 | 1:9e9a864e45ca | 43 | ticked = true; |
kennylujan42 | 1:9e9a864e45ca | 44 | } |
kennylujan42 | 1:9e9a864e45ca | 45 | |
kennylujan42 | 1:9e9a864e45ca | 46 | int main(){ |
kennylujan42 | 1:9e9a864e45ca | 47 | int i; |
scohennm | 0:ba4f1298c690 | 48 | float lightVal; |
scohennm | 0:ba4f1298c690 | 49 | unsigned short lightWord; |
kennylujan42 | 1:9e9a864e45ca | 50 | AnalogIn LightSensor(LIGHTSENSORPORT); |
kennylujan42 | 1:9e9a864e45ca | 51 | float lightData; |
kennylujan42 | 1:9e9a864e45ca | 52 | char lcdData[LCDCHARLEN]; |
kennylujan42 | 1:9e9a864e45ca | 53 | ticked = false; |
kennylujan42 | 1:9e9a864e45ca | 54 | tick.attach(&tickFunction, 0.10); |
kennylujan42 | 1:9e9a864e45ca | 55 | TSISensor tsi; |
scohennm | 0:ba4f1298c690 | 56 | |
scohennm | 0:ba4f1298c690 | 57 | pc.printf(PROGNAME); |
scohennm | 0:ba4f1298c690 | 58 | |
kennylujan42 | 1:9e9a864e45ca | 59 | int timeToChangeDF = DATATIME; |
kennylujan42 | 1:9e9a864e45ca | 60 | LEDTimer.start(); |
kennylujan42 | 1:9e9a864e45ca | 61 | LEDTimer.reset(); |
kennylujan42 | 1:9e9a864e45ca | 62 | |
scohennm | 0:ba4f1298c690 | 63 | while (true) { |
scohennm | 0:ba4f1298c690 | 64 | lightVal = LightSensor.read(); |
scohennm | 0:ba4f1298c690 | 65 | lightWord = LightSensor.read_u16(); |
scohennm | 0:ba4f1298c690 | 66 | redLed = lightVal; |
kennylujan42 | 1:9e9a864e45ca | 67 | greenLed = lightVal; |
kennylujan42 | 1:9e9a864e45ca | 68 | |
kennylujan42 | 1:9e9a864e45ca | 69 | for (i=0; i<NUMBUTS; i++){ |
kennylujan42 | 1:9e9a864e45ca | 70 | LEDs[i] = LEDON; |
kennylujan42 | 1:9e9a864e45ca | 71 | |
kennylujan42 | 1:9e9a864e45ca | 72 | if(buttons[i] == BUTDOWN) { |
kennylujan42 | 1:9e9a864e45ca | 73 | if (i == 1){ |
kennylujan42 | 1:9e9a864e45ca | 74 | while(1){ |
kennylujan42 | 1:9e9a864e45ca | 75 | tsidata = tsi.readPercentage(); |
kennylujan42 | 1:9e9a864e45ca | 76 | if(ticked){ |
kennylujan42 | 1:9e9a864e45ca | 77 | if (tsidata > TSILIMIT){ |
kennylujan42 | 1:9e9a864e45ca | 78 | greenLed = 0.0; |
kennylujan42 | 1:9e9a864e45ca | 79 | redLed = 0.0; |
kennylujan42 | 1:9e9a864e45ca | 80 | } else { |
kennylujan42 | 1:9e9a864e45ca | 81 | pc.printf("\n Position %f\n\r", tsidata); |
kennylujan42 | 1:9e9a864e45ca | 82 | sprintf (lcdData,"%0.4f",tsidata); |
kennylujan42 | 1:9e9a864e45ca | 83 | LCDMess(lcdData); |
kennylujan42 | 1:9e9a864e45ca | 84 | greenLed = 1.0 - tsidata; |
kennylujan42 | 1:9e9a864e45ca | 85 | redLed = 1.0 - tsidata; |
kennylujan42 | 1:9e9a864e45ca | 86 | } |
kennylujan42 | 1:9e9a864e45ca | 87 | ticked = false; |
kennylujan42 | 1:9e9a864e45ca | 88 | } else { |
kennylujan42 | 1:9e9a864e45ca | 89 | |
kennylujan42 | 1:9e9a864e45ca | 90 | if (LEDTimer.read_ms() > timeToChangeDF){ // check for timer time out transtion |
kennylujan42 | 1:9e9a864e45ca | 91 | lightData = (1.0 - LightSensor.read()); // show as increasiing with increasing intensity |
kennylujan42 | 1:9e9a864e45ca | 92 | sprintf(lcdData,"%4.3f",lightData); |
kennylujan42 | 1:9e9a864e45ca | 93 | LCDMess(lcdData); |
kennylujan42 | 1:9e9a864e45ca | 94 | timeToChangeDF = DATATIME; |
kennylujan42 | 1:9e9a864e45ca | 95 | LEDTimer.reset(); |
kennylujan42 | 1:9e9a864e45ca | 96 | } |
kennylujan42 | 1:9e9a864e45ca | 97 | if (lightVal == 0.900){ |
kennylujan42 | 1:9e9a864e45ca | 98 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 99 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 100 | } |
kennylujan42 | 1:9e9a864e45ca | 101 | if (lightVal == 0.800){ |
kennylujan42 | 1:9e9a864e45ca | 102 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 103 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 104 | } |
kennylujan42 | 1:9e9a864e45ca | 105 | if (lightVal == 0.700){ |
kennylujan42 | 1:9e9a864e45ca | 106 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 107 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 108 | } |
kennylujan42 | 1:9e9a864e45ca | 109 | if (lightVal == 0.600){ |
kennylujan42 | 1:9e9a864e45ca | 110 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 111 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 112 | } |
kennylujan42 | 1:9e9a864e45ca | 113 | if (lightVal == 0.500){ |
kennylujan42 | 1:9e9a864e45ca | 114 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 115 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 116 | } |
kennylujan42 | 1:9e9a864e45ca | 117 | if (lightVal == 0.400){ |
kennylujan42 | 1:9e9a864e45ca | 118 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 119 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 120 | } |
kennylujan42 | 1:9e9a864e45ca | 121 | if (lightVal == 0.300){ |
kennylujan42 | 1:9e9a864e45ca | 122 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 123 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 124 | } |
kennylujan42 | 1:9e9a864e45ca | 125 | if (lightVal == 0.200){ |
kennylujan42 | 1:9e9a864e45ca | 126 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 127 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 128 | } |
kennylujan42 | 1:9e9a864e45ca | 129 | if (lightVal == 0.100){ |
kennylujan42 | 1:9e9a864e45ca | 130 | redLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 131 | greenLed = 1.0 + lightVal; |
kennylujan42 | 1:9e9a864e45ca | 132 | } |
kennylujan42 | 1:9e9a864e45ca | 133 | } |
kennylujan42 | 1:9e9a864e45ca | 134 | } |
kennylujan42 | 1:9e9a864e45ca | 135 | } |
kennylujan42 | 1:9e9a864e45ca | 136 | } |
kennylujan42 | 1:9e9a864e45ca | 137 | } |
kennylujan42 | 1:9e9a864e45ca | 138 | #ifdef PRINTDEBUG |
kennylujan42 | 1:9e9a864e45ca | 139 | pc.printf("LS => %1.3f %5d \r\n", lightVal, lightWord); |
kennylujan42 | 1:9e9a864e45ca | 140 | #endif |
kennylujan42 | 1:9e9a864e45ca | 141 | wait(DATATIME); |
kennylujan42 | 1:9e9a864e45ca | 142 | |
kennylujan42 | 1:9e9a864e45ca | 143 | } |
kennylujan42 | 1:9e9a864e45ca | 144 | |
scohennm | 0:ba4f1298c690 | 145 | } |