title: Arduino C++ calculating trigger points
body: <p>Can someone please help me with code? I have a 24 teeth trigger wheel. Every tooth is registered by hall sensor and I need that Arduino simulate 36 pulse output of that corresponding 24 pulse input.</p>
  
  <p>Here is my code with delayMicroseconds, but I can`t use delayMicroseconds, because Arduino doesn't understand bigger than 16k micros delay. </p>
  
  <pre><code>const int  hall = 2;    // hall sensor
  const int ledPin = 13;       // the pin that the LED is attached to
  
  // Variables will change:
  int teethCounter = 0;
  int hallState = 0;
  int lasthallState = 0;
  long cycles=0;
  boolean cycle = false;
  unsigned long microsStart = 0;
  unsigned long microsStop = 0;
  unsigned long usElapsed = 0;
  unsigned long usElapsedUp = 0;
  unsigned long usInterval;
  
  
  void setup() {
  // initialize the button pin as a input:
  pinMode(hall, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  // initialize serial communication:
  Serial.begin(9600);
  }
  
  
  void loop() {
  hallState = digitalRead(hall);
  if(cycle==true){
  microsStart=micros();
  }
  if(cycle==true){
  usInterval = usElapsedUp/72;
  for (int i=0; i &lt;= 36; i++){
  digitalWrite(13,HIGH);
  delayMicroseconds(usInterval);
  digitalWrite(13,LOW);
  delayMicroseconds(usInterval);
  cycle = false;
  }
  }
  
  // compare the hallState to its previous state
  if (hallState != lasthallState) {
  // if the state has changed, increment the counter
  if (hallState == HIGH) {
    teethCounter++;
    if(teethCounter==24){
      cycle = true;
      cycles++;
      teethCounter=0;
      usElapsedUp = usElapsed;
  
    }
  
    Serial.print("Tooth count: ");
    Serial.print(teethCounter);
    Serial.print(" Cycles: ");
    Serial.print(cycles);
    Serial.print(" Time: ");
    Serial.print(usElapsedUp);
    Serial.print(" Interval: ");
    Serial.println(usInterval);
    }
     microsStop=micros();
     usElapsed=microsStop-microsStart;
    }
   // save the current state as the last state,
   //for next time through the loop
  
     lasthallState = hallState;
     }
  </code></pre>
  
  <p>How can I calculate and from where can I take trigger points?</p>
  
  <pre><code>If(event happens==true){
  digitalWrite(13,HIGH);
  }
  If(event happens==false){
  digitalWrite(13,LOW);
  }
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/jNgRV.jpg" rel="nofollow noreferrer">If it helps to understand here is a block diagram</a></p>