Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. float dutyCycle = 0.4;
  2. float currentDutyCycle = 0;
  3.  
  4. boolean filterOpen = false;
  5. boolean newWave = true;
  6.  
  7. int inputPin = 6;
  8. int outputPin = 5;
  9.  
  10. int lastInputValue = 0;
  11. int inputValue = 0;
  12.  
  13. unsigned long inputStartTime = 0;
  14. unsigned long inputSwitchTime = 0;
  15. unsigned long inputEndTime = 0;
  16.  
  17.  
  18. void setup() {
  19.   Serial.begin(9600);
  20.  
  21.   pinMode(inputPin, INPUT);
  22.   pinMode(outputPin, OUTPUT);
  23.  
  24.   //Wait for first signal
  25.   while ( digitalRead(inputPin) != HIGH ) {};
  26.  
  27.   Serial.println("Filter initializing!");
  28. }
  29.  
  30.  
  31. void loop() {
  32.   inputValue = digitalRead(inputPin);
  33.  
  34.   if (inputValue != lastInputValue) {
  35.     if (inputValue == 1) {
  36.       inputEndTime = millis();
  37.       Serial.println("HIGH");
  38.       currentDutyCycle = ( (float)inputSwitchTime - inputStartTime) / (inputEndTime - inputStartTime);
  39.       Serial.print("Duty cycle: ");
  40.       Serial.print(" inputStartTime: ");
  41.       Serial.print(inputStartTime);
  42.       Serial.print(" inputSwitchTime: ");
  43.       Serial.print(inputSwitchTime);
  44.       Serial.print(" inputEndTime: ");
  45.       Serial.print(inputEndTime);
  46.       Serial.print("Duty cycle: ");
  47.       Serial.println((inputSwitchTime - inputStartTime) / (inputEndTime - inputStartTime));
  48.       inputStartTime = inputEndTime;
  49.     } else { //Switch
  50.       inputSwitchTime = millis();
  51.       Serial.println("LOW");
  52.     }
  53.     lastInputValue = inputValue;
  54.   }
  55.  
  56.   if (currentDutyCycle >= dutyCycle) {
  57.     filterOpen = true;
  58.   } else {
  59.     filterOpen = false;
  60.   }
  61.  
  62.   if (filterOpen) {
  63.     digitalWrite(outputPin, inputValue);
  64.   } else {
  65.     digitalWrite(outputPin, LOW);
  66.   }
  67.  
  68.   /*
  69.   Serial.print("Input is: ");
  70.   Serial.print(inputValue);
  71.  
  72.   Serial.print(" Reading: ");
  73.   Serial.print(digitalRead(inputPin));
  74.  
  75.   Serial.print("  Duty: ");
  76.   Serial.print(currentDutyCycle);
  77.  
  78.   Serial.print(" Time data: ");
  79.   Serial.println( inputEndTime - inputStartTime );
  80.   */
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement