TimerInterrupt

crecker
Offline
Зарегистрирован: 15.12.2013

Привет,

Хочу контролировать с помощью световото барьера количество оборотов мотора. Идея такая: Каждые 10 секунд запускается TimerInterrupt и считает количество импульсов, получаемых от сенсора за секунду

Вопрос: TimerInterrupt для этого годится?  У меня уже есть  обычный Interrupt, для счета общих  циклов, привязаен к 2 ноге контроллера, привязывается TimerInterrupt тогда тоже к этой же ноге?

Спасибо

crecker
Offline
Зарегистрирован: 15.12.2013

Народ, помогите правильно вставить Timer в 20 строчку, не совсем понятно как правильно его использовать



#include <TimerOne.h>
 #define PWM_pin   3
 #define Motor_pin 4
# define  Lightsensor 2 
 volatile unsigned long x = 0;
    byte pwm = 255; 
     int Lightsensor =2;
	 
	void setup()
	{
	  Serial.begin(9600);
	 
	  pinMode(PWM_pin, OUTPUT);
	  pinMode(Motor_pin, OUTPUT);
          pinMode(Lightsensor, INPUT); // фототранзистор для контроля оборотов мотора
	  attachInterrupt(0, count, RISING);
          Timer1.initialize(500000);
	}
	 
	void loop ()
        {
          int x1=x;  // Interrupt импульс  до таймера
                         // Timer 
          int x2=x;  //  Interrupt импульс после таймера
          
          if ( x2-x1==0){   // Cравнение 2 импульсов, если равны, значит датчик не     
          pwm=0;             //  фиксирует оборотов, остановить мотор
          }
          
          if ( x2-x1 <2){     // Если разница меньше нужного значения, ускорить мотор
          pwm++ ; }
          
          if ( x2-x1==5){   //     Если разница больше нужного значения, замедлить  мотор
          
          pwm--;}
          
         }
	 
	void count()
	{
	  x++;
         
         Serial.println(x);   //  Показывать общее количество циклов. 
	}
}