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

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

Кто может помочь с кодом? Нужно чтоб по нажатию кнопки выставлялось заданное положение по датчикам от ровера

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

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

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

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

Новый текстовый документ.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 эмодзи.

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

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

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

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