Подкорректировать скетч до работоспособности для светофора

Иван11
Offline
Зарегистрирован: 02.07.2019

Нужно подкорректировать скетч на ардуино нано, а то когда подключаешь уже имеющий скетч работает не коректно.

 Светофор на две стороны с авто и с пешеход. Фото 

Задача: Есть два выключателя, когда они в режимк выкл. светофор должен просто мигать желтым как вреале.

При включении первого выключателя нужно что б заработал режим перекрестка одна сторона зеленая(авто + пешеход) другая красная(авто+пешеход) . как в реале.

При включении второго или одновременно двух выключатерей начанаеться режим, современного светофора -сначало едут авто т.е. пешеходы все (красные) авто одна сторона зеленый другая красный и на оборот и после уже пешеходы все стороны (зеленый). 

И что бы при переключении на красный мигал зеленый 4,5. раз .

Работа всего светофора идет через реле, лампочки все 10 шт(12v) Фото: 

Сам код под который сейчас подключены все пины и лампочки

#define L LOW
#define H HIGH

// Пины светодиодов
int pins[] =
{
	// Сторона 1
	// <зелёный>, <желтый>, <красны>
	7, 8, 9,
	// Сторона 2
	10, 11, 12,

	// Пешеходные 1
	// <зелёный>, <красный>
	5, 6,
	// Пешеходные 2
	3, 4
};

int pinlen = sizeof(pins) / sizeof(int);
#define FOR_PINS for(int pin = 0; pin < pinlen; pin++)
//////////////////////////// Шаблоны сигналов пинам ////////////////////////////
bool modernStages[][10] =
{
	{
		// Ст 1
		H, L, L,
		// Ст 2
		L, L, H,
		// Пеш 1
		L, H,
		// Пеш 2
		L, H
	},
	{
		L, H, L,
		L, H, H,
		L, H,
		L, H
	},
	{
		L, L, H,
		H, L, L,
		L, H,
		L, H
	},
	{
		L, L, H,
		L, H, L,
		L, H,
		L, H
	},
	{
		L, L, H,
		L, L, H,
		H, L,
		H, L
	},
	{
		L, H, H,
		L, H, H,
		L, H,
		L, H
	}
};

bool legacyStages[][10] =
{
	{
		H, L, L,
		L, L, H,
		H, L,
		L, H
	},
	{
		L, H, L,
		L, H, H,
		L, H,
		L, H
	},
	{
		L, L, H,
		H, L, L,
		L, H,
		H, L
	},
	{
		L, H, H,
		L, H, L,
		L, H,
		L, H
	},
};

bool maintanceStage[] =
{
	L, H, L,
	L, H, L,
	L, L,
	L, L
};

bool offStage[] =
{
	L, L, L,
	L, L, L,
	L, L,
	L, L
};
////////////////////////////////////////////////////////////////////////////////
void sleepAll()
{
	FOR_PINS
		digitalWrite(pins[pin], LOW);
}

// Сторона - сторона - диагональ
void modernMode()
{
	for(int stage = 0; stage < 6; stage++)
	{
		FOR_PINS
			digitalWrite(pins[pin], modernStages[stage][pin]);
		// При нечётных режимах горит жёлтый
		if(stage % 2 == 0)
			delay(10000);
		else
			delay(5000);
	}
}

// Сторона - сторона
void legacyMode()
{
	for(int stage = 0; stage < 4; stage++)
	{
		FOR_PINS
			digitalWrite(pins[pin], legacyStages[stage][pin]);

		if(stage % 2 == 0)
			delay(10000);
		else
			delay(5000);
	}
}

// Только жёлтые
void maintanceMode()
{
	sleepAll();
	delay(1000);
	FOR_PINS
		digitalWrite(pins[pin], maintanceStage[pin]);
	delay(1000);
}

// Без сигналов
void sleepMode()
{
	sleepAll();
	delay(1000);
}
////////////////////////////////////////////////////////////////////////////////
void setup()
{
	//Serial.begin(9600);
	FOR_PINS
		pinMode(pins[pin], OUTPUT);
	pinMode(14, INPUT_PULLUP);
	pinMode(15, INPUT_PULLUP);
}

void loop()
{
	bool firstOn = digitalRead(14);
	bool secondOn = digitalRead(15);

	if(firstOn && !secondOn)
		modernMode();
	else if(!firstOn && secondOn)
		legacyMode();
	else if(!firstOn && !secondOn)
		maintanceMode();
	else
		sleepMode();
}

 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Влад, глумись, удалять не буду...

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Влад, глумись, удалять не буду...

