Например TDA7294

 Форум РадиоКот • Просмотр темы - Таймер отключения на Ардуино
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт май 23, 2017 08:05:54



Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Таймер отключения на Ардуино
СообщениеДобавлено: Пт май 19, 2017 17:00:10 
Родился

Зарегистрирован: Ср июл 27, 2016 12:34:49
Сообщений: 8
Рейтинг сообщения: 0
Здавствуйте
В программировании я не соображаю особо)
Но была поставлена задача реализовать управление сервоприводными шаровыми кранами(2 проводные) ардуиной
Суть кода не буду объяснять, ну там и понятно в принципе...
То что у меня не получилось сделать - таймер отключения сигнала через 5-6 сек.(в if, для того что бы кран не сгорел когда он заклинит по какой ни будь причине), автоматическое проворачивание крана время от времени для предотвращения его "закисания"
Подскажите ка это сделать, может кто делал подобное, киньте пример
Мое чудо:
Код:
const int kran = 3;
const int bak = 4;
int nasos = 13;
int kran_open = 12;
int kran_close = 11;
int bak_open = 10;
int bak_close = 9;

void setup() {
  pinMode(kran, INPUT);
  pinMode(bak, INPUT);
  pinMode(nasos, OUTPUT);
  pinMode(kran_open, OUTPUT);
  pinMode(kran_close, OUTPUT);
  pinMode(bak_open, OUTPUT);
  pinMode(bak_close, OUTPUT);
}

void loop() {

  int kranState, bakState;
 
  kranState = digitalRead(kran);
  bakState = digitalRead(bak);
 
  if ((kranState == LOW) && (bakState == LOW))
{
  digitalWrite(nasos, LOW);
  digitalWrite(kran_open, HIGH);
  digitalWrite(kran_close, LOW);
  digitalWrite(bak_open, HIGH);
  digitalWrite(bak_close, LOW);

}
else if ((kranState == HIGH) && (bakState == LOW))
{
  digitalWrite(nasos, HIGH);
  digitalWrite(kran_open, HIGH);
  digitalWrite(kran_close, LOW);
  digitalWrite(bak_open, LOW);
  digitalWrite(bak_close, HIGH);
}
else if ((kranState == LOW) && (bakState == HIGH))
{
  digitalWrite(nasos, HIGH);
  digitalWrite(kran_open, LOW);
  digitalWrite(kran_close, HIGH);
  digitalWrite(bak_open, HIGH);
  digitalWrite(bak_close, LOW);
}
else if ((kranState == HIGH) && (bakState == HIGH))
{
  digitalWrite(nasos, HIGH);
  digitalWrite(kran_open, HIGH);
  digitalWrite(kran_close, LOW);
  digitalWrite(bak_open, LOW);
  digitalWrite(bak_close, HIGH);
}
}


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Таймер отключения на Ардуино
СообщениеДобавлено: Пт май 19, 2017 17:12:19 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 3
Зарегистрирован: Пт ноя 11, 2016 06:48:09
Сообщений: 199
Откуда: Берёзовка Перм-край
Рейтинг сообщения: 0
в ардуино есть функции, отвечающие за время millis(), например.
при приходе команды сохраняем в переменную текущее время, а когда пройдет нужное время (когда millis станет больше нашей переменной на нужную величину) сбрасываем команду

_________________
Повторяю: Мой аккаунт не взломали! Просьбы денег, оскорбления и пошлые комментарии действительно писал я сам!


Вернуться наверх
 Профиль  
 
От схемы до готовой печатной платы с помощью одного инструмента - EasyEDA
Спроектируй свою печатную плату - быстро, просто, бесплатно
Всего $8.21 за 10 двухсторонних печатных плат, размером 10х10см. Доставка 2-3 дня.
Бесплатный онлайн вьювер Gerber файлов

Не в сети
 Заголовок сообщения: Re: Таймер отключения на Ардуино
СообщениеДобавлено: Сб май 20, 2017 08:59:36 
Родился

Зарегистрирован: Ср июл 27, 2016 12:34:49
Сообщений: 8
Рейтинг сообщения: 0
Получилось сделать одноразовый таймер) с помощью millis() (т.е. нажал на кнопку светодиоды на время загорелись потом потухли, вроде норм но повторное нажатие не зажигает светодиоды вообще!)
Не могу понять как его по человечески сделать...
Может у кого есть пример подобного?
Или если не сложно покажите на моем коде например на первом if-e :))


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Таймер отключения на Ардуино
СообщениеДобавлено: Сб май 20, 2017 09:20:32 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 3
Зарегистрирован: Пт ноя 11, 2016 06:48:09
Сообщений: 199
Откуда: Берёзовка Перм-край
Рейтинг сообщения: 0
а ты переменную снова обновил при приходе следующего сигнала?
переменную надо использовать, потому что в саму функцию millis() ничего записать нельзя (и обнулить тоже) поэтому и нужно задавать точку отсчета, а для нахождения прошедшего времени находить разность переменной и текущего времени.

Добавлено after 6 minutes 49 seconds:
даже проще - вне IFов добав строчку : если (кран1= =выключен) {начало_работы_крана1=millis()};
а для проверки : время_работы_крана1=millis() - начало_работы_крана1;
т.е. если((millis() - начало_работы_крана1)> задержка_крана1) {выключить_кран1};
для второго крана аналогично

_________________
Повторяю: Мой аккаунт не взломали! Просьбы денег, оскорбления и пошлые комментарии действительно писал я сам!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 



Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: 7seg, akl и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y