Движение с двумя датчиками освещенности


Рис. 5.3.

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

· оба на белом - движение прямо;

· левый (S1) на черном, правый (S2) на белом - движение налево;

· левый на белом, правый на черном - движение направо;

· оба на черном - движение прямо.

Этот регулятор реализуется с помощью условных операторов.

while(true) { if(S1>grey1) { if(S2>grey2) // Оба на белом { Motor[MotorB]=100 ; Motor[MotorC]=100; } else // Правый на черном { Motor[MotorB]=100; Motor[MotorC]=-100; } } else { if(S2>grey2) // Левый на черном { Motor[MotorB]=-100; Motor[MotorC]=100; } else // Оба на черном { Motor[MotorB]=100; Motor[MotorC]=100; } } }

Вот такой, довольно длинный и малоэффективный алгоритм первым приходит в голову. Чтобы не сбиться с линии, приходиться значительно усложнять его, вводить дополнительные проверки и, конечно, калибровку датчиков под конкретную освещенность. Однако достаточно немного измениться окружающим условиям, как устройство будет терять линию, поскольку значения были жестко фиксированными. И так будет продолжаться до тех пор, пока не будут использоваться базовые принципы автоматического регулирования.