Счётчик входных сигналов

crow62
Offline
Зарегистрирован: 18.02.2020

Здравствуйте, нужен счётчик сигналов с дисплеем по такой логике- поступил импульсный сигнал на длительное время( минута примерно) тупо как питание, и пропал, и вот этот сигнал он должен посчитать за единицу. Поступил спустя час например такой же сигнал- устройство прибавило, и на дисплее уже '2'. Полный ноль в этом, нужна помощь, как все сделать с нуля и что для этого нужно

microsystems
microsystems аватар
Offline
Зарегистрирован: 25.01.2020

Чтобы сравнивать "такой/не такой" надо сначала определить что есть "такой", а что "не такой". 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нужны:  источник сигнала, Ардуина, экранчег и немношко строк на Си.  Всё.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

crow62 пишет:
Здравствуйте, нужен счётчик сигналов с дисплеем по такой логике- поступил импульсный сигнал на длительное время( минута примерно) тупо как питание, и пропал, и вот этот сигнал он должен посчитать за единицу. Поступил спустя час например такой же сигнал- устройство прибавило, и на дисплее уже '2'. Полный ноль в этом, нужна помощь, как все сделать с нуля и что для этого нужно

У мня так щёччики воды работают, только там сигнал - это нуль. Могу за тыщу к твоей задаче приспособить. 

 

b707
Offline
Зарегистрирован: 26.05.2017

crow62 пишет:
поступил импульсный сигнал на длительное время( минута примерно) тупо как питание

так все-таки "импульсный" или "тупо как питание"? - вы разницу между этим понимаете?

sadman41
Offline
Зарегистрирован: 19.10.2016

У него там сухой контакт, поди, поэтому и "как питание".

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

так все-таки "импульсный" или "тупо как питание"? 

Вот смари, у мня счетчики Геррида с инпульсным выходом, там магнит стоит и геркон, частота - 1 замыкание на 10 литров. То есть, когда он к нулю подошел, геркон замыкается, а разомкнуться он может, только когда литра три-четыре пройдёт и магнит уехает из зоны дествия.  Причем размыкание может произойти и через несколько секунд и через несколько дней, если я в этот момент воду закрыл и уехал нахрен, в пампасы.  Тоись длительность импульса оооочень сильно варьируется, я пока победил эти щёччики, всю голову сломал.  Зато теперь считает правильно, даже если свет отключали.  :) 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Вот смари, у мня счетчики Геррида с инпульсным выходом,

по мне так это не "импульсный" выход, а логический

Импульсный - это когда меандр там с частотой в сотни и тысячи герц

crow62
Offline
Зарегистрирован: 18.02.2020

Плохо разбираюсь во всем этом, наверное логический, в один момент времени включилось питание 5 вольт к примеру, и через минуту выключилось, и вот этот сигнал он должен посчитать за единицу, потом через полчаса к примеру повторится, и уже  двойка на дисплее появится, смысл такой. Я так понимаю это надо завести на аналоговый вход  уно и как то в коде прописать? Типа если поступил на тот то вход какой то уровень, то вывести на жк экран 1, и зациклить чтоб приращение было, че то в таком духе

crow62
Offline
Зарегистрирован: 18.02.2020

Нифига не понял)))) но длительность  сигнала не важна мне кажется, главное на появление сигнала чтоб схема срабатывала и считала

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

crow62 пишет:

Типа если поступил на тот то вход какой то уровень, то вывести на жк экран 1, и зациклить чтоб приращение было, че то в таком духе

Не просто уровень, а фронт, чтоб приращение было только когда сигнал с 0 до 5 Вольт падымаеца, а когда взат падает - то пофик, до следующего фронта. Или наоборот, спад считать надо, с 5Вольт до нуля? 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Готов написать
kakmycmail@gmail.com

promavto
promavto аватар
Offline
Зарегистрирован: 30.04.2013

Простое прерывание обеспечит регистрацию изменения сигнала. А фронт это будет или спад, или фронт/спад - все это есть в настройках прерывания.

