Применение millis для нескольких процессов

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вам нужна не "подобная вашей задаче" а просто программирование с самых азов. Никакие "подобия задаче" Вам не помогут, Вы же не знаете абсолютно ничего.

А хотите продолжать сейчас, так делайте что сказали (я уже третий раз за сегодня Вам говорю, что надо делать то, что сказано). Вставляйте засекание времени куда нужно и публикуйте получившийся код

Posol88
Offline
Зарегистрирован: 14.11.2019

я его тут уже куда только не вставлял, или выдает ошибку компиляции или не считает как нужно вот например:

#define ON 10
#define OF 3
#define HOT 9
#define DOP 8
unsigned long TIM;
 
 void setup() {
  attachInterrupt (1, myES, RISING);
  pinMode (HOT, OUTPUT);
  pinMode (DOP, OUTPUT); 
 }

 void loop(){
  if (digitalRead(ON)) {
        TIM = HOT ; 
        digitalWrite(HOT, HIGH);  
  }
  if (millis() - TIM > (unsigned long) 30000ul ) {
        digitalWrite(HOT, LOW); 
        TIM = millis();    
  }
  delay(20);
  }

 

Posol88
Offline
Зарегистрирован: 14.11.2019

или вот:

#define ON 10
#define OF 3
#define HOT 9
#define DOP 8
unsigned long TIM;
 
 void setup() {
  attachInterrupt (1, myES, RISING);
  pinMode (HOT, OUTPUT);
  pinMode (DOP, OUTPUT); 
 }

 void loop(){
  if (digitalRead(ON)) {
        TIM = (HOT,HIGH) ; 
        digitalWrite(HOT, HIGH);  
  }
  if (millis() - TIM > (unsigned long) 30000ul ) {
        digitalWrite(HOT, LOW); 
        TIM = millis();    
  }
  delay(20);
  }

20 секунд в результате....

Posol88
Offline
Зарегистрирован: 14.11.2019

после 16 строчки совать нет смысла, так как там уже все действия сделаны... надо где то в 14 или в 15 строчке это написать... но я уже пробовал везде, из этого вывод, что я пишу что то не то... а что нужно я не знаю, в прочем это я уже говорил.

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

Евгений. это троллинг... мне кажется

Posol88
Offline
Зарегистрирован: 14.11.2019

ага. жутко смешной...

 

Posol88
Offline
Зарегистрирован: 14.11.2019

вы хотя бы скажите, там где то в одной  строчке ошибка или весь код фигня? 

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

Posol88 пишет:

вы хотя бы скажите, там где то в одной  строчке ошибка или весь код фигня? 

 

намекну

дефайн HOT это номер пина, к которому подключен нагреватель. И этот дефайн у вас  = 9. И ничего другого там быть не может.

Обьясните мне, из каких таких соображений вы присваиваете параметру времени TIM значение номера пина? Вы понимаете. что в итоге получается TIM = 9 ?

Posol88
Offline
Зарегистрирован: 14.11.2019

ну да, глуповато выходит, но я же не могу значению HIGH присвоить... значит что? нужна еще одна функция if которая будет считывать сигнал с 9го или 10го пина и.... хз что дальше

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

Posol88 пишет:

ну  я приравнял переменную тим  к сигналу я с кнопки ON и думал что с момента нажатия будет отсчет...

Надо Чапман написать, время стали измерять в кнопках, а она не в курсе

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

Posol88 пишет:

ну да, глуповато выходит, но я же не могу значению HIGH присвоить

значению HIGH вы присвоить то можете, только смысла в этом не больше, чем присвоить значению HOT

 

 

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

Петрович, может я помогу кодом, изведётся ж малый

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

ua6em пишет:

Петрович, может я помогу кодом, изведётся ж малый

спокойствие! человек в своей программе прерывания использует - и не додумается как время засекать? - Если не додумается - нафига он такой нужен, таких в Спарте в пропасть сбрасывали :)

Posol88
Offline
Зарегистрирован: 14.11.2019
void loop(){
  if (digitalRead(ON)) { 
        digitalWrite(HOT, HIGH);
  if (digitalRead (ON)) {
        TIM - millis(); 
   }
  }
  if (millis() - TIM > (unsigned long) 30000ul ) {
        digitalWrite(HOT, LOW); 
        TIM = millis();    
  }
  delay(20);
  }
мб так?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Posol88 пишет:

я его тут уже куда только не вставлял

Кого ЕГО?

Вам надо время засечь - присвоить текущее время, а Вы что пихаете?

ua6em пишет:

Петрович, может я помогу кодом, изведётся ж малый

Я бы послал книжки изучать, а Вы делайте, что хотите, но когда он завтра придёт, с замером не 30, а 29 секунд - сами будете "помогать".

