Вот мой скетч:
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 , весб алгоритм с запуском\остановкой отрабатывает как надо. Где может быть проблема?