откуда подается импульсы к программе

Yer
Offline
Зарегистрирован: 12.02.2016

#include <MsTimer2.h>
volatile int colImp = 0;   // Счетчик импульсов
volatile int T = 0;
const int ledPin = 2;     // Подаю импульсы на 2 нож
volatile long int oldcount = 0;  // Для вычисления скорости
volatile float speed1 = 0;   // Значение скорости

void setup() {
// Таймер на 4 секунды
  Timer1.initialize(1000000);
  Timer1.attachInterrupt(Calcspeed);  
pinMode(ledPin, INPUT);
digitalWrite(ledPin, HIGH);       // Сомневаюсь что нужно HIGH или LOW
attachInterrupt(1, D2Int, RISING);// Прерывание по приходу импульса
MsTimer2::set(100,flash);       // Таймер на 1 секундe
MsTimer2::start();
Serial.begin(115200);
}

void loop() {
  if (T == 1) // Если прошла 1 секунда тогда
 { Serial.print(colImp);
 Serial.print("   ");
 Serial.println(speed1);
 delay(1000);
  colImp = 0; //обнуляем колличество накопленных импульсов
  T = 0;      // сбрасываем T
}
}
void D2Int()
{
  colImp++;   // увеличиваем на 1 колличество импульсов
}
void Calcspeed(){
  // Вычисление скорости
  speed1 = float(colImp - oldcount);
  oldcount = colImp;
}
void flash(void){
T = 1; // по прошествию 1 сек
}

inspiritus
Offline
Зарегистрирован: 17.12.2012

Для начала - принято здороваться и говорить пожалуйста, когда просите помощи.

Logik
Offline
Зарегистрирован: 05.08.2014

А далее оформить код как принято на форуме, и простите за занудство, но хороше бы услышать описание проекта и проблемы.

Yer
Offline
Зарегистрирован: 12.02.2016

Здравсвтуйте совсем запутался с проектом,на вход ардуино подается импульс П образный с частотой от 10 до 20 Гц ,мне нужно чтобы его читать и видит сколько импульсов приходит за опреленное время.вот этот проект нашел в интернете но не могу понять откуда подается импулсь к программе

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Yer пишет:

Здравсвтуйте совсем запутался с проектом,на вход ардуино подается импульс П образный с частотой от 10 до 20 Гц ,мне нужно чтобы его читать и видит сколько импульсов приходит за опреленное время.вот этот проект нашел в интернете но не могу понять откуда подается импулсь к программе

Я бы подумал что сюда:

const int ledPin = 2;     // Подаю импульсы на 2 нож

... или сюда:

pinMode(ledPin, INPUT);

 

Yer
Offline
Зарегистрирован: 12.02.2016

ну это понятно он обявляется ledPin что на 2 ножку подается сигнал импульсом но где в программе она используется вот это не могу понять 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Здравствуйте.

attachInterrupt(1, D2Int, RISING);  // Прерывание по приходу импульса на вход 1 по переднему фронту

при этом переходит переход в обработчик прерывания - D2Int где происходит инкрементирование счетчика

void D2Int()
{
  colImp++;   // увеличиваем на 1 колличество импульсов
}

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

inspiritus пишет:

attachInterrupt(1, D2Int, RISING);  // Прерывание по приходу импульса на вход 1 по переднему фронту

Предвидя дальнейшие вопросы прокомментирую:

вход 1  - вход прерывания номер 1,  attachInterrupt(1, ........ ) -  это ножка номер 2

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

trembo пишет:

inspiritus пишет:

attachInterrupt(1, D2Int, RISING);  // Прерывание по приходу импульса на вход 1 по переднему фронту

Предвидя дальнейшие вопросы прокомментирую:

вход 1  - вход прерывания номер 1,  attachInterrupt(1, ........ ) -  это ножка номер 2

Не все вопросы предвидели значит. А если вторая ножка уже занята шилдом, то тогда какая ножка должна быть и как это указать?

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Уже разобрался..  случае с моим UNO, у меня была возможность считывать только со 2-й и 3-й ножек, а они заняты шилдом.

Yer
Offline
Зарегистрирован: 12.02.2016

Не подскажете - у меня UNO говорят что 2,3 ножка заняты шилдой значит не будет приниматся импульсы или как

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А "шилда" это кто?

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Yer пишет:

Не подскажете - у меня UNO говорят что 2,3 ножка заняты шилдой значит не будет приниматся импульсы или как

Сними шилду и посмотри, что у неё на этих пинах висит. Если это дисплей 2.4"TFT с тачем и SD ридером - то эти пины точно заняты.

inspiritus
Offline
Зарегистрирован: 17.12.2012

шильды шильдам рознь . шильд может накрывать все ноги на Вашей UNO, но при этом использовать некоторые.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

inspiritus пишет:

шильды шильдам рознь . шильд может накрывать все ноги на Вашей UNO, но при этом использовать некоторые.

Дисплей на моей шилде запускается вот так:

Adafruit_TFTLCD tft(A3, A2, A1, A0, A4);

Так что мои прерывательные пины - точно заняты

Yer
Offline
Зарегистрирован: 12.02.2016

значений импульсов хочу увидеть на компе через  Serial.begin(9600) а LCD вообще не буду использовать

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

можно собирать импульсы одной дунькой и передавать их на вторую с твоим ТФТ шилдом.