Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 18.04.2014, 19:31  
SyrBrandon
Прохожий
 
Регистрация: 18.04.2014
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SyrBrandon на пути к лучшему
По умолчанию Таймер включения нагрузки на 10 минут на ARDUINO UNO

Добрый день.
Подскажите, как можно решить следующую задачу на ARDUINO. Необходимо запрограммировать включение мотора от кнопки ровно на 10 минут, не используя функцию delay(), т.е. цикл loop не должен
останавливаться.
В любой момент двигатель можно выключить и включать этой же кнопкой, но он автоматически
должен отключаться через 10 мин после включения. В качестве индикатора включения насоса
будет служить индикатор LED13.
PHP код:

// Таймер включения мотора на 10 минут
// 

const int  buttonPOWER 7// Кнопка включения  и выключения мотора, 10k на землю.
const int LedPOWER 13;     // Выход на реле мотора

// Переменные для работы с кнопкой
int buttonStatePOWER 0;
int old_val 0;
int state 0;

int StartMotor 0;              // Маркер запуск мотора
unsigned long previousMillisMotor 0;           // Засекаем время на момент включения Мотора
unsigned long currentTime;                          // Переменная текущего времени программы

void setup() {
  
pinMode(buttonPOWERINPUT);
  
pinMode(LedPOWEROUTPUT);
  
  
digitalWrite(LedPOWERLOW);
  
Serial.begin(9600); // монитор порта для диагностики
}

