как регулировать dalay() ?
- Войдите на сайт для отправки комментариев
Пт, 15/04/2016 - 08:30
подскажите можно ли регулировать задержку переменной dalay(int); ?
и так чтоб это значение можно было прочитать например в конце программы если оно было в начале задано...
Можно.
[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]Покажите что и как Вы делаете.
кажись понял... result не глобальная переменная )
Нет, так не пойдёт.
Во-первых, соблюдайте правила форума.
Во-вторых, давайте нормальный код, который Вы реально исполняли (для этого он должен хотя бы компилироваться).
Тогда и поговорим.
Евгений может у вас есть скайп? я смотрю вы тут постоянно ... так было бы проще
1. Нету.
2. ЧТо проще? Код выложить нормально? Выкладывайте и без скайпа :)
изменил выше смотрите ) а так я бы в скайпе чаще надоедал своими вопросами )
изменил выше смотрите ) а так я бы в скайпе чаще надоедал своими вопросами )
см. вторую строку моего поста №5
поменял привиреда )
Евгений может у вас есть скайп? я смотрю вы тут постоянно ... так было бы проще
Скайп))) Да да, Евгений, и мне, пожалуйста, скайп... А лучше отдельную тему создать (или прям раздел форума) "Помогаю всем за спасибо по скайпу круглосуточно")))... Благотворительность святое дело!
не толкайте людей на корыстные мысли ) это тормоз прогресса! )
не толкайте людей на корыстные мысли ) это тормоз прогресса! )
Хорошо. Всей душой желаю, чтобы ЕвгенийП помог Вам по скайпу в кратчайшие сроки!))) Вот если на огонёк зайдет Клапауций, то он вообще в красках расскажет Вам, как бороться со всеми проблемами)
Евгений я изменил... пойдет?
поменял привиреда )
Дело не в привереде. Для того, чтобы можно было обсудать код, нужны номера строк, понимаете. Иначе обсуждение превращается в кошмар.
Сейчас посмотрю.
Ну, если я Вас правильно понял, Вы хотите, чтобы переменная result сохраняла своё значение мждеу вызовами loop, а сейчас она у Вас каждый раз снова становится 50.
Для этого не нужно делать её глобальной. Просто добавьте слово static перед int в строке 61.
Кстати, о привереде. Если бы Вы вставили код аккуратнне (без тэга [code]) то номера строк совпадали бы с номерами в Вашем IDE, а так они отличаются)
а у меня вообще нет нумерации строк в IDE ) и спасибо за подсказку буду пробывать дома, пока что на работе
Так включите, если нужно, конечно. Там в настройках есть.
В общем я так скажу ) не работает тот код...
НО! покапавшись, с утра на свежую голову, все было решено... не помогало даже объявление глобальной переменной.... и та приставка не помогла STATIC...
В общем я так скажу ) не работает тот код...
Так и не должен. Вернее, он работает в точности так, как написан.