как регулировать dalay() ?

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

подскажите можно ли регулировать задержку переменной dalay(int);  ?

и так чтоб это значение можно было прочитать например в конце программы если оно было в начале задано...

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

Можно.

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016
[code]
#include <EEPROM.h>

const int SQ1 = 14;     
const int SQ2 = 15;      
const int SQ3 = 16;      
const int SQ4 = 17;     
const int SQ5 = 18;      
const int AVAR = 19;     


const int Krest = 13;           
const int Strelka_out = 12;      
const int Strelka_obr = 11;      
const int Znak = 10;             
const int Nas = 9;           
const int Mag = 8;               


int State1 = 0; //  SQ1
int State2 = 0; //  SQ2
int State3 = 0; //  SQ3
int State4 = 0; //  SQ4
int State5 = 0;     
int State6 = 0;   
int TimeN = 50;   
int val=0;


void setup() {
  
  pinMode(Krest, OUTPUT);
  pinMode(Strelka_out, OUTPUT);
  pinMode(Strelka_obr, OUTPUT);
  pinMode(Znak, OUTPUT);
  pinMode(Nas, OUTPUT);
  pinMode(Mag, OUTPUT);


  pinMode(SQ1, INPUT);
  pinMode(SQ2, INPUT);
  pinMode(SQ3, INPUT);
  pinMode(SQ4, INPUT);
  pinMode(SQ5, INPUT);
  pinMode(AVAR, INPUT);


  attachInterrupt(0, blink, RISING); 



}

void loop() {
pai:  
  digitalWrite(Krest, HIGH);  


  State1 = digitalRead(SQ1);
  State2 = digitalRead(SQ2);
  int result=50;
  
if (State1 == HIGH && State2 == LOW ) {         
val++;
delay (1000);}

else 
{
  val=0; 
}
if(val >= 5)
{
  nas:
  if (State1 == HIGH && State2 == LOW ) {     

  digitalWrite(Strelka_out, HIGH);
  delay (250);
  
  result = TimeN + 10;
  digitalWrite(Strelka_out, LOW);
  delay (250);
  goto nas;
  }

}
   


  State5 = digitalRead(SQ5);  
  if (State5 == HIGH) 
  {
    digitalWrite(Krest, LOW);
    digitalWrite(Strelka_obr, HIGH);
    digitalWrite(Mag, HIGH);
pai2:    
     State3 = digitalRead(SQ3); 

  if (State3 != HIGH  )  {           
    delay(200);
    goto pai2; }  
    digitalWrite(Krest, HIGH);
    digitalWrite(Strelka_obr, LOW);
    digitalWrite(Mag, LOW); 
  }


                 
  State4 = digitalRead(SQ4);         
  if (State4 != HIGH)  {
    digitalWrite(Znak, HIGH);
    delay(500);
    digitalWrite(Znak, LOW);
    delay(500);
   
  }

   
  State1 = digitalRead(SQ1);
  State2 = digitalRead(SQ2);
if (State1 && State2 == HIGH && State4 == LOW )          
{ digitalWrite(Krest, LOW); delay(250); digitalWrite(Krest, HIGH); delay(250); digitalWrite(Krest, LOW); delay(250); digitalWrite(Krest, HIGH); 
 goto pai; }



  if (State1 && State2 == HIGH) {

    digitalWrite(Nas, HIGH);
    delay (result);
    digitalWrite(Nas, LOW);
    digitalWrite(Krest, LOW);
    digitalWrite(Strelka_out, HIGH);
    digitalWrite(Mag, HIGH);
bai:
    State3 = digitalRead(SQ3); 

    if (State3 != HIGH  )  {
      goto bai;  
    }
    digitalWrite(Strelka_out, LOW);
    digitalWrite(Krest, HIGH);
    digitalWrite(Mag, LOW); }
                    

}



void blink()
{

  digitalWrite(Krest, LOW);
  digitalWrite(Mag, HIGH);
  digitalWrite(Strelka_out, HIGH);
  digitalWrite(Strelka_obr, HIGH);

}


















[/code]

 

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

Покажите что и как Вы делаете.

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

кажись понял... result не глобальная переменная )

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

Нет, так не пойдёт.

Во-первых, соблюдайте правила форума.

Во-вторых, давайте нормальный код, который Вы реально исполняли (для этого он должен хотя бы компилироваться).

Тогда и поговорим.

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

Евгений может у вас есть скайп? я смотрю вы тут постоянно ... так было бы проще 

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

1. Нету.

2. ЧТо проще? Код выложить нормально? Выкладывайте и без скайпа :)

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

изменил выше смотрите ) а так я бы в скайпе чаще надоедал своими вопросами )

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

5alex5 пишет:

изменил выше смотрите ) а так я бы в скайпе чаще надоедал своими вопросами )

см. вторую строку моего поста №5

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

поменял привиреда )

Andrey-S
Offline
Зарегистрирован: 02.01.2015

5alex5 пишет:

Евгений может у вас есть скайп? я смотрю вы тут постоянно ... так было бы проще 

Скайп)))  Да да, Евгений, и мне, пожалуйста, скайп... А лучше отдельную тему создать (или прям раздел форума) "Помогаю всем за спасибо по скайпу круглосуточно")))... Благотворительность святое дело!

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

не толкайте людей на корыстные мысли ) это тормоз прогресса! )

Andrey-S
Offline
Зарегистрирован: 02.01.2015

5alex5 пишет:

не толкайте людей на корыстные мысли ) это тормоз прогресса! )

Хорошо. Всей душой желаю, чтобы ЕвгенийП помог Вам по скайпу в кратчайшие сроки!))) Вот если на огонёк зайдет Клапауций, то он вообще в красках расскажет Вам, как бороться со всеми проблемами)

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

Евгений я изменил... пойдет?

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

5alex5 пишет:

поменял привиреда )

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

Сейчас посмотрю.

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

Ну, если я Вас правильно понял, Вы хотите, чтобы переменная result сохраняла своё значение мждеу вызовами loop, а сейчас она у Вас каждый раз снова становится 50.

Для этого не нужно делать её глобальной. Просто добавьте слово static перед int в строке 61.

Кстати, о привереде. Если бы Вы вставили код аккуратнне (без тэга [code]) то номера строк совпадали бы с номерами в Вашем IDE, а так они отличаются)

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

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

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

Так включите, если нужно, конечно. Там в настройках есть.

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

В общем я так скажу ) не работает тот код...

НО! покапавшись, с утра на свежую голову, все было решено... не помогало даже объявление глобальной переменной.... и та приставка не помогла STATIC...  

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

5alex5 пишет:

В общем я так скажу ) не работает тот код...

Так и не должен. Вернее, он работает в точности так, как написан.