Eye Blink Detection Project Code problem

You can see the code we prepared for our project below.

The purpose of this code is to classify the input from IRsensorPin as 'blink (high)' or 'not blink (low)' according to the specified threshold;
only when blink is detected (high) outputs square pulse from Pin 9 from PWM mode.

I think the code should work and I can't see any errors but we are not getting the output we want.
We would be very happy if you could help.

#include <PWM.h>

int IRsensorPin = 0;// IR Sensor
int LedPin = 13; // Visualization
int latestLevel = 0; // Previous IR level
int latestChange = 0;// Change in IR level
int changeThreshold = 5;// How hard a rising edge do we need?

int led_pin_pwm= 9;
int frequency = 150;

bool blinkCheckingFlag = true; //blink checking

int duration = 100;  // Length of visualization
float startPoint = 0;// Last start of visualization

void setup() {

  Serial.begin(9600); // Debug constructor
  pinMode(13,OUTPUT);  // Visualizatio constructor

//stimulation functions
  SetPinFrequencySafe(led_pin_pwm, frequency);


void loop() {
   // Read Data
  int IRsensorValue = analogRead(IRsensorPin);
     // look for rising edges
  latestChange = IRsensorValue - latestLevel;
  latestLevel = IRsensorValue;
  if (blinkCheckingFlag == true && latestChange >= changeThreshold)

    digitalWrite( LedPin, HIGH ); //detection

    startPoint = millis(); //start point value

    pwmWrite(led_pin_pwm, 127);// stimulation

  else if ( blinkCheckingFlag = false &&  millis() >= startPoint + duration )
    digitalWrite( LedPin, LOW ); //no detection
    pwmWrite(led_pin_pwm, 0); //no stimulation



Have you forgotten something about blinkCheckingFlag?

millis() >= startPoint + duration

NO, the unsigned subtraction is needed to always work.

(millis() - (unsigned long)startPoint >= (unsigned long)duration)

Correct except WHY is startPoint a float and duration an int?

That is an assignment '=' not a comparision '=='

I tried that way it didnt work

Yea maybe thats why i will also try that