Все это не правильно, нужно измерять в фоновом режиме и что бы измерения не зависели от выполняемого кода. В примере на выходе показывает частоту в Гц, минимально измеряемая частота 4Гц
Вот пример :
Код:#include <util/delay.h> volatile unsigned int tachBuf; unsigned long tachValue; ISR(TIMER1_CAPT_vect) { TCNT1 = 0; tachBuf = ICR1+2; } //******************************************************************** void setup() { pinMode(8, INPUT); //Вход для импульсов тахометра pinMode(6, OUTPUT);//выход ШИМ TCCR0B = TCCR0B & 0b11111000 | 5;//частота ШИМ. Для проверки тахометра analogWrite(6, 128); //Запустить ШИМ digitalWrite(8, HIGH); // включить подтяжку входа Serial.begin(115200); TIM_Init();//инициализация таймера _delay_ms(300); } //******************************************************************** void loop() { cli(); tachValue =250000/tachBuf; Serial.print("freq="); Serial.println(tachValue,DEC); tachBuf=1; sei(); _delay_ms(300); } //******************************************************************** void TIM_Init(void) { TIMSK1=(1<<ICIE1); TCCR1A=(0<<COM1A1)|(0<<COM1A0)|(0<<WGM11)|(0<<WGM10); TCCR1B=(1<<ICNC1)|(1<<ICES1)|(0<<WGM13)|(0<<WGM12)|(0<<CS12)|(1<<CS11)|(1<<CS10); TCNT1 = 0;




 
			
			 
					
						 
					
						 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				 
					
					
					
						 Ответить с цитированием
  Ответить с цитированием