crow62
Offline
Зарегистрирован: 18.02.2020
void loop() {
float temp(analogRead(A0*5./1024)); 
  int y=1;
  int i=0;
  boolean z= true;
  for(int x=0;x<5;x++){
    if(temp>500){
    lcd.print(y);
    delay(1000);
      i=y-1;
      z= false;
    } else{
      if (y-i==1 && z==false){
      y=y+1;
      }
      else{
      continue;
      }
    }
  }
 
такой вот написали код, вроде должен срабатывать, когда новый порог (500) привысит, и записывать 2, но почему то опять единицу записывает(не приращивает) ((
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

мда.  тебя адманули, это не код. 

crow62
Offline
Зарегистрирован: 18.02.2020

почему? логика то правильная

SAB
Offline
Зарегистрирован: 27.12.2016

Если это для студенческого проекта, то тогда продолжайте мучатся изобретая колесо. А так уже все придумали http://www.5v.ru/h2-7ea3r.htm давным давно. 

b707
Offline
Зарегистрирован: 26.05.2017

crow62 пишет:

почему? логика то правильная

нет в этом коде логики совсем. Тут 40 ошибок на 20 строк

Что, неужели ты за это денег заплатил? Или это твой сын второгодник писал?

b707
Offline
Зарегистрирован: 26.05.2017

SAB пишет:

Если это для студенческого проекта, то тогда продолжайте мучатся изобретая колесо. А так уже все придумали http://www.5v.ru/h2-7ea3r.htm давным давно. 

нафик надо, код пишется за 10 минут

crow62
Offline
Зарегистрирован: 18.02.2020

b707 пишет:

crow62 пишет:

почему? логика то правильная

нет в этом коде логики совсем. Тут 40 ошибок на 20 строк

Что, неужели ты за это денег заплатил? Или это твой сын второгодник писал?

заплатил чуть знакомому, раз такой знаток могли бы и подправить)

crow62
Offline
Зарегистрирован: 18.02.2020

почти все получилось, когда потенциометр крутишь то больше то меньше 500, все логически правильно работает, только не приращивает почему то

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

crow62 пишет:

заплатил чуть знакомому, раз такой знаток могли бы и подправить)

А почему, если заплатил знакомому, то править должны мы здесь? 

crow62
Offline
Зарегистрирован: 18.02.2020

не должны

b707
Offline
Зарегистрирован: 26.05.2017

crow62 пишет:
почти все получилось, когда потенциометр крутишь то больше то меньше 500, все логически правильно работает, только не приращивает почему то

звучит примерно так "шикарный спасжилет, только тонет почему-то"

crow62
Offline
Зарегистрирован: 18.02.2020

b707 пишет:

crow62 пишет:
почти все получилось, когда потенциометр крутишь то больше то меньше 500, все логически правильно работает, только не приращивает почему то

звучит примерно так "шикарный спасжилет, только тонет почему-то"

))))))))))))) поправите за деньги?

SAB
Offline
Зарегистрирован: 27.12.2016

To b707 ...нафик надо, код пишется за 10 минут...

Код,- это не готовое изделие. Его надо куда то поместить. Сделать корпус ну и т.д. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

я тебе вчера предлагал надёжный, вылизанный, выстраданный и политый слезами рабочий код по подсчету импульсов любой длительности, только што прям обкатанный на еще дымящейся макетке, на кристально лжывом С++, всего за 1000.  Ты нашёл какого-то полуграмотного студента.  Ну, зато дёшево. 

b707
Offline
Зарегистрирован: 26.05.2017

crow62 пишет:

))))))))))))) поправите за деньги?

соглашайся на предложение DetSimena. у него уже все готово.

Я, признатся, несколько расхвастался, говоря что там работы на 10 минут...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Не, я вчера предлагал. Сегодня мне с такими закащиками не по пути.

crow62
Offline
Зарегистрирован: 18.02.2020

У меня столько нет пока что, еще плату с дисплеем купить надо (

karamzin01
Offline
Зарегистрирован: 08.03.2018

maslachenko767@mail.ru могу взяться, пишите

ИН-18
Offline
Зарегистрирован: 09.03.2020

crow62 пишет:
Здравствуйте, нужен счётчик сигналов с дисплеем по такой логике- поступил импульсный сигнал на длительное время( минута примерно) тупо как питание, и пропал, и вот этот сигнал он должен посчитать за единицу. Поступил спустя час например такой же сигнал- устройство прибавило, и на дисплее уже '2'. Полный ноль в этом, нужна помощь, как все сделать с нуля и что для этого нужно

Здравствуйте. Готов выполнить заказ. Если нужна реальная помощь, а не комментарии "маститых ардуинщиков" о некорректно поставленном ТЗ, то пишите на почту lo247@inbox.ru . Обсудим :)

