Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: otakus on Nov 15th, 2012  |  syntax: C++  |  size: 1.87 KB  |  views: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #define led 13
  2.  
  3. enum {sample_state,high_state,low_state};                               //Enumerate(give values to) the variables so they are 0,1,2 respectivly
  4. unsigned int state=sample_state;
  5. unsigned int val1,val2,val3,mVal,hiVal,loVal;
  6. unsigned int timer;
  7.  
  8. /*----------------------------------------Main loop--------------------------------------*/
  9. void setup() {
  10.         Serial.begin(115200);
  11.         pinMode(13,OUTPUT);
  12. }
  13.  
  14. void loop() {
  15.         switch(state){                                                                  //There are 3 different states that take place, take sample from inputs, set high duration, set low duration
  16.                 case sample_state:
  17.                         val1 = analogRead(pwmPin);
  18.                         val2 = 1023 -analogRead(pwmPin);
  19.                         val3 = analogRead(freqPin);
  20.  
  21.                         mVal = map(Val3,0,1023,60,2000);                //Mapped from 60-2000millisec
  22.                         hiVal = map(Val1,0,1023,0,mVal);
  23.                         loVal = map(Val2,0,1023,0,mVal) +1;
  24.                        
  25.                         bpm = (2000 / mVal) * tempoMin;                 // tempoMin = 30
  26.                         Serial.print(bpm);
  27.                        
  28.                         state=high_state;                                               //We have inputs, next we go on to high state mode
  29.                         digitalWrite(led,HIGH);                                 //Set the pin high as the next state is just a timer
  30.                         timer=millis();                                                 //Set timer to the time when this code block finishes
  31.                         break;
  32.                 case high_state:                                                                       
  33.                         if(millis()>=timer+hiVal){                              //Sit in this state until the timer threashold reaches the end of the high state       
  34.                           state=state_low;                                              //Move on to low state tmer
  35.                           digitalWrite(led,LOW);                                //Set pin low
  36.                           timer=millis();                                               //Reset timer
  37.                         }
  38.                         break;
  39.                 case low_state:                        
  40.                         if(millis()>=timer+loVal){                              //Sit in this state until the timer threashold reaches end of the low state
  41.                           state=state_sample;                                   //Cycle completed, go back to taking a new sample and repeat cycle
  42.                         }
  43.                         break;
  44.                 default:                                                                        //This should never happen
  45.                         Serial.println("state variable not valid");
  46.                         while(1);
  47.                         break;
  48.         }
  49.         //The rest of your code can go here and will be executed every loop cycle
  50. }
clone this paste RAW Paste Data