Счетчик импульсов

Nikita 88
Offline
Зарегистрирован: 08.11.2016

Доброе время суток,проект простейшей программы поставил меня в ступор,надеусь на вашу отзывчивость !

И так имеем кнопку и один выход с подвязоным светодиодом для визуализации , Задача при нажатии на кнопку получаем импульс Hi 100 MC lou 300 MC в количестве 50 раз и ждем нажатии нажатия кнопки если нажатия раньше окончания цикла то пауза и сброс счетчика. Задания благодарен.

Green
Offline
Зарегистрирован: 01.10.2015

В пределах разумного)) htpicc@gmail.com

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

p.masyukov скайп

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Nikita 88 пишет:

импульс Hi 100 MC lou 300 MC 

Это Мегасекунды ? :) 

Nikita 88
Offline
Зарегистрирован: 08.11.2016

Извиняюсь за свои грамотические ошибки:-)мили секунды ,этот по сути не очень важно в процессе доработки будет мжно изменить интервалы 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Смотрите, тут есть такие блюстители этих приставок, которые прям сейчас набегут и начнут кидаться какашками. 

Сколько готовы заплатить за простенький скетч ?

Nikita 88
Offline
Зарегистрирован: 08.11.2016

Видимо я не совсем разобрался с правилами данного форума,и хотел обойтись советами или пдсказками

madmax96
Offline
Зарегистрирован: 22.09.2011

"ищу исполнителя" != "ищу подсказчика"

Nikita 88
Offline
Зарегистрирован: 08.11.2016

Понятно,а сколько бы стоил такой скейч?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Это простенький скетч. Попробуйте спросить про него в другой теме. Тут тема "ищу исполнителя (за деньги)". 

Nikita 88
Offline
Зарегистрирован: 08.11.2016

Ок,спасибо

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

пусть ребенок радуется, жалко, ШтолЕ?

#define LED_pin     13
#define BUTTON_pin  10

#define DBNC      30 //интервал антидребезга в мс

#define ON_time       100   //время включения в мс
#define OFF_time      300   //...выключения
#define N_rep         50    //к-во повторов

void setup() {
  pinMode(LED_pin, OUTPUT);  //настраиваем пин светодиода
  digitalWrite(LED_pin,LOW); //изначально выключен

  pinMode(BUTTON_pin, INPUT);  //натраиваем пин кнопки
  digitalWrite(BUTTON_pin,HIGH);  //поддтяжка к питанию

//Serial.begin(19200);while(!Serial);
}

void loop() {
 static uint8_t  cyc=0;  //счетчик количества циклов мигания
 static uint32_t last_ch=0; //время последнего переключения светодиода
 
 static uint32_t debonce=0; //время, в течении которого не менялось состояние кнопки
 static boolean bp=false; //последнее состояние кнопки (истина - нажата, "button pressed")
 static boolean isfirst = false; //первый ли раз мы видим это нажатие кнопки, чтобы два разе не отреагировать
 static boolean activ=false; //состояние работаем или ждем

 uint32_t cm=millis(); //текущее время
 boolean b=(digitalRead(BUTTON_pin) == LOW); //читаем пин кнопки

if (b != bp) {debonce = cm; bp=b; isfirst=true;} //если старое состояние кнопки и новое не равны, то начинаем отсчет антидребезга

if((cm-debonce > DBNC) && bp && isfirst)   // если кнопка нажата и нажатие не обработано и прошел интервал антидребезга, то обрабатываем нажатие 
 {
  if (activ)
    {
      cyc = 0;           //сбрасываем счетчик
      activ = false;     //переходим в ожидание
      digitalWrite (LED_pin,LOW);
      //Serial.println("off");
      
    }
  else   // если раньше ждали, то ;) - дождались!
    {
      activ = true;
      digitalWrite(LED_pin,HIGH);
      last_ch = cm;
      //Serial.println("on");
    }
 isfirst = false;   
 }
if (activ) //если состояние работы, то мигаем
  {
    if (cyc < N_rep) 
      {
        //если прошло нужное время меняем состояние диода и увеличиваем счетчик 
        if ((digitalRead(LED_pin)==HIGH) && (cm-last_ch >  ON_time)) {last_ch = cm; digitalWrite(LED_pin, LOW);cyc++;} 
        if ((digitalRead(LED_pin)== LOW) && (cm-last_ch > OFF_time)) {last_ch = cm; digitalWrite(LED_pin,HIGH);}
        
      }
   else 
    {
      cyc = 0;           //сбрасываем счетчик
      activ = false;     //переходим в ожидание
      digitalWrite (LED_pin,LOW);
    }
  }
}

 

Nikita 88
Offline
Зарегистрирован: 08.11.2016

Спасибо тебе добрый человек,читаю твой скейч и понимаю сам бы точно не дошел бы ,буду тренироваться чтоб не беспокоить по пустякам.