darkleviathan
@darkleviathan

Почему кнопка конфликтует с двигателем на Arduino?

Вот мой скетч:
int analogPin = A0;
int val = 0;
#include "GyverMotor.h"

GMotor motor(DRIVER3WIRE, 7, 8, 9, HIGH);

unsigned long time_work;
int tester;

void setup() {
  Serial.begin(9600);
  motor.setLevel(HIGH);

  //motor.setSmoothSpeed(40);
  // ключ на старт!
  motor.setMode(FORWARD);
  //motor.setMinDuty(50);

}

void loop() {
  val = analogRead(analogPin);
  //Serial.println(val);

  if (val < 700) {tester = 1;} // кнопка включена
  if (val >= 700) {tester = 3;} // кнопка выключена
  
  if (tester == 1 && millis() - time_work > 5000) {
      time_work = millis();
      tester = 0;
      Serial.println("step1");
      motor.smoothTick(255);
    }

    if (tester == 0 && millis() - time_work > 5000) {
      time_work = millis();
      tester = 1;
      Serial.println("step2");
      motor.smoothTick(0);
    }

}


Проблема такого рода:
Если кнопка выключена, переменная tester = 3,
Двигатель срабатывает, после нажания кнопки, что меняет значение переменной на 1, и после отрабатывания условия меняется на 0 и так по кругу. Для наглядности в консоль я пишу step1, step2.
Так вот если кнопка подключена, отрабатывает все время только step1, что не понятно почему, переменная то меняется.

Если я игнорирую кнопку и устанавливаю изначально tester = 1 , весб алгоритм с запуском\остановкой отрабатывает как надо. Где может быть проблема?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
@evgeniy_lm
А что у вас за изврат с подключением кнопки?
В принципе подключить к аналоговому входу 4-5 кнопок можно (но не нужно). Для одной кнопки это идиотизм.
Посмотрите значение val в плоттере, думаю будет интересно

в сктче у вас есть if (tester == 1 и if (tester == 0 про tester == 3 ваш скетч ничего не знает
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
KJhas
@KJhas
а чо не так-то?
в цикле после ненажатия кнопки tester=1 -> и 5с if(tester==1 -> timework=milis() и все повторяется,
если нажата, вооще ничего не делаем. второй if никогда не сработает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы