Программа в несколько этапов.
- Войдите на сайт для отправки комментариев
Вс, 14/04/2013 - 20:49
/*Все это условно ,Есть емкость ,по нажатию кнопки наполняемая водой в течении времени Т1=2000.После этого включается нагреватель на время Т2=500.А потом на время Т3=5000 включается клапан выпуска. */ const int ledPin1 = 10; // клапан наполнения const int ledPin2 = 11; // нагреватель const int ledPin3 = 12;// выпускной клапан const int buttonPin = 3; // кнопка старт int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(buttonPin, INPUT); // initialize the pushbutton pin as an input: } void loop(){ buttonState = digitalRead(buttonPin);//нажали старт if (buttonState == HIGH) { digitalWrite(ledPin1, HIGH); //включился клапан наполнения на 2000 млск delay(2000); digitalWrite(ledPin1, LOW); //выключился клапан наполнения digitalWrite(ledPin2, HIGH);//вкл нагреватель на 500 млск delay(500); digitalWrite(ledPin2, LOW);// выкл нагреватель digitalWrite(ledPin3, HIGH); //включился клапан выпускной на 5000 млск delay(5000); digitalWrite(ledPin3, LOW);//выключился клапан выпускной } }
Не могу понять как это можно сделать без делай. Расписать каждую функцию отдельно.
Но как задать каждой свое время исполнения????Никак не могу подружиться с миллисами. Моск плавится.Толкните в нужную сторону .
http://arduino.ru/tutorials/BlinkWithoutDelay
Так с этого и начинал
один из вариантов . Не судите строго .... совсем строго. Были и другие , но...
без кнопки
После многих попыток сваял вот этот код.Работает как и хотел. Можно ли все это сделать как-то попроще?
Схематично можно так (хотя это по сути то же самое):
Но идеологически правильнее организовать стейт-машину тут.
Может быть, пока это и излишне, но при расширении очень пригодится.
Но идеологически правильнее организовать стейт-машину тут.
Вообщем-то то что вы "организовали" - это уже стейт-машина. Самая настоящая. Стейт-машина - она в голове, а не коде. Как только вы начали рассуждать в терминах "текущие состояние", "условие перехода в состояние..." - вы уже работаете со стейт машиной. Она может быть в виде UML диаграмы на бумаге, реализована if-вами, switch, таблицей обработчиков - это уже второстепенно. Главное - вы применили абстракцию которая позволяют упростить модель задачи. Раздробить ее на унифицированные кусочки. Так что с идеологией - у вас уже все хорошо.