@ru_arduino

Страница 6294 из 7737
DED
06.05.2018
14:29:45
Всем привет, подскажите плз. Делаю цикл без delay с использованием millis, управляю двумя релюшками. Требуется вместе со вторым реле включать первое и так же вместе их отключать. Ну дак вот, они включаются вместе, но первое реле отключается в первом конечном автомате после своего отработанного времени. Не пройдите мимо, расскажите плз как исправить

Это все делаю на ардуино уно

Dolphin
06.05.2018
14:32:52
шоу ми код



Google
DED
06.05.2018
14:35:27
шоу ми код
Скрином или текстом?

Dolphin
06.05.2018
14:35:41
на пастебин лучше

Динар
06.05.2018
14:36:22
Ты ж в атмел студии работал что пошло не так?)

Dolphin
06.05.2018
14:36:43
Andrey
06.05.2018
14:36:50
В текстовичке boards.txt появилось много новых записей

Dolphin
06.05.2018
14:37:05
Ты ж в атмел студии работал что пошло не так?)
мне под марлин нужна ардуинка

и для некоторых тестов

DED
06.05.2018
14:37:37
на пастебин лучше
https://pastebin.com/3i3yfRJq

Dolphin
06.05.2018
14:40:18
а все зашел

Динар
06.05.2018
14:41:06
61

Строка

Google
Динар
06.05.2018
14:41:12
Перепроверь

Dolphin
06.05.2018
14:42:21
unsigned long currentMillis = millis(); объяви глобально, и сделай инициализацию в setup то же самое для previousMillis1

а вторая и так глобально

но инициализацию ей сделай начальную

DED
06.05.2018
14:43:41
Ща буду разбираться с этим, спасибо большое

Dolphin
06.05.2018
14:43:56
(ledState1 == LOW) можно просто писать: (!ledState1) (ledState1 == HIGH) можно просто писать: (ledState1)

хотя скорей от платформы зависит, стоит проверить

Andrey
06.05.2018
14:44:48
То бишь инвертировать

Dolphin
06.05.2018
14:45:06
нет

проверка в условии

Andrey
06.05.2018
14:45:35
а, равно и не равно

надо идти спать, я уже туплю

DED
06.05.2018
14:45:58
! Пока не буду использовать, надо вникнуть получше во все

Andrey
06.05.2018
14:46:15
у тебя состояние светодиодов - их всего два?

DED
06.05.2018
14:46:36
А таки видел сегодня, что инвертирование это и знаю, что не равно

Dolphin
06.05.2018
14:47:03
Arduino.h #define HIGH 0x1 #define LOW 0x0

DED
06.05.2018
14:47:18
у тебя состояние светодиодов - их всего два?
Ну про светодиоды это с шаблона осталось. И да, пока что всего 2 реле, хочу настроить для начала 2, а потом остальное прикручивать

Dolphin
06.05.2018
14:47:49
!0 = TRUE !1= FALSE 0 = FALSE 1 = TRUE

DED
06.05.2018
14:48:32
Пара реле вчера и сегодня через делей работала нормально, но ничего допом тогда не получится прикрутить

Google
DED
06.05.2018
14:48:41
Параллельно

Dolphin
06.05.2018
14:48:56
if (ledState1 == LOW) то же самое if (ledState1 == 0) или if (!ledState1) или if (!0)

if (ledState1 == HIGH) то же самое if (ledState1 == 1) или if (ledState1) или if (1)

DED
06.05.2018
14:50:46
Ну это на будущее, чтоб знать)

Dolphin
06.05.2018
14:51:12
ладн это между делом )

но лучше пиши как пишешь, наглядней для новичка ;)

вот еще смотри

if((ledState2 == HIGH) && (currentMillis - previousMillis2 >= OffTime2)) { } else if ((ledState2 == LOW) && (currentMillis - previousMillis2 >= OnTime2))

зачем ты одно и то же условие проверяешь дважды?

if (currentMillis - previousMillis2 >= OffTime2) { if (ledState2 == HIGH) { } else { } }

красифшей?

Artem
06.05.2018
14:54:25
Динар
06.05.2018
14:54:38
Нет скобки не везде красиво

Dolphin
06.05.2018
14:54:41
зачем?
использую для графики

Динар
06.05.2018
14:55:02
int main(){ }

Так не красиво

DED
06.05.2018
14:55:14
красифшей?
Мне надо понятнее пока что))

Dolphin
06.05.2018
14:55:28
Так не красиво
это предрассудки

Динар
06.05.2018
14:55:40
int main() { }

DED
06.05.2018
14:55:51
но инициализацию ей сделай начальную
В сетап им присвоить 0? Правильно я понял?

Google
Динар
06.05.2018
14:55:54
а вот так красиво)

