TimerInterrupt
- Войдите на сайт для отправки комментариев
Пнд, 23/12/2013 - 02:34
Привет,
Хочу контролировать с помощью световото барьера количество оборотов мотора. Идея такая: Каждые 10 секунд запускается TimerInterrupt и считает количество импульсов, получаемых от сенсора за секунду
Вопрос: TimerInterrupt для этого годится? У меня уже есть обычный Interrupt, для счета общих циклов, привязаен к 2 ноге контроллера, привязывается TimerInterrupt тогда тоже к этой же ноге?
Спасибо
Народ, помогите правильно вставить 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); // Показывать общее количество циклов. } }