Генератор для ШД с изменением длинны паузы и сигнала кнопкой
- Войдите на сайт для отправки комментариев
Вс, 30/03/2014 - 15:39
Вот программа что у меня сейчас есть: Импульсы по 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); }