Divertor esp помогите написать прошивку пожалуйста

Всем привет, я новичок, если куда то не туда написал простите, я делаю простого робота, если есть те кто захочет мне помочь разобраться с кодом буду очень благодарен, смысл в том у нас есть 2 реле, у каждой еле стоит по своему датчику, при пропадании сигнала есп должна ждать ровно 1 минуту и после чего подать сигнал на реле до прихода сигнала, как приходит сигнал есп должна продолжить следить за датчиками, точно также со второй реле, и с этим я справился, но мне надо чтобы когда на двух датчиках пропадал сигнал одновременно есп должна подать сигнал на реле 1 и ждать прихода сигнала, после прихода сигнала она ждет 3 секунды и подает сигнал на вторую реле также до прихода сигнала, вот первый код который у меня получился:

const int module_relayPin1 = 2;const int module_relayPin2 = 3;const int buttonPin1 = 5;const int buttonPin2 = 6;

int state = HIGH;int priorityStep = 0;

void setup() {pinMode(module_relayPin1, OUTPUT);pinMode(module_relayPin2, OUTPUT);pinMode(buttonPin1, INPUT);pinMode(buttonPin2, INPUT);}

void loop() {if (digitalRead(buttonPin1) == LOW && digitalRead(buttonPin2) == LOW && priorityStep == 0) {digitalWrite(module_relayPin1, HIGH);priorityStep = 1;}else if (priorityStep == 0) {priorityStep = 3;}

if (priorityStep == 1) {if (digitalRead(buttonPin1) == LOW) {digitalWrite(module_relayPin1, LOW);digitalWrite(module_relayPin2, HIGH);priorityStep = 2;}}

if (priorityStep == 2) {if (digitalRead(buttonPin2) == LOW) {digitalWrite(module_relayPin2, LOW);priorityStep = 3;}}

if (priorityStep == 3) {state = digitalRead(buttonPin1);if (state == HIGH) {digitalWrite(module_relayPin1, HIGH);} else {digitalWrite(module_relayPin1, LOW);}

state = digitalRead(buttonPin2);if (state == HIGH) {digitalWrite(module_relayPin2, HIGH);} else {digitalWrite(module_relayPin2, LOW);}}}