а что тут глумиться? - нормальный заказ... Или я что-то пропустил?

Автор, сколько готовы платить? С учетом того, что вы уже приходили и получили консультацию бесплатно :)

Иван11
Offline
Зарегистрирован: 02.07.2019

Во сколько оцениваете такую работу?

b707
Offline
Зарегистрирован: 26.05.2017

Иван11 пишет:

Во сколько оцениваете такую работу?

а вы пробовали включать этот код? Что-то не устраивает?

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

Иван11
Offline
Зарегистрирован: 02.07.2019

Могу видео снять как он работает

b707
Offline
Зарегистрирован: 26.05.2017

Иван11 пишет:

Могу видео снять как он работает

а словами описать не проще?

Только четко - что вы ожидаете, что делает светофор - и чем первое отличается от второго.

Иван11
Offline
Зарегистрирован: 02.07.2019

Описать сложно, попробую. Когда два выключателя выключены(одновременно) он просто горит весь(10 ламп), если два выключателя включены (одновременно) он так же горит весь(10 ламп) но при этом мигают два желтых.

Если включить один из выключателей включить он начинает работать в непонятном режиме включает и выключает разные лампы Н-р: на одной стороне загорается желтый+зеленый тут же на другой стороне горит красный и желтый + зеленый пешеход. Или одновременно горит зеленый с красным. Все лампочки подключены как в коде т.е. одна сторона и вторая сторона по пинам. Так же нету такого как мигающий зеленый перед тем как загорится красный. 

b707
Offline
Зарегистрирован: 26.05.2017

"мигающего зеленого" в режимах нет - тут согласен.

Остальное может быть как ошибкой в коде, так и неверным монтажом с Вашей стороны. На первый взгляд я в коде проблем не вижу - это означает, что нужно собирать макет либо в железе, либо в эмуляторе - и разбираться. Могу протестировать этот код за, скажем, 1500 руб. Если по результатам тестов потребуются правки - обсуждаем отдельно.

пишите ded собака cur-ex.ru

На своей кандидатуре не настаиваю, у меня и так дел полно, если кто возьмется дешевле - я не обижусь.

 

Иван11
Offline
Зарегистрирован: 02.07.2019

Спасибо, нашел кажется исполнителя

b707
Offline
Зарегистрирован: 26.05.2017

Иван11 пишет:

Спасибо, нашел кажется исполнителя

ну. удачи... ему :)

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

b707 пишет:

Или я что-то пропустил?

Пропустил.

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Пропустил.

имеешь в виду дискуссию, можно ли использовать розетки в детском саду? - или что-то еще?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Да. 

От него еще и прошлый исполнитель сбежал

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

Влад, глумись, удалять не буду...

Да, в этом разделе грех глумиться. Нечего было пятничную тему сносить :)

Иван11
Offline
Зарегистрирован: 02.07.2019

Можешь и эту сносить не актуально уже

b707
Offline
Зарегистрирован: 26.05.2017

Иван11 пишет:

Можешь и эту сносить не актуально уже

что, свежий исполнитель уже все проблемы решил? Если нет - сносить рано, может он еще сбежит, как первый...

Иван11
Offline
Зарегистрирован: 02.07.2019

все решили осталось только мигающий зеленый сделать, можно удалять

b707
Offline
Зарегистрирован: 26.05.2017

Иван11 пишет:

все решили осталось только мигающий зеленый сделать, можно удалять

а в чем было дело?

Иван11
Offline
Зарегистрирован: 02.07.2019

Реле не туда были подключены  и кнопки вкл выкл перепаял. 

b707
Offline
Зарегистрирован: 26.05.2017

Иван11 пишет:

Реле не туда были подключены  и кнопки вкл выкл перепаял. 

ну то есть ваша ошибка? - я так и думал.

Классный исполнитель, прям через тьму интернета увидал, что собрано неверно? :)

b707
Offline
Зарегистрирован: 26.05.2017

Может вам все же не стоит этим заниматься? - похоже у вас руки на это не заточены.  Видите, хоть вам в прошлой теме все подробнейшим образом обьяснили - куда кнопки, куда реле - вы  все равно все умудрились перепутать.

Иван11
Offline
Зарегистрирован: 02.07.2019

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