Извиняюсь за такое обяснение... Вот последний рабочий скетч. На данный момент средний уровень устанавливается нажатием кнопки CentrSet (когда D12==HIGH) хотелось бы реализовать это автаматически. Тоесть при включении arduino выполнялась одноразовая команда "записать длинну сигнала в переменную centr

PHP код:
#include <TimerOne.h> 

#define BTNPIN 2    // Вход сигнала 
#define SET 12      // Кнопка CentrSet
#define L 5         // Выход на H-Мост вращение в лево 
#define R 6         // Выход на H-Мост вращение в право 

int centr 150;  //значение по умолчанию пока не будет нажата кнопка CentrSet

volatile uint16_t lengthImpulstimerCount;

void setup() 
{   

/* LOW — вызов прерывания всякий раз,  
    когда на порту низкий уровень напряжения; 
    CHANGE – прерывание вызывается при изменении  
    значения на входе; 
    RISING – вызов прерывания при изменении уровня  
    напряжения с низкого (LOW) на высокое(HIGH) 
    FALLING – вызов прерывания при изменении уровня  
    напряжения с высокого (HIGH) на низкое (LOW)*/ 
    
  
lengthImpuls=0
   
  
pinMode (BTNPININPUT);
  
pinMode (SETINPUT);  
  
pinMode (LOUTPUT); 
  
pinMode (ROUTPUT); 
  
analogWrite (L0); 
  
analogWrite (R0);

  
Timer1.initialize(10);               
  
Timer1.attachInterrupt(callback);   

  
attachInterrupt(0fireUpRISING);

void callback() {  timerCount++; } 

void loop() 

   
uint16_t li lengthImpuls
   if (
li > (centr-50) && li < (centr+50)) 
  {  
    if (
li > (centr+1)) {analogWrite (R, (li-centr)*5); analogWrite (L0);}  
    else if (
li > (centr+45)) {analogWrite (R255); analogWrite (L0);}
    
    if (
li < (centr-1)) {analogWrite (L, (centr-li)*5); analogWrite (R0);}
    else if (
li < (centr-45)) {analogWrite (L255); analogWrite (R0);}
    
    if (
li > (centr-1) && li < (centr+1)) {analogWrite (L0); analogWrite (R0);}
    
    if (
digitalRead (12)== HIGH) {centr li;}
}
}

// Функция обработки прерывания на подъем 
void fireUp() 

  
timerCount=0
  
detachInterrupt(0);
  
attachInterrupt(0fireDownFALLING); 


// Функция обработки прерывания на падение 
void fireDown() 

   
lengthImpuls timerCount
  
detachInterrupt(0); 
  
attachInterrupt(0fireUpRISING);