РОБОНЯША - преследователь.

Тема в разделе "Глядите, что я сделал", создана пользователем MR_YouTube, 26 май 2019.

  1. MR_YouTube

    MR_YouTube Нерд

    Здравствуете, я решил поэксперементировать и сделать так что-бы РОБОНЯША преследовал вас а при приближении уезжал. Я уверен что до меня это сделали куча людей, но может быть и нет;).
    Код (Javascript):
    var SPEED = 0.7;
    var DISTANCE_MIN = 85;
    var DISTANCE_MAX = 86;

    var sticker = require('@amperka/robot-2wd')
    .connect();
    var ultrasonic = require('@amperka/ultrasonic').connect({
    trigPin: P12,
    echoPin: P13
    });

    var check = function(distance) {
    if (distance < DISTANCE_MIN) {
    sticker.go({l: -SPEED, r: -SPEED});
    }else if (distance > DISTANCE_MAX){
      sticker.go({l: SPEED, r: SPEED});
    }else {
    sticker.stop();
    }
    };

    setInterval(function() {
    ultrasonic.ping(function(error, value) {
    if (!error) {
    check(value);
    }
    }, 'cm');
    }, 100);

    //когда тестировал робоняша не ехал из за низкого заряда. Но если и у вас такое, то пешите. Всё прочитаю и постараюсь исправить. :-)
    Предложения по улучшению кода тоже пишите, например: по вкл. выкл. функции по ИК пульту, и т.п. Буду очень признателен.:)
     
    NikitOS нравится это.
  2. MR_YouTube

    MR_YouTube Нерд

    Вот не большой апгрейд. При нажатии так называемой кнопки "TOP" запускается указанная выше программа.
    Код (Javascript):
    var marsohod = require('@amperka/robot-2wd').connect();
    var ir = require('@amperka/ir-receiver').connect(P3);
    ir.on('receive', function(code, repeat) {
    if (code === ir.keys.TOP)
      {

    var SPEED = 0.7;
    var DISTANCE_MIN = 85;
    var DISTANCE_MAX = 86;

    var sticker = require('@amperka/robot-2wd')
    .connect();
    var ultrasonic = require('@amperka/ultrasonic').connect({
    trigPin: P12,
    echoPin: P13
    });

    var check = function(distance) {
    if (distance < DISTANCE_MIN) {
    sticker.go({l: -SPEED, r: -SPEED});
    }else if (distance > DISTANCE_MAX){
      sticker.go({l: SPEED, r: SPEED});
    }else {
    sticker.stop();
    }
    };

    setInterval(function() {
    ultrasonic.ping(function(error, value) {
    if (!error) {
    check(value);
    }
    }, 'cm');
    }, 100);}
    });
    Пожалуйста, помогите сделать так: при нажатии кнопки "POWER" программа останавливается. Сам не могу додуматься.:(
     
    Последнее редактирование: 26 май 2019
  3. Daniil

    Daniil Гуру

    Я тот ещё советчик в js, но принцип такой:
    есть флаг разрешения.
    Если этот флаг true, то ваш код должен выполнятся.
    If (flag==true)
    {
    выполнять код
    }
    если флаг false, то код не выполняется (if пропускает код).
    Теперь нужно постоянно опрашивать приемник.
    Если пришел код клавиши "power", то нужно инвертировать флаг.
    flag=!flag
    как-то так.
    Проблема может быть если ваш код выполняется долго, на столько долго, что нужно будет нажимать клавишу "power" только когда мк опрашивает приемник. Но тут я уже не подскажу - не разбираюсь в js
     
  4. MR_YouTube

    MR_YouTube Нерд

    Да, спасибо, попробую ваш вариант:)
     
  5. MR_YouTube

    MR_YouTube Нерд

    попробывал, не работает. Редактор ругается. Но за предложение большое спасибо!!!
     
  6. parovoZZ

    parovoZZ Гуру

    Знания языка надо подтянуть. Компиляторы не могут обнаружить алгоритмические ошибки. Только синтаксические.