FRDM_touch2RGB
main.cpp
- Committer:
- foivosHrist
- Date:
- 2014-10-07
- Revision:
- 0:9f96889b0328
File content as of revision 0:9f96889b0328:
// touch2RGB
//program for FRDM-KL25Z
//each touch on the touch sensor switches embedded led between Red Green and Blue colours
#include "mbed.h"
#include "TSISensor.h"
const float TOUCH_THRESHOLD=0.5; //sensor returns analog value from 0.0(no touch) to 1.0(full touch) to determine when there is a touch
enum colour { RED=0,GREEN,BLUE};
bool analog2dig(float );
void setColour(colour);
DigitalOut r (LED_RED);
DigitalOut g (LED_GREEN);
DigitalOut b (LED_BLUE);
colour currentColour=RED;
Serial pc(USBTX,USBRX); //serial connection with pc
TSISensor tsi; //touchSensor
int main() {
bool previousState=analog2dig(tsi.readPercentage());
bool currentState;
setColour(currentColour); //set initial colour
pc.printf("begin - initial state=%d\n",previousState);
while(1){
currentState=analog2dig(tsi.readPercentage());
//pc.printf("state=%d\n",currentState);
if(previousState==false && currentState==true){ //touch detected
switch (currentColour){
case RED:
setColour(GREEN);
break;
case GREEN:
setColour(BLUE);
break;
case BLUE:
setColour(RED);
break;
};//end switch
}//end if
previousState=currentState;
wait(0.1);
}
}
//---------------------------------------------
void setColour(colour col){
switch(col){
case RED:
r=0; // 0 enables the led
g=1; // 1 disables the led
b=1;
currentColour=RED;
break;
case GREEN:
r=1;
g=0;
b=1;
currentColour=GREEN;
break;
case BLUE:
r=1;
g=1;
b=0;
currentColour=BLUE;
break;
}
return;
}
//-----------------------------------------------
bool analog2dig(float analogRead){
return (analogRead>=TOUCH_THRESHOLD)?true:false;
}