Помогите правильно сделать алгоритм счетчика
- Войдите на сайт для отправки комментариев
Пт, 08/04/2016 - 13:46
Ребят, помогите с алгоритмом решения
Функция: в цикле опрашиваются несколько датчиков и там же в условиях запускается их коррекция.
Если значение ВСЕХ датчиков установилось, нужно выйти из цикла.
Скетча нет под рукой, но логику и так, наверное, подскажете.
for {
if мало - увеличить
else if много - уменьшить
else XXXXXX
if мало - увеличить
else if много - уменьшить
else YYYYY
if мало - увеличить
else if много - уменьшить
else ZZZZZ
}
Когда сработали и XXXX и YYYYY и ZZZZZ (все), то выход из цикла. Как реализовать?
Если просто х++ в каждом последнем элсе и проверка х==3 то насчитает много, ибо плюсует каждый цикл, а датчики устанавливают показания за разный период времени.
То есть XXXX YYYYY уже соответствуют нужному условию, а ZZZZZ все еще продолжает коррекцию
Туплю, не могу придумать как сделать(((
if (XXXX и YYYYY и ZZZZZ) break;
АААА!!!
Точно!
Можно ж проверить, что датчики не корректируются по LOW на выходах.
Спасибо!
Пора в отпуск)))
if (XXXX и YYYYY и ZZZZZ) break;
А лучше тоже самое в самом for записать (во второй секции for). Типа так:
for (boolean xxx=false, yyy=false, zzz=false; ! (xxx && yyy && zzz); ) { if (..) ...; else if (..) ...; else xxx = true; if (..) ...; else if (..) ...; else yyy = true; if (..) ...; else if (..) ...; else zzz = true; }if (мало - увеличить)... А откуда известно что мало-то? С чем-то же сравнивается у тебя там?
Полюбому сравниваются X,Y и Z, с какими-то другими переменными X1, Y1 и Z1.
Условие выхода укажи в самом начале да и всё:
while (X != X1 && Y != Y1 && Z !=Z1) { if мало - увеличить else if много - уменьшить else XXXXXX if мало - увеличить else if много - уменьшить else YYYYY if мало - увеличить else if много - уменьшить else ZZZZZ }Или:
If (X=X1 && Y=Y1 && Z=Z1) {return};
Показания датчиков сравниваются с "нормативом"
Если мало - включается один вывод
Если много - второй вывод
Если "норма" - оба вывода остаются выключены.
И так на нескольких датчиках одновременно.
Да понял я, понял))) Уже справлюсь))
Я ж говорю, протупил с логикой, ардуино мне непривычен.
Я все еще "думаю" мерками школьного бейсика.
Я все еще "думаю" мерками школьного бейсика.
А какая разница? Там всё точно также. Если есть знания - уважайте их, не принижайте и не бойтесь применять.