Подскажите как можно поправить код, что бы не происходило прерывания работы шагового двигателя при обновлении экрана.
Обновление экрана необходимо делать с пузой 500 мс, т.к. выводятся показания датчиков, которые опрашиваются ещё чаще.
Обновление экрана необходимо делать с пузой 500 мс, т.к. выводятся показания датчиков, которые опрашиваются ещё чаще.
Код:
#include <Arduino.h>
#include "GyverStepper2.h"
GStepper2<STEPPER2WIRE> stepper(2048, 3, 4);
bool bool_tmr1 = 1;
bool bool_tmr2 = 0;
uint32_t tmr1 = millis();
#define STEPPER_PIN_START 11
#include <EncButton.h>
#define BTN_PIN_START 12
EncButton<EB_TICK, BTN_PIN_START> btn1;
bool flagStart = false;
bool flagStaus = false;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
uint32_t timerLCDredraw = 0;
void LCD()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("11111111");
}
void setup()
{
Serial.begin(9600);
pinMode(STEPPER_PIN_START, OUTPUT);
digitalWrite(STEPPER_PIN_START, LOW);
lcd.init();
lcd.backlight();
}
void loop()
{
btn1.tick();
stepper.tick();
if (btn1.press())
{
flagStart = !flagStart;
flagStaus = !flagStaus;
}
if (flagStart == true && flagStaus == true)
{
stepper.setSpeedDeg(120);
digitalWrite(STEPPER_PIN_START, LOW);
flagStaus = !flagStaus;
}
if (flagStart == false && flagStaus == true)
{
digitalWrite(STEPPER_PIN_START, HIGH);
flagStaus = !flagStaus;
}
if (millis() - timerLCDredraw >= 500)
{
timerLCDredraw = millis();
LCD();
}
}