ПС - если делать "с нуля", то дисплеев стопятьсот, в комментах был на мой взгляд, не самый удачный и не самый дешевый вариаант, ну и т.д.  :) Вообщем помогу составить схему и написать программу "с нуля" :)

vvadim
Offline
Зарегистрирован: 23.05.2012

ИН-18 пишет:

crow62 пишет:
Здравствуйте, нужен счётчик сигналов с дисплеем по такой логике- поступил импульсный сигнал на длительное время( минута примерно) тупо как питание, и пропал, и вот этот сигнал он должен посчитать за единицу. Поступил спустя час например такой же сигнал- устройство прибавило, и на дисплее уже '2'. Полный ноль в этом, нужна помощь, как все сделать с нуля и что для этого нужно

Здравствуйте. Готов выполнить заказ. Если нужна реальная помощь, а не комментарии "маститых ардуинщиков" о некорректно поставленном ТЗ, то пишите на почту lo247@inbox.ru . Обсудим :)

ПС - если делать "с нуля", то дисплеев стопятьсот, в комментах был на мой взгляд, не самый удачный и не самый дешевый вариаант, ну и т.д.  :) Вообщем помогу составить схему и написать программу "с нуля" :)

 

заказчик выше написал

У меня столько нет пока что, еще плату с дисплеем купить надо (

вы наверно уложитесь в 200 ?

ИН-18
Offline
Зарегистрирован: 09.03.2020

Цитата:

вы наверно уложитесь в 200 ?

Для корректного определения стоимости заказа необходимо обсудить детали технического задания, а именно: конфигурацию системы,требуемый алгоритм работы программы ("логику" в терминологии заказчика) и набор тестовых данных ,на которых разрабатываемое ПО должно проходить тесты.

Кроме того, следует определить срок сдачи проекта, наличие каких=то промежуточных этапов и т.д.

Насчет "у меня столько нет" - ну могу поделиться достаточно банальными мыслями. Я бы к примеру хотел себе купить осцЫлограф с частотой дискретизации 100 МГц, но "у меня столько нет". Ну что ж..., придется отложить покупку ослика до лучших времён или ... изменить ТЗ (ослик с 10 МГц или советский аналоговый осциллограф :) ) Примерно так же и с заказом разработки каких-либо embed-систем.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Если вылизывать код не надо, как у Деда, то можно и за 200 )))

#define SIGNAL 2
#define LCD_I2C // Если дисплей подключен по I2C

#ifdef LCD_I2C
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4); // A0,A1,A2 -HIGH
/*
 * A0 A1 A2 PCF8574A
 * 0  0  0  - 0x38
 * 1  0  0  - 0x39
 * 0  1  0  - 0x3A
 * 1  1  0  - 0x3B
 * 0  0  1  - 0x3C
 * 1  0  1  - 0x3D
 * 0  1  1  - 0x3E
 * 1  1  1  - 0x3F 
 * 
 */
#else
#include <LiquidCrystal.h>
// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
#endif

// Требуемые переменные
volatile uint16_t signale = 0;
static bool lastvalue = false;

void setup() {
#ifdef LCD_I2C
 lcd.begin();
 #else
 lcd.begin(16, 2);
#endif

pinMode(SIGNAL,INPUT);
 lcd.setCursor(0, 0);
 lcd.print("   SCHETCHIK   ");
 lcd.setCursor(6, 1);
 lcd.print(signale);
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("   SCHETCHIK   ");
  if (digitalRead(SIGNAL) != lastvalue) {
  if (digitalRead(SIGNAL)) {signale++;}
  lastvalue = !lastvalue;
  lcd.setCursor(6, 1);
  lcd.print("           ");
  lcd.setCursor(6, 1);
  lcd.print(signale);
  }
  delay(100);
}