#2 Re: Програмування Arduino » Кормушка для птиц по СМС на 8266 » 2019-11-12 02:48:16

попробуйте параллельно емкости на плате SIM800 прицепить еще порядка 1000мкф.
Как то так:
20191112-093807.jpg

#3 Re: Програмування Arduino » Кормушка для птиц по СМС на 8266 » 2019-11-12 02:29:07

dmb пише:
г0сть пише:

А без Sim800 никак не обойтись? У птиц wi-fi нет?

Надо, чтобы управляли кормушкой массовые пользователи)

Только SMS !!! причем платные!
Птичкам зёрнышко, а в карман копеечка. smile smile smile

#4 Re: Програмування Arduino » Ловим импульсы » 2019-11-11 10:25:45

Я не понял, что вы хотели сказать, но вопрос про импульсы решен!
Начинается со строки:
if(digitalRead(IMP)==LOW)     //если есть импульсы
И ни какой разницы нет какие импульсы хоть 1 кгц хоть 10.
как только вход IMP = 1 начинается счет в 100 секунд.

#5 Re: Програмування Arduino » Ловим импульсы » 2019-11-11 06:54:27

Сделал все таки на digitalRead  без pulseIn. Получилось именно то, что и требовалось.
Но...именно с простой логикой , где казалось проблем не возникнет оказалась засада.
Вот привожу скетч( не нашел как включить нумерацию строк)

#define U17v 3   // 12 PIC
#define in540 6  // 5 PIC 
#define kz 2     // 13 PIC
#define FUN 7    // 7 PIC 
#define IMP 5    // 3 PIC


byte val;        //переменная времени 
byte flag;       //флаг состояния FUN
long previousMillis = 0;

void setup() 
{

  pinMode(U17v, OUTPUT);
  pinMode(FUN, OUTPUT);                     
  pinMode(in540, INPUT_PULLUP);   //   1/0 540v
  pinMode(kz, INPUT_PULLUP);      //   1/0 КЗ на вых 5С 
  pinMode(IMP, INPUT_PULLUP);     //   1/0 ПУСК
}

void loop() 
{
  boolean v540 = digitalRead(in540);
  boolean KZout = digitalRead(kz);
  
  if (v540 || !KZout)
  {
  digitalWrite(U17v, LOW);
  }
  else
  {
  digitalWrite(U17v, HIGH);
  }

  if(digitalRead(IMP)==LOW)     //если есть импульсы 
  { 
    previousMillis = millis();
    flag=1;
    val=0;
  }
  if(flag==1)
  {
    digitalWrite(FUN,HIGH);
  }  
  if(flag==1&&digitalRead(IMP)==HIGH)
  {
    if (millis() -previousMillis >1000)
    { 
     previousMillis = millis();     
     val++;                 // работает счет, FUN включен 
    }  
  }
  if(val>=100)             //через 100 сек FUN выключается
  { 
    digitalWrite(FUN,LOW);
    flag=0;
  }  
}

Как видно из скетча,  выводы in540, kz и U17v связаны между собой:

  if (v540 || !KZout)
  {
  digitalWrite(U17v, LOW);
  }
  else
  {
  digitalWrite(U17v, HIGH);
  }

но, как оказалось на входе kz , ноль действует всего в течении 2х секунд. Соответственно и на выходе U17v столько же, а необходимо, чтобы ноль на U17v продолжал висеть до перезагрузки ардуино.
Уже голову сломал, но так и не смог добиться желаемого результата.
Подтолкните плиз в нужном направлении.

#6 Re: Програмування Arduino » Ловим импульсы » 2019-10-23 01:55:38

Спасибо за подсказку. pulseIn я в принципе и хотел использовать, но на всякий случай всё же решил задать вопрос более продвинутым пользователям. Может есть  что то более подходящее для такой задачи. 
Точность тут особо и не нужна.
Вообще эта конструкция должна заменить PIC16F505 в частотном преобразователе.
Должно быть 6 входов и 3 выхода. 3 входа и 2 выхода завязаны между собой простой логикой  И ИЛИ.
А еще на 3 входа  начинают поступать импульсы (3х фазный частотник) при пуске частотника и сразу должен включиться вентилятор охлаждения.
После СТОПа импульсы идти соответственно перестают и через 1-2 минуты вентилятор выключается.

#7 Програмування Arduino » Ловим импульсы » 2019-10-22 12:50:34

monser
відповідей: 8

Имеется такая задача: включить  релюшку, при поступлении импульсов порядка 1-2 кгц на вход ардуино.
Что то не соображу как справиться с этой задачей. digital read похоже что не пойдет. Толкните плиз в нужном направлении.

Підвал форуму