void loop() {


// ----------Организация кнопки POWER включение и выключение с защитой от дребезга контактов----
      
buttonStatePOWER digitalRead(buttonPOWER);   
   if ((
buttonStatePOWER == HIGH)&&(old_val == LOW)) {
          
state state;
          
delay(200);
        }
      
old_val buttonStatePOWER;
  if (
state == 1) { 
                    if ((
StartMotor == 0)&&(old_val == HIGH)) { unsigned long previousMillisMotor millis(); 
                                                                                           
// // Засечка времени выполняется 1 раз за включение мотора
                                                                
Serial.println("StartMotor=1");
                                                                
Serial.println(previousMillisMotor); // смотрим время засечки
                                                              
}
                                           
StartMotor=1
                   } else
      { 
StartMotor=0Serial.println("StartMotor=0");}

// ------------------------------------------------------- 

//--------------Управление мотором------------------------
   
if (StartMotor == 1) { 
                                       
digitalWrite(LedPOWERHIGH); // включение мотора

                                      // далее, действия при включении мотора
                                      // опрос теплового и т.д.
  
                                
}
   if (
StartMotor == 0) { 
                                       
digitalWrite(LedPOWERLOW); // выключение мотора

                                      // далее, действия при выключении мотора
                                     
  
                                
}

Реклама:

Последний раз редактировалось SyrBrandon; 19.04.2014 в 12:01.
SyrBrandon вне форума  
Непрочитано 18.04.2014, 23:15  
swat24
Гражданин KAZUS.RU
 
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
swat24 на пути к лучшему
По умолчанию Re: Таймер включения нагрузки на 10 минут на ARDUINO UNO

Использовать таймеры. В обработчике инкрементировать переменную.
Я надеюсь в ардуино доступ к ним есть...
swat24 вне форума  
Непрочитано 19.04.2014, 09:42  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Таймер включения нагрузки на 10 минут на ARDUINO UNO

Сообщение от SyrBrandon Посмотреть сообщение
Подскажите, как можно решить следующую задачу. Необходимо запрограммировать включение мотора от кнопки ровно на 10 минут, не используя функцию delay(), т.е. цикл loop не должен
останавливаться.
В любой момент двигатель можно выключить и включать этой же кнопкой, но он автоматически
должен отключаться через 10 мин после включения. В качестве индикатора включения насоса
будет служить индикатор LED13.
Вами приведен скетч Дуринды. Для чего? Ведь судя по вопросу, он написан не вами. У вас есть понимание этого скетча?
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 19.04.2014, 10:32  
SyrBrandon
Прохожий
 
Регистрация: 18.04.2014
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SyrBrandon на пути к лучшему
По умолчанию Re: Таймер включения нагрузки на 10 минут на ARDUINO UNO

Добрый день.
swat24, опыта работы с таймером на сегодняшний день у меня не было, и как это грамотно реализовать на Ардуине.
ut1wpr, это сборная солянка из разных источников. В общем принцип действия этого скетча понятен, в данный момент он включает и выключает светодиод (он же мотор), при нажатии на кнопку pin 7 (кнопка +5v и pin 7). При включении мотора, на COM-порт выводится 2 строки: "StartMotor=1" и
"26449" (время засечки), при отключении на COM-порт выводится "StartMotor=0" (постоянно бежит). *Вот как бы сделать, чтобы эта строка исполнялась только один раз.
Но в этом коде не хватает условия по отключению светодиодиода по прошествию 10 минут. Была попытка использовать функцию millis() текущее время, с условием if (millis() -previousMillis ›= 10 мин), т.е. при включении мотора мы засекаем время в переменную previousMillis ( unsigned long previousMillisMotor = millis(); ) , затем при наступлении условия millis() -previousMillis ›= 10 мин, должно происходить отключение.
но эта связка у меня почему то не работала. Отключение не происходило. Скорее всего что то делал не так. Вот и прошу помощи, как это сделать грамотно. Готового примера на просторах интернета не нашел, возможно этот пример кому нибудь пригодится из новичков для своих творческих работ. Прошу не пинайте сильно, все мы учимся. Заранее спасибо.

Последний раз редактировалось SyrBrandon; 19.04.2014 в 11:03.
SyrBrandon вне форума  
Непрочитано 19.04.2014, 12:33  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Таймер включения нагрузки на 10 минут на ARDUINO UNO

Сообщение от SyrBrandon Посмотреть сообщение
Отключение не происходило. Скорее всего что то делал не так. Вот и прошу помощи, как это сделать грамотно. Готового примера на просторах интернета не нашел, возможно этот пример кому нибудь пригодится из новичков для своих творческих работ. Прошу не пинайте сильно, все мы учимся. Заранее спасибо
Какую цель вы преследуете? Если вам нужен готовый скетч - я могу вам написать. За деньги. Если вы хотите написать сами, придется учиться. Бесплатно. В первом случае вы и дальше будете просить, чтобы кто-то вам что-то еще написал. Во втором - сможете писать и для себя и для других. Выбирайте.
Если все-таки сами - тогда не "лепите из кусков". Постарайтесь понять, что делает каждый из "выдранных" вами кубиков, сложите эти кубики, как вам нужно и наслаждайтесь.
А прерывания придется изучить. На дом. сайте Дуринды (да и вообще в инете) есть множество и уроков и готовых примеров. Пройдя этот путь станете программистом. Сойдя с него останетесь "попрошайкой". Без обид.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 19.04.2014, 13:13  
SyrBrandon
Прохожий
 
Регистрация: 18.04.2014
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SyrBrandon на пути к лучшему
По умолчанию Re: Таймер включения нагрузки на 10 минут на ARDUINO UNO

ut1wpr Спасибо за ответ, без обид, буду изучать.
SyrBrandon вне форума  
Непрочитано 19.04.2014, 14:25  
SyrBrandon
Прохожий
 
Регистрация: 18.04.2014
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SyrBrandon на пути к лучшему
По умолчанию Re: Таймер включения нагрузки на 10 минут на ARDUINO UNO

Все, задача решена. Была найдена грубая ошибка в описании типа переменной и ещё одна синтаксическая. Код управления мотором будет выглядеть так

Цитата:

const unsigned long TimePower=600000; // Время работы мотора, 600 000 сек (10 мин)
// тип unsigned long 0 ... 4294967295 32Bit

loop ........
..............
//--------------Управление мотором------------------------
if (StartMotor == 1) {
digitalWrite(LedPOWER, HIGH); // включение мотора

//---- Функция выключения через 10 минут--------------------
currentTime = millis(); // считываем текущее время
if (currentTime ›= (previousMillisMotor+TimePower)) // сравниваем текущий таймер с переменной previousMillisMotor + 10 мин.
{
StartMotor=0;
previousMillisMotor = currentTime; // в previousMillisMotor записываем новое значение
}
//----------------------------------------------------------


// далее, действия при включении мотора
// опрос теплового и т.д.

}
if (StartMotor == 0) {
digitalWrite(LedPOWER, LOW); // выключение мотора

// далее, действия при выключении мотора


}
}



Последний раз редактировалось SyrBrandon; 19.04.2014 в 14:31.
SyrBrandon вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу схему E3121 HUAWEI (USB modem 320D) для сопряжения с Arduino UNO. profor Поиск схем. Делимся схемами 3 28.12.2013 00:29
Таймер включения света alexey-nla Электроника средств транспорта 121 05.07.2012 11:24


Часовой пояс GMT +4, время: 12:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot