Народ помогите!!!!!!! У меня не работает. Робот должен на основании одометра остановиться //остановка 1 и продолжить движение до // остановка 2 Блин такой код не работает. Где ошибка? // библиотеки var motor = require('@amperka/motor'); var rightMotor = motor.connect(motor.MotorShield.M2); rightMotor.write(-0); var leftMotor = motor.connect(motor.MotorShield.M1); leftMotor.write(0); var encoderleft = require('@amperka/digital-line-sensor') .connect(P9); // p9 left var encoderright = require('@amperka/digital-line-sensor') .connect(P10); // p10 right var projector= require('@amperka/led').connect(P2);projector.turnOn(); var receiver = require('@amperka/ir-receiver') .connect(P1); //ПОСТОЯННЫЕ переменные var RADIUS = 32; var WHEEL_LENGTH = 2 * Math.PI * RADIUS; var STEP = 1 / 12; // Изменяемые переменные (значения по умолчанию) начинаем с нуля считать расстояние var revolutionsleft = 0; var distanceleft = 0; var revolutionsright = 0; var distanceright = 0; var step1l = 1250; // первая остановка через 1200 var step1r = 1350; // первая остановка через 1350 var step2l = 600; // 2 остановка через 600 var step2r = 850; // 2 остановка через 850 encoderleft.on('black', function() { revolutionsleft = revolutionsleft + STEP; distanceleft = revolutionsleft * WHEEL_LENGTH; print(distanceleft , "left"); }); encoderright.on('black', function() { revolutionsright = revolutionsright + STEP; distanceright = revolutionsright * WHEEL_LENGTH; print(distanceright , "right"); }); receiver.on('receive', function(code) { if (code === receiver.keys.X) { rightMotor.write(-0.6); leftMotor.write(0.6); projector.turnOn(); } if (code === receiver.keys.Y) { rightMotor.write(0); leftMotor.write(0); projector.turnOff(); } }); var step1 =setInterval (function(){ if (step1l <= distanceleft ) { leftMotor.write(0); projector.blink(0.2,0.6);} if (step1r <= distanceright) { projector.turnOff(); rightMotor.write(-0); revolutionsleft = 0; distanceleft = 0; revolutionsright = 0; distanceright = 0; } }); //первая остановка и запускается step2 var step2 =setInterval (function(){ if (step2l <= distanceleft ) { leftMotor.write(0); projector.blink(0.2,0.6);} if (step2r <= distanceright) { projector.turnOff(); rightMotor.write(-0);} }); //вторая остановка
Алгоритм прост: правое колесо проезжает заданное расстояние и останавливается, одновременно с этим левое колесо проезжает другое заданное расстояние и останавливается. После этого цикл возобновляется: правое колесо проезжает заданное расстояние и останавливается, одновременно с этим левое колесо проезжает другое заданное расстояние и останавливается.
это не алгоритм. Это описание того, как хотелось бы, чтобы работала программа. Для описания ТЗ в платном разделе сойдет, для программиста - нет.
Попробую спросить по другому: какой командой нужно ограничить часть кода, чтобы он выполнялся только один раз, и не выполнялся в следующий момент