Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

А можно поинтересоваться сначала, прежде чем ответить на вопрос?

Это "напишите мне скетч для готового блока" ?
Или "дайте совет, вот тут у меня проблема в коде, не знаю где ошибка"?

Опубликовано

А можно поинтересоваться сначала, прежде чем ответить на вопрос?

 

Это "напишите мне скетч для готового блока" ?

Или "дайте совет, вот тут у меня проблема в коде, не знаю где ошибка"?

ну и это и то ) ардуино недавно начал изучать . вот код на два положения, пока с одним датчиком , я в правильном направлении?)

Новый текстовый документ.txt

Опубликовано

Нуууу... как тебе сказать...
Попробую по порядку, то что явно вижу.
Нумерацию строк лучше включи, проще будет указывать. Файл-настройки-нумерация

1. Строки 46-48... У тебя одним проводом управление... двумя клопами? Строка 46 "дать +5в на канал 8", строка 48 "дать массу на канал 8"
Там дальше что-то интеллектуальное, распознающее +5 и 0 ? Не понял этого момента...  пока не буду ничего говорить.

2. В целом... Нет, так, вероятно, не будет работать. Одним циклом в лупе управиться не удастся. Нужно в лупе проверять показания с пинов кнопок и передавать нужные параметры в функцию. И уже в функции творить цикл установки.
Дело в том, что ты сам заблудишься скоро в скетче, ибо "линейный" алгоритм.
А надо писать отдельные функции для каждой мелкой операции.

3. Переменная visota - это будущий счетчик, как я понял? Ее наличие непонятно пока(((

4. 32-34, 53-55... эммм... а зачем переприсваивание, а потом следующим условием проверка того, что только что присвоил? Нипанятна.... То же самое, запутаешься в линейном алгоритме((( то есть ты указал visota = 1, но потом следующая строка if visota==1.... Это условие бессмысленно в данном месте.

5.
if (visota == 2)

  {
    analog = analogRead(0); //
    Serial.println(analog);
  }
 
  if (analog <= 450 && visota == 2)
    digitalWrite(9, HIGH); // UP

  if (analog >= 460 && visota == 2)
    digitalWrite(9, LOW);

зачем каждый раз перепроверять visota? Внеси в тело условия, вот так. Две проверки станут не нужны

if (visota == 2)

  {
    analog = analogRead(0); //
    Serial.println(analog);
 
 
  if (analog <= 450)
    digitalWrite(9, HIGH); // UP

  if (analog >= 460)
    digitalWrite(9, LOW);

}

6. Сейчас алгоритм работает "пока держишь кнопку, идет установка". Если ты хотел сделать по одиночному нажатию, то нужны функции.
Короче, функции вообще архинеобходимы. Изучай, без них никак

Опубликовано

П. 1  - я ошибаюсь, виноват )))
Смотрел в блокноте, не заметил else

На объективность не претендую, я не профразработчик, тема самому достаточно новая.

Я имел ввиду - скетч не универсален. Не хватает много условий.
В данный момент работает как "одностороннее поддержание уровня", верно?
То есть: включен режим 1. При этом любое показание >=100 вызовет срабатывание.
Что будет
- если положение авто в данный момент по датчику 80 ?
- если авто не может достичь заданного предела 100, а прошло уже много времени ?
- если это будет 4 датчика и 8 клапанов? Отлаживать все положения вручную?

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

Линейно сложно решить. Да, теоретически, наверное, возможно, но сложно.
Однако продолжай, весьма интересно.

Может еще кое-кто подключится в тему, он тоже пишет свою версию)))

Опубликовано

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

Ибо я щас представил себе во что вырастет проверка всех условий по всем датчикам

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...