Dolphin
06.05.2018
14:56:00
Мне надо понятнее пока что))
тебе надо не заебаться в собственном коде, а пока ты идешь в обратном направлении

В сетап им присвоить 0? Правильно я понял?
зачем? можешь сразу загрузить текущее значение милис и присвоить

Artem
06.05.2018
14:56:52
int main() { }
да вы эстет

Dolphin
06.05.2018
14:57:16
да вы эстет
не эстет а зомби

с портянками кода в которых охуеешь читать

В сетап им присвоить 0? Правильно я понял?
так, какие симптомы, опиши еще раз внятно

блядь пиздец

Artem
06.05.2018
14:59:17
меня на стиль олмана студия подсадила

Admin
ERROR: S client not available

Artem
06.05.2018
14:59:21
больше никак не хочу

Динар
06.05.2018
15:00:52
Вот ты тоже зомби))

Petr
06.05.2018
15:01:22
https://youtu.be/uyBePpPyd5c?t=16m9s

Artem
06.05.2018
15:01:29
в ассемблере скобки не нужны

Dolphin
06.05.2018
15:01:48
// конечный автомат для 1-го светодиода if (currentMillis - previousMillis1 >= OffTime1) { if (ledState1 == HIGH) ledState1 = LOW; // выключаем else ledState1 = HIGH; // выключаем previousMillis1 = currentMillis; // зап. время digitalWrite(ledPin1, ledState1); // реализ. сост. } // конечный автомат для 2-го светодиода if (currentMillis - previousMillis2 >= OffTime2) { if (ledState2 == HIGH) ledState2 = LOW; // выключаем else ledState2 = HIGH; // выключаем previousMillis2 = currentMillis ; // зап. время previousMillis1 = currentMillis ; digitalWrite(ledPin2, ledState2); // реализ. сост. digitalWrite(ledPin1, ledState2); }

Вот ты тоже зомби))
ты просто не писал пока сложных условий, которые не оптимизируются Жегалкиным и дискреткой

у тебя previousMillis2 не инициализирована

ты во второе условие никогда не попадешь

Google
Dolphin
06.05.2018
15:05:59
а не попадешь

ох блеадь

DED
06.05.2018
15:07:06
Вот как было изначально, все работало почти правильно, единственное когда оба реле включались, первое отключалось раньше, чем второе

А надо, чтоб оно вместе с ним отключалось

DED
06.05.2018
15:08:02
Сек

Dolphin
06.05.2018
15:09:38
// конечный автомат для 1-го светодиода if (currentMillis - previousMillis1 >= OffTime1) { ledState1 ^= HIGH; // переключаем previousMillis1 = currentMillis; // зап. время digitalWrite(ledPin1, ledState1); // реализ. сост. } // конечный автомат для 2-го светодиода if (currentMillis - previousMillis2 >= OffTime2) { ledState2 ^= HIGH; // переключаем // зап. время previousMillis1 = previousMillis2 = currentMillis; digitalWrite(ledPin2, ledState2); // реализ. сост. digitalWrite(ledPin1, ledState2); }

setup(){ previousMillis1=previousMillis2=currentMillis=millis(); }

Сек
спрашивай )

DED
06.05.2018
15:14:47
Arduino: 1.8.5 (Windows 10), Плата:"Arduino/Genuino Uno" C:\Users\MS\Desktop\ARD\sketch_may06c\sketch_may06c.ino: In function 'void setup()': sketch_may06c:25: error: 'currentMillis' was not declared in this scope previousMillis1=previousMillis2=currentMillis=millis(); ^ exit status 1 'currentMillis' was not declared in this scope Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции"

DED
06.05.2018
15:16:42
Я запутался просто где и что менял, дописал уже

Dolphin
06.05.2018
15:17:01
из loop() убери

DED
06.05.2018
15:17:16
Уже

DED
06.05.2018
15:18:47
Да, выключается после определенного промежутка времени

Dolphin
06.05.2018
15:19:03
а не

состояние же не меняется

DED
06.05.2018
15:19:40
Теперь вообще ничего не включается

Dolphin
06.05.2018
15:19:47
Вот так сделай // конечный автомат для 1-го светодиода if (currentMillis - previousMillis1 >= OffTime1) { ledState1 ^= HIGH; // переключаем previousMillis1 = currentMillis; // зап. время digitalWrite(ledPin1, ledState1); // реализ. сост. } // конечный автомат для 2-го светодиода if (currentMillis - previousMillis2 >= OffTime2) { ledState2 ^= HIGH; // переключаем // зап. время previousMillis2 = currentMillis; digitalWrite(ledPin2, ledState2); // реализ. сост. }

Теперь вообще ничего не включается
а ты добавил в loop() загрузку милисекунд в currentMillis?

Страница 6294 из 7737