В третьем релизе предыдущая бесполезность заменена другой бесполезностью:
Код: Выделить всё
void cannal_1() {
imp1++;
}
void ReadSignals() {
if (imp1<3) sign1=1; else sign1=0; imp1=0;
Правильность определения импульса здесь следует определять по обоим фронтам, сравнивая полученную длительность импульса с ожидаемым диапазоном, и на этом основании и выносить решение о том, принят ли реальный импульс или это была помеха.
В противном случае, вот эти вот три фронта - это пустая трата времени и кода. Любая серия коротких помех за интервал времени между вызовами ReadSignals() наберет эти ваши три импульса, и они будут неотличимы от реального сигнала.
А то, что сейчас "на столе" работает нормально, означает лишь то, что таких случайных помех сейчас нет.
Я ж говорю - ошибки в коде могут оставаться незамеченными и не портить работу в определенных условиях.
По стилю кодописания - по-прежнему жуть жуткая. В языке С принято каждую новую команду записывать с новой строки. Это убирает неоднозначность чтения, как в показанном блоке, когда команда imp1=0 фактически выполняется за пределами блока if-else.
Про ошибки с англ.названиями уже неоднократно говорил. "Вперед" - это не DIR, а forward. "Возможное пересечение вперед" - это "possible forward". Фраза "do back" переводится как "делай наоборот". Слово "channel" пишется именно так, через "h". "Rate" - это "скорость, темп". "Режим" - это "mode".
"Fire" - это "огонь" или "стрельба". А "свет" - это "light". А то из текста получается, что первый вошедший в сортир будет застрелен


