Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
2 / 1 / 1
Регистрация: 23.01.2013
Сообщений: 37
1

Не работает как надо Millis

27.05.2016, 21:50. Показов 3141. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу понять, почему у меня не включаются реле по нажатию кнопки на 8 пине. Должно быть так - при нажатии кнопки поочередно, с заданным интервалом последовательно включаются реле. Помогите, пожалуйста, в чем причина?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  int flag=0;
 
// Задаем имя класса
 
class Reles
 
// Объявляем переменные (почему нельзя объявить переменные до объявления имени класса?)
 
{
  int rele ; // Номер выхода для управления реле
  int releState ; // Объявление переменной для управления состоянием реле.
  long times ; // Обозначаем переменную, отвечающую за время задержки переключения реле.
 
 
// Объявляем так называемый "спецификатор доступа" - "public" -  в данном случае он означает, что все данные и тип их выполнения будут доступны всем функциям в программе, в противном случае, если указать, например "private" вместо "public", то данные и методы их выполнения будут доступны только внутри объявленного класса.
 
public:
 
// Инициализируем переменные для последующей с ними работы. "int pin" - это переменная для последующего указания номера выхода контроллера, "long timese" - это переменная для указания времени задержки включения реле
  
  Reles (int pin, long timese){
  
// Присваиваем переменной "rele" значение "pin" 
 
  rele = pin;
 
// Присваиваем переменной "times" значение "timese" 
  
  times = timese;
 
  
// Объявляем выходы управления реле
 
 pinMode(rele, OUTPUT);
 
 // Задаем начальное значение реле при включении платы ( в этом случае "HIGH" - это выключено )
 
digitalWrite(rele, HIGH);
 
}
 
// Пишем функцию (WkluchenieRele) с переменными, которые уже обозначены (кроме переменной "nextime") и инициализированы, значения которых будут потом подставляться при вызове этой самой функции в нужном месте программы. 
 
void WkluchenieRele() {
 
  // Присваиваем переменной "nexttime" значение времени, прошедшее с момента включения платы с помощью функции "millis" + заданное время включения реле.
 unsigned long nexttime=times+millis();
 
 if ((nexttime-millis())>times) // Если время, прошедшее со времени включения платы больше установленного времени включения реле (задается в строках 69-72) то...
{
  
  
  // Присваиваем переменной "releState" низкое значение (Вкл).
  
  releState = LOW;
 
  // "Включаем" нужный вывод командой "releState" 
  
  digitalWrite(rele, releState);
 
}}
};
 
 
// Присваиваем переменным "rele1", "rele2" ,"rele3" и "rele4" значения номеров портов и задержки.
 
Reles rele1(2, 1000);
Reles rele2(3, 2500);
Reles rele3(4, 3700); 
Reles rele4(5, 800); 
 
void setup() {
   
  
 
}
 
void loop() {
 
// Включаем или не включаем реле с помощью вызова функции "WkluchenieRele()", в которую подставляются данные из строчек "Reles rele1 (1, 1000);Reles rele2 (2, 1000);Reles rele3 (3, 1000);"
 
if(digitalRead(8) == LOW){flag=1;}
    
  if (flag==1) {
 
rele1.WkluchenieRele();
rele2.WkluchenieRele(); 
rele3.WkluchenieRele();
rele4.WkluchenieRele();
 
}}
Что вот здесь не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/ Присваиваем переменной "nexttime" значение времени, прошедшее с момента включения платы с помощью функции "millis" + заданное время включения реле.
 unsigned long nexttime=times+millis();
 
 if ((nexttime-millis())>times) // Если время, прошедшее со времени включения платы больше установленного времени включения реле (задается в строках 69-72) то...
{
  
  
  // Присваиваем переменной "releState" низкое значение (Вкл).
  
  releState = LOW;
 
  // "Включаем" нужный вывод командой "releState" 
  
  digitalWrite(rele, releState);
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2016, 21:50
Ответы с готовыми решениями:

Не работает код как надо кто может сказать мне, почему не работает как надо?
Сама задача: (Компьютерное моделирование: заяц и Черепаха) В атом упражне-нии вам предстоит...

touchmove не работает как надо в мобильных браузерах android, а в iOS работает
Очень нужна ваша помощь, потому что вообще не понимаю, в чём может быть дело. Пытаюсь для своих...

Не работает как надо
В таблице ADOTList есть два поля: "Сушилка" и "Код". Так вот. Нужно чтобы в DBEdit2 формы FRezultat...

Json не работает как надо
Очень нужна ваша помощь, уже час сижу не могу исправить( if (!$pay): $text = 'Оплата еще не...

1
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
28.05.2016, 00:28 2
Вы нажимаете кнопку, flag устанавливается в 1, запускаются функции включения реле, в переменные nexttime устанавливаются времена. Происходит выход из последнего включения реле, перевызывается функция loop, переменная флаг по прежнему 1, запускаются функции включения реле, в переменные nexttime переустанавливаются времена. И так до бесконечности.
0
28.05.2016, 00:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2016, 00:28
Помогаю со студенческими работами здесь

Запрос не работает как надо
Сильно не ругать ,я только начинаю осваивать 1с)) Есть внешняя печатная форма на которой должны...

Программа не работает как надо
Вот допустим у нас есть код: znakomstv = False znakomstvo = zovut = while True: ...

Не работает ролловер как надо
Здравствуйте! Никак не могу сделать казалось бы простую вещь. Мне нужно сделать кнопку-роллловер,...

оператор if не работает как надо
Вот 2 процедуры: procedure zakritie_1; Var temp_1:svedeniya; i,k,l,r,n,ind:integer; ...

MockWebServer не работает как надо
Юзаю Square MockWebServer для юнит тестирования Ретрофит клиента. Делаю всё как описано в их...

Не совсем работает как надо
<?php session_start (); //- тут закомментируй если раньше стартуешь где ?> <!DOCTYPE html>...

Плагин не работает как надо
Всем привет! Есть плагин который выводит удобные карточки приложений в App Store со ссылкой на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru