Генератор для ШД с изменением длинны паузы и сигнала кнопкой

Нет ответов
Drake
Offline
Зарегистрирован: 30.03.2014
Вот программа что у меня сейчас есть:
Импульсы по 24 пину, кнопка подключена к 28 что включате или отключает лог еденицу на 26 пине
Резистор на аналоговом входе относительно которого изменяется длинна паузы и импульса, и это значение выводится на лсд 16х2.
Как его переделать, под увеличение паузы и импульса delayMicroseconds двумя кнопками?
например подключить int Up = 8 и int Down = 9, при нажатии на UP значение delayMicroseconds увеличивалось на 100 микросеконд, а при Down уменшалось на 100.
Соответственно это значение выводилось на лсд


#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 11, 6, 5, 4, 3, 2);
int sensorPin = A15; //регулятор
int sensorValue = 0;
int StepPin = 24; //Крок
int DirPin = 26; //Дірекція
int SwitchPin = 28; //Кнопка переключення дірекції
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean DirOn = false;

void setup()
{
  pinMode(24, OUTPUT); 
  digitalWrite(24, LOW);
  pinMode(DirPin, OUTPUT);
  pinMode(SwitchPin, INPUT);
}

boolean debounce(boolean last)
{
  boolean current = digitalRead(SwitchPin);
  if (last != current)
  {
    delay(5);
    current = digitalRead(SwitchPin);
  }
  return current;
}

void loop ()
{
  currentButton = debounce(lastButton);
  if (lastButton == LOW && currentButton == HIGH)
  {
    DirOn = !DirOn;
  }
  lastButton = currentButton;
  digitalWrite(DirPin, DirOn);

  sensorValue = analogRead(sensorPin);
  sensorValue = map(sensorValue,0,1023,3600,1);
  digitalWrite(24, HIGH);
  delayMicroseconds(sensorValue);
  digitalWrite(24, LOW);
  delayMicroseconds(sensorValue);
  
  lcd.setCursor(0,0);
  lcd.print(sensorValue);
}