Проекты робоняши кончились, решил давать сыну простые задания, чтобы не просто копировал бездумно код, а что-то сам делал. Одно из таких заданий - по кнопке PLAY на пульте робот едет вперед и ровно через метр останавливается. В итоге у сына не получилось, а я помочь не смог, прошу помощи на форуме. Программа получилась такая Код (Javascript): var encoder = require('@amperka/digital-line-sensor') .connect(P10); var motor = require('@amperka/robot-2wd') .connect(); var receiver = require('@amperka/ir-receiver') .connect(P3); var RADIUS = 32; var WHEEL_LENGTH = 2 * Math.PI * RADIUS; var STEP = 1 / 12; var revolutions = 0; receiver.on('receive', function(code) { if (code === receiver.keys.PLAY) { motor.go({l: 0.5, r: 0.5}); } }); encoder.on('black', function() { revolutions = revolutions + STEP; var distance = revolutions * WHEEL_LENGTH;{ if (distance === 1000){ motor.stop(); } } }); Робот по кнопке с пульта едет вперед, но не останавливается. Команда print(distance, 'mm') выводит в консоль расстояние, то есть цифровой сенсор линий работает. Подскажите, что мы сделали не так? PS. Правильно ли я понимаю, что (distance === 1000) проверяется единожды? То есть условие просто не выполняется и на этом программа завершается? Если так, то какие есть средства для того, чтобы программа ожидала определенного значения distance?
Вы не прочитали учебника JavaScript и верите что программирование МК - игрушки. Некоторая часть вины за это лежит не на вас, безусловно. Либо Вы читаете книгу (и с ужасом понимаете во что влезли) и начинаете въезжать в программирование, либо вам это все равно надоест - постоянно просить помощь зала.
Послушайте, Вы взрослый состоявшийся человек, я взрослый состоявшийся человек. И так уж случилось, что состоялся я в сфере, далёкой от технической стороны информационных технологий. И Вы должны понимать, что при таких вводных прописные истины про то, что неплохо бы прочесть учебник и решить, немножко не к месту очень сильно. Уже все давно решено. Я знаю, что неплохо бы прочесть учебник, а ещё я знаю, что у сына имеется интерес к программированию, и я очень не хочу спугнуть его скучным учебником. Для всего должно быть свое время, и для учебника оно еще не пришло. По этому просто прошу Вас, если есть что сказать по теме, я с огромным удовольствием выслушаю и буду чрезмерно благодарен. Если нет, ну значит нет. Буду дальше искать.
Вопрос: в какой области вы состоявшийся человек? Теперь представьте - приходит вьюноша (не по возрасту - а по умениям) и сразу в вашей области хочет сделать хирургическую операцию на глазу, скажем. При этом - ни разу в жизни скальпель не державши. Как думаете - не пришло этому вьюноше ещё время сесть за скучный учебник и прочитать там хотя бы про скальпели? Пущай режет, чего уж там - глаза всё равно два, вон Кутузов, говорят, обходился некомплектом. Демагогия - как раз вот этот процитированный абзац. Меня всегда поражал подход "если ничего не получается - прочти, наконец, инструкцию!" - не знаю, может, в воду чего подмешивают специально? Учиться основам программирования надо, и начинать надо именно с самых основ, а уж то, как это будет преподнесено - дело рук преподавателя, учебник - лишь инструмент. Так что это не учебник скучный - это вы не можете правильно подать материал. И @ИгорьК совершенно прав.
Потому что к миру программирования не имею отношения и это не моя область знаний, я и советую Вам то, что понял сам. Пусть это и азбучная истина. Если у Вас хватит воли и она не выйдет на пустые понты, через полтора года топтания на месте Вы придете к ней же.
Нуууу! Взрослый... я тоже умею гвозди в стену забивать! А Вот умей поставить задачу пригодную для решения... ВЗРОСЛЫЙ. И выработай решение... А фраза: " Я ГОЛОЙ ЗАДНИЦЕЙ ЕЖЕЙ ДАВИЛ " тут не к месту. А если только тонкостей не в силах... то на то и форум. А с ТЗ я и сам могу.
Если вдруг кому интересно, то в моем случае необходимо задать диапазон расстояний, а не конкретное значение. То есть не Код (Javascript): if (distance === 1000) , а Код (Javascript): if (distance >= 1000) Только по второму нажатию на PLAY робот не поедет. Видимо нужно обнулить переменную distance. PS. И мне совершенно не понятно, как бы мне помог учебник, если тут чистой воды особенность работы конкретного устройства на конкретном макете. Код, с точки зрения синтаксиса написан совершенно верно. Просто переменная distance не может вернуть ровно 1000. PS2. Из 9 сообщений два по теме.
Да теперь точно понимаю... и простите за нарушения в форуме... тут JS и идея с возможностями не понятна. Конечно я не прав, но рассматривать управление чем-то (что стало модно) с точки зрения построения документов (JS) и WEB-страниц точно не моё. Ну не могу скрестить внешний вид документа и его крутость с системой управления. Блин хорошо, что WORD с его межстрочными интервалами не стало алгоритмом работы устройства. А секритутаризм берёт своё!
Нууу... пусть циклирует(условно - с точки зрения WORD и EXEL, но не Си разумеется) и ожидает своей 1000... только точное совпадение это перебор - контролируйте выход за границы.
И еще одно дополнение по поводу выполнения программы при последующих нажатиях PLAY. Как оказалось, обнулять переменную distance в конце программы бесполезно. Программа закончилась, на этом все. Обнулять необходимо при нажатии кнопки PLAY. По этому делаем так Код (Javascript): receiver.on('receive', function(code) { if (code === receiver.keys.PLAY) { revolutions = 0; motor.go({l: 0.5, r: 0.5}); } });