```

Тут правда стоит при появлении сигнала подать сигнал на реле, но это сделано специально для тестов

также у меня есть схема, попробую ее прикрепить:

немного про схему, датчики у меня запитаны от 12 вольт, поэтому сигнал идет на есп через оптопару LVT-815, также я думаю вы заметили мотор, на него можно не обращать внимание, он не так важен, также в схеме используется arduino uno, но мне без разницы что использовать esp c3 super mini или Arduino uno

Также я экспериментировал с искусственным интеллектом, но он показался мне не очень, поэтому по урокам AlexGyver за один вечер я попытался написать прошивку

также я оставлю свой телеграмм, если что пишите мне, буду очень благодарен ( @Glugbroy516 )

если что-то не упомянул с удовольствием отвечу на все вопросы!

image

Ну, хорошо, а хотели то чего? Что-то в скетче не работает? :thinking:
@BABOS, походу ваша тема,- ИИ взбуновался/развлекается!

И Вы здравствуйте!

Как пели три немецике красотки:

что в переводе с языка наших западных непартнёров означает: “Нам пофигу кто ты и откуда”

А вот что нам не пофигу, так это невозможность помочь Вам с Вашей проблемой. Я честно попытался разобраться в выложенном коде, но не смог )хотя, далеко не новичок). У Вас на клавиатуре клавишу “Ctrl” заело? Или клавишу “T”? Или почему Вы не можете привести код в более или менее читабельный вид?

ошибся, это сами датчики, я их сам обозначил поэтому такое название. А в самом скетче проблема такая что при включении есп сразу включает две реле, чего в скетче нет, скорее всего надо полностью заново строить скетч, ну или пробовать цеплять резисторы от помех, также в более раннем скетче я писал его под кнопки, да и была проблема то что пины для чтения сигнала стоят 5 и 6, а в итоге есп откликалась на совсем другие пины 2 и 3, такая проблема тоже была, когда я начал в ней капаться скетч и исправлять скетч у меня ничего не получилось, ну и я пришел к скетчу который щас я опубликовал, короче я сильно запутался

У вас инсульт или вам менее 14 лет?

const int module_relayPin1 = 2;
const int module_relayPin2 = 3;
const int buttonPin1 = 5;
const int buttonPin2 = 6;

int state = HIGH;
int priorityStep = 0;

void setup() {
pinMode(module_relayPin1, OUTPUT);
pinMode(module_relayPin2, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}

void loop() {
if (digitalRead(buttonPin1) == LOW && digitalRead(buttonPin2) == LOW && priorityStep == 0) {
digitalWrite(module_relayPin1, HIGH);
priorityStep = 1;
}
else if (priorityStep == 0) {
priorityStep = 3;
}

if (priorityStep == 1) {
if (digitalRead(buttonPin1) == LOW) {
digitalWrite(module_relayPin1, LOW);
digitalWrite(module_relayPin2, HIGH);
priorityStep = 2;
}
}

if (priorityStep == 2) {
if (digitalRead(buttonPin2) == LOW) {
digitalWrite(module_relayPin2, LOW);
priorityStep = 3;
}
}

if (priorityStep == 3) {
state = digitalRead(buttonPin1);
if (state == HIGH) {
digitalWrite(module_relayPin1, HIGH);
} else {
digitalWrite(module_relayPin1, LOW);
}

state = digitalRead(buttonPin2);
if (state == HIGH) {
digitalWrite(module_relayPin2, HIGH);
} else {
digitalWrite(module_relayPin2, LOW);
}
}
}

вот код в человеческом виде, мне сказали что тут строго с кодом, и если не правильно его выделить могут дать по шапке, поэтому вот

Вы правы, мне 14 лет

Это аптамушта

А ты их не проходил.

сразу скажу, извиняюсь за все ошибки

Вы это называете человеческим видом?

Странные у Вас представления о человеческим виде.

В человеческом виде Ваш код выглядит вот так (и будьте любезны впред выкладывать его именно так)

const int module_relayPin1 = 2;
const int module_relayPin2 = 3;
const int buttonPin1 = 5;
const int buttonPin2 = 6;

int state = HIGH;
int priorityStep = 0;

void setup() {
  pinMode(module_relayPin1, OUTPUT);
  pinMode(module_relayPin2, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
}

void loop() {
  if (digitalRead(buttonPin1) == LOW && digitalRead(buttonPin2) == LOW && priorityStep == 0) {
	 digitalWrite(module_relayPin1, HIGH);
	 priorityStep = 1;
  } else if (priorityStep == 0) {
	 priorityStep = 3;
  }

  if (priorityStep == 1) {
	 if (digitalRead(buttonPin1) == LOW) {
		digitalWrite(module_relayPin1, LOW);
		digitalWrite(module_relayPin2, HIGH);
		priorityStep = 2;
	 }
  }

  if (priorityStep == 2) {
	 if (digitalRead(buttonPin2) == LOW) {
		digitalWrite(module_relayPin2, LOW);
		priorityStep = 3;
	 }
  }

  if (priorityStep == 3) {
	 state = digitalRead(buttonPin1);
	 if (state == HIGH) {
		digitalWrite(module_relayPin1, HIGH);
	 } else {
		digitalWrite(module_relayPin1, LOW);
	 }

	 state = digitalRead(buttonPin2);
	 if (state == HIGH) {
		digitalWrite(module_relayPin2, HIGH);
	 } else {
		digitalWrite(module_relayPin2, LOW);
	 }
  }
}

В таком случае внимательно несколько раз перечитывайте, что вам напишет @ЕвгенийП и точно следуйте его рекомендациям!

Ладно

а так есть советы что можно убрать в скетче чтобы заработал, может поменять скетч или поправить что?

Есть, но Вы не их послушаете, я таки как Вы здесь задолбался одно и то же писать. И=Пишешь пишешь, иногда по часу на писанину тратишь, а в благодарность получаешь: “А по делу есть чего?”.

В таком виде Вам крайне трудно отлаживать даже простую логику, потому Вы в ней и запутались. Кон надо переписывать нормально и, в процессе переписывания, Вы сами не заметите, как проблема решится (если, конечно, будете переписывать), в чём я лично сомневаюсь.

может есть статьи где написано как построить код, логику можно просто текстом объяснить, а дальше по уроку я уже сам напишу, если что буду задавать вопросы

построить код имею в виду то что, вот этот код который я представил выше я написал за вечер, хотя раньше я никогда не писал код (тем более для микропроцессора) может я не те команды пишу, вот например команда приоритета if (digitalRead(buttonPin1) == LOW && digitalRead(buttonPin2) == LOW && priorityStep == 0) { digitalWrite(module_relayPin1, HIGH);

ее мне полностью написала ии, поэтому я думаю мне пару книг или статей и моя проблема уйдет)

это тебе надо объяснить, более доходчиво, из первого сообщения не совсем понятно.
прям по пунктам

  • после подачи питания включаем/выключаем это и то
  • про появлении на датчике 1, делаем это
  • и т.д…

Например, если у Вас в момент включения питания обе кнопки не нажаты, то строки №№18-19, №№25-29 и №№33-34 не сработают никогда от слова совсем, их можно смело выбрасывать. Надеюсь, Вы это видите? Таи и должно быть?

это и была моя задумка, потому что такие моменты будут очень часто, но оно не работает