Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Нужна помощь с Arduino

Страниц (1): [1]
 

1. Drake - 01 Апреля, 2014 - 21:33:28 - перейти к сообщению
Здравствуйте нужна помощь, для Вас наверное это пустяк.
Вот программа что у меня сейчас есть:
Импульсы по 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);
}