Здравствуйте нужна помощь, для Вас наверное это пустяк.
Вот программа что у меня сейчас есть:
Импульсы по 24 пину, кнопка подключена к 28 что включате или отключает лог еденицу на 26 пине
Резистор на аналоговом входе относительно которого изменяется длинна паузы и импульса, и это значение выводится на лсд 16х2.
Как его переделать, под увеличение паузы и импульса delayMicroseconds двумя кнопками?
например подключить int Up = 8 и int Down = 9, при нажатии на UP значение delayMicroseconds увеличивалось на 100 микросеконд, а при Down уменшалось на 100.
Соответственно это значение выводилось на лсд
CODE:#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);
}
(Отредактировано автором: 01 Апреля, 2014 - 21:40:21) |