Posol88
Offline
Зарегистрирован: 14.11.2019

#define ON 10
#define OF 3
#define HOT 9
#define DOP 8
unsigned long TIM;
 
 void setup() {
  attachInterrupt (1, myES, RISING);
  pinMode (HOT, OUTPUT);
  pinMode (DOP, OUTPUT); 
 }

 void loop(){
  if (digitalRead(ON)) { 
        digitalWrite(HOT, HIGH);
  if (digitalRead (ON)) {
        TIM = millis(); 
   }
  }
  if (millis() - TIM > (unsigned long) 30000ul ) {
        digitalWrite(HOT, LOW); 
        TIM = millis();    
  }
  delay(20);
  }
void myES() {
  digitalWrite(HOT, LOW);
}

заработало :р 

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

улучшим?

- зачем два одинаковых условия в строке 14 и 16?

- зачем запоминается время в строке 22?

- зачем дважды указан тип в строке 20 ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

- зачем дважды указан тип в строке 20 ?

Ну, как "баден-баден" - для тех, кто не расслышал.

Posol88
Offline
Зарегистрирован: 14.11.2019

про строку 22 я думал так, что там не запоминание будет, а наоборот что бы память как бы обнулялась и время при нажатии ON потом считалось заново... а в строке 20 речь видимо про unsigned long ... так это я уже как подорожник прикладывал, из видео с ютуба, у него там оно какие то свои задачи выполняло, я думал может в этом дело и себе тоже прописал....

Posol88
Offline
Зарегистрирован: 14.11.2019

В общем. СПАСИБО. 

P.S. с вами тяжело... но без вас вообще ни как...

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

Posol88 пишет:

P.S. с вами тяжело... но без вас вообще ни как...

а с вами то как тяжело...

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

Posol88 пишет:

В общем. СПАСИБО. 

P.S. с вами тяжело... но без вас вообще ни как...

#define ON 10
#define OF 3
#define HOT 13 //9  светодиод на 13 пине для проверки
unsigned long TIM;
 
 void setup() {
  pinMode (HOT, OUTPUT);
  digitalWrite(HOT,LOW);    // Выключить обогрев при старте контроллера
  pinMode(ON,INPUT_PULLUP); // кнопка включения
  pinMode(OF,INPUT_PULLUP); // кнопка выключения
 }
 
 void loop(){
  if (digitalRead(ON)==LOW && digitalRead(HOT)==LOW) {
        TIM = millis(); 
        digitalWrite(HOT, HIGH);  
  }
  if (millis() - TIM >= 30000ul && digitalRead(HOT)==HIGH ) {
        digitalWrite(HOT, LOW); 
           }
  if(digitalRead(OF)==LOW){digitalWrite(HOT, LOW); }         
        delay(20);
  }

Держи бонус, коль справился



 

Posol88
Offline
Зарегистрирован: 14.11.2019

XD   все когда то были неопытны))

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

Posol88 пишет:

XD   все когда то были неопытны))

дело не в опыте, а в отсутствии логики, Вас Евгений Петрович раз пять просил написать своими словами, пока не напишите логическая цепочка не выстроится, бонус посмотрите и попытайтесь понять, зачем именно так проверяются условия

Posol88
Offline
Зарегистрирован: 14.11.2019

Спасибо)) попробую разобраться, там есть символы мне незнакомые))

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

Posol88 пишет:

Спасибо)) попробую разобраться, там есть символы мне незнакомые))

так читайте, всё на сайте есть, это азы

Pyotr
Offline
Зарегистрирован: 12.03.2014

В707, не обзывайтесь)) Не видели Вы тупых... с шестиклассником задачу решал: в прямоугольном треугольнике дан один угол. Найти остальные. Почти час бился - осилили только вместе. Теперь главное - перед этим я объяснил решение на листке, потом перевернул и говорю : давай сам пробуй.

А ТС хотя бы упертый. И что решил задачу, уже зачет.  Если и дальше будет упираться, то через пару лет с улыбкой вспомнит эту тему.

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

Pyotr пишет:

В707, не обзывайтесь)) Не видели Вы тупых... с шестиклассником задачу решал: в прямоугольном треугольнике дан один угол. Найти остальные. Почти час бился - осилили только вместе. Теперь главное - перед этим я объяснил решение на листке, потом перевернул и говорю : давай сам пробуй.

>


Депутатом будет, уважаемым человеком...

Posol88
Offline
Зарегистрирован: 14.11.2019

тот же самый скетч на Arduino Pro mini  не работает... скатина. но это уже не сегодня...

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

Posol88 пишет:

