последовательное выполнение действий

xgap
Offline
Зарегистрирован: 30.03.2018

Можете поделится примером как можно реализовать последовательное выполнение действий на ардуино?

например сначала проверяется условие есть ли входной сигнал на pin3 и pin4 если да то подается сигнал на pin10 и pin11(и наличие или отсутствие сигнала на 3 и4 пине не имеет значения) , до тех пор пока не поступит сигнал с pin6, это шаг 1. дальше подается сигнал на pin 8 и pin12 до появления сигнала на pin 2. и т. д.

sadman41
Offline
Зарегистрирован: 19.10.2016
NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Нужно завести переменную которая бы позволяла понять на каком этапе сейчас действие. Значение переменной и значение сигналов на пинах будут условием подачи сигналов и значение этой переменной также меняется для перехода на следующий шаг. 

void loop(){
....
if(mode == 0 && pin1==1 && pin2 == 1){
  mode = 1;
  pin3 = 1;
  pin4 = 1;
}
if(mode == 1 && pin5 == 1){
  mode = 2;
  pin6 = 1;
}
if(mode = 2 && pin7 == 1 && pin8 == 1){
  mode = 3;
  pin9 = 1;
  pin10 = 1;
}
....
}

конечно pin3 = 1 это digitalWrite(3,1) , а pin8 == 1  это digitalRead(8) == 1  если это прминять к языку Arduino

P.S. Про "конечные автоматы" больно муторно написано.

xgap
Offline
Зарегистрирован: 30.03.2018

попробовал по вашему методу
void loop() {

if(mode==0&&digitalRead (3)==1&&digitalRead (4)==1)
{ mode=1;
digitalWrite (10,1);
digitalWrite (11,1);

}// запускается шаг 1

if(mode==1&&digitalRead (6)==1)
{
mode=2;
digitalWrite (8,1);
digitalWrite (11,1);

} // запускается шаг 2

if(mode==2&&digitalRead (2)==1)
{
mode=3;
digitalWrite (9,1);
digitalWrite (11,1);
digitalWrite (12,1);
но при переходе из шага 1 в шаг 2 pin10 не отключается, получается нужно в каждом новом шаге писать отключениее старого по типу digitalWrite (9,0); . Также по чему то не переходит в следущий шаг(шаг3), а их у меня по плану 10

ven-til
Offline
Зарегистрирован: 13.02.2018

Вам нужно сначала алгоритм расписать для себя же  подробнее. А то так и будете удивляться.

xgap
Offline
Зарегистрирован: 30.03.2018

алгоритм для себя написал но проблема в реализации, не могу понять по какой причине запускается шаг 3
[code]
bool mode=0; //переменная указывающяя номер шага шага программы
void setup() {
pinMode(3, INPUT);
pinMode(2, INPUT);
pinMode(1, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(0, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, INPUT); // put your setup code here, to run once:

}

void loop() {

if(mode==0&&digitalRead (3)==1&&digitalRead (4)==1) //считываю состояние условной переменной и состояния входов 3 и 4 и запускаю шаг 1.
{ mode=1; // присваиваю значение переменной
digitalWrite (10,1);
digitalWrite (11,1);

}
// Выполняется шаг 1

if(mode==1&&digitalRead (6)==1) // как только поступит сигнал вход пина 6 начинает выполнятся шаг 2
{
mode=2; // присваиваю значение переменной
digitalWrite (10,0); // выключаю пин 0 ( по другому не выключается и остаеся в состоянии HIGH)
digitalWrite (8,1);
digitalWrite (11,1);

}
// Выполняется шаг 2

if(mode==2&&digitalRead (2)==1) // как только поступит сигнал вход пина 2 начинает выполнятся шаг 3
{
mode=3;
digitalWrite (8,0); // выключаю пин
digitalWrite (9,1);
digitalWrite (11,1);
digitalWrite (12,1);

}
// Выполняется шаг 3
}
[/code]

sadman41
Offline
Зарегистрирован: 19.10.2016

А вы зачем bool mode присваиваете значения 2, 3... ?

xgap
Offline
Зарегистрирован: 30.03.2018

ааа так вот по чему он не хотел дальше шаги делать.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

sadman41 пишет:

А вы зачем bool mode присваиваете значения 2, 3... ?

Как ты это разглядел в этом мусоре ? Жуть !

sadman41
Offline
Зарегистрирован: 19.10.2016

brokly пишет:

sadman41 пишет:

А вы зачем bool mode присваиваете значения 2, 3... ?

Как ты это разглядел в этом мусоре ? Жуть !

Исключительно случайно, чесслово.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Всетаки автору надо подучить типы данных и чем они отличаются, а то потом будет вопрос почему после 32768 идет -32768 или что-то в этом роде.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

NeiroN пишет:

Всетаки автору надо подучить типы данных и чем они отличаются, а то потом будет вопрос почему после 32768 идет -32768 или что-то в этом роде.

Так не бывает.