тот же самый скетч на Arduino Pro mini  не работает... скатина. но это уже не сегодня...

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Posol88 пишет:

тот же самый скетч на Arduino Pro mini  не работает... 

Китайская Pro mini, наверное :(

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Pyotr пишет:

в прямоугольном треугольнике дан один угол. Найти остальные.

Хорошо: один угол - 90 градусов, каковы остальные?

bwn
Offline
Зарегистрирован: 25.08.2014

andriano пишет:

Pyotr пишет:

в прямоугольном треугольнике дан один угол. Найти остальные.

Хорошо: один угол - 90 градусов, каковы остальные?

Ну, это просто - их сумма равна 90 градусов.)))))

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

Точно. А затем все просто... Один из углов равен икс, второй - 90 минус икс.

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

ЕвгенийП пишет:

Posol88 пишет:

тот же самый скетч на Arduino Pro mini  не работает... 

Китайская Pro mini, наверное :(

молчит наш ТС, видимо знакомство с логическими операторами поставило в ступор (вот тут как не согласиться с нашим слабым полом, что с логикой у многих мужчин откровенно слабо) :-)))

Posol88
Offline
Зарегистрирован: 14.11.2019

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

Posol88
Offline
Зарегистрирован: 14.11.2019

доброго вечера всем. я уж в этой теме отпишусь... вот на плате ардуино уно выводы сверху ряд и снизу ряд(ну там снизу аналоговые входа итд , а с верху 13 пинов гнд и еще 3 чего то... ) Не смешно между прочим. есть разница откуда минус (гнд) брать или нет?

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

разницы нет

Posol88
Offline
Зарегистрирован: 14.11.2019

странно, по тому, что когда я снизу беру GND (а все кнопки и выводы сверху) программа не работает, в плоть до того, что сама включает и выключает сигнал на выходе... а когда сверху подключил все заработало как надо.

 сейчас еще с бонусным скетчем попробую...

Pyotr
Offline
Зарегистрирован: 12.03.2014

andriano пишет:

Pyotr пишет:

в прямоугольном треугольнике дан один угол. Найти остальные.

Хорошо: один угол - 90 градусов, каковы остальные?

Хороший вопрос. Я его передам ученику. Вы точно хотите услышать ответ? Мошт не надо?

Posol88
Offline
Зарегистрирован: 14.11.2019

45 должно быть

Pyotr
Offline
Зарегистрирован: 12.03.2014

Posol88 пишет:

45 должно быть

Вот вам и ответ. Делов то)))

Posol88
Offline
Зарегистрирован: 14.11.2019

только я не совсем понял к чему это...

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

Posol88 пишет:

странно, по тому, что когда я снизу беру GND (а все кнопки и выводы сверху) программа не работает, в плоть до того, что сама включает и выключает сигнал на выходе... а когда сверху подключил все заработало как надо.

 сейчас еще с бонусным скетчем попробую...

и результат?

astwo
Offline
Зарегистрирован: 10.07.2019

Posol88 пишет:

странно, по тому, что когда я снизу беру GND (а все кнопки и выводы сверху) программа не работает, в плоть до того, что сама включает и выключает сигнал на выходе... а когда сверху подключил все заработало как надо.


Вот и меня подобное. Когда ложу коробки на пол, то они лежат. Но ведь есть ещё место на потолке. Почти такая же площадь. Но когда стараюсь положить коробки на потолок, то они почему-то падают. И да на стене коробки не лежат. Ну разве если в бонус не сделать полки.

Pyotr
Offline
Зарегистрирован: 12.03.2014

Posol88 пишет:

только я не совсем понял к чему это...

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

Posol88
Offline
Зарегистрирован: 14.11.2019

оказалось что дело в частоте работы процессора. у про мини моей она в 2 раза ниже чем у уно. а что бы выставить время в 30 секунд нужно прописывать 15... 

Posol88
Offline
Зарегистрирован: 14.11.2019

а бонус так и не заработал... когда зашиваю бонусный скетч светодиод постоянно тускло мерцает, на выключение загорается, а на включение то ли не реагирует, то ли гаснет... не помню

Клапауций 003
Offline
Зарегистрирован: 20.07.2019

Posol88 пишет:

а бонус так и не заработал... когда зашиваю бонусный скетч светодиод постоянно тускло мерцает, на выключение загорается, а на включение то ли не реагирует, то ли гаснет... не помню

я помню - топотухнет/топогаснет.

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

Posol88 пишет:

а бонус так и не заработал... когда зашиваю бонусный скетч светодиод постоянно тускло мерцает, на выключение загорается, а на включение то ли не реагирует, то ли гаснет... не помню

да ну!? Не может быть ))) светлодиод наверно китайский, или кнопки