[Решено] Робоняша. Не получается запустить ультразвуковой дальномер и ИК-приемник одновременно.

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Walker2000, 5 янв 2018.

  1. Walker2000

    Walker2000 Нуб

    Всем привет!

    Купил ребенку Робоняшу, бодро прошли все задания из книжки. Но при попытки шага в сторону начались глюки. Выяснилось, что код может работать во время подключения робота к USB, но работать некорректно при питании от штатного аккумулятора.

    А именно код:
    Код (Javascript):
    var SPEED = 0.5;
    var ANGLE = 82;
    var MAX_DISTANCE = 10;

    var receiver = require('@amperka/ir-receiver').connect(P2);
    var neck = require('@amperka/servo').connect(P8);
    var marsohod = require('@amperka/robot-2wd').connect();
    var ultrasonic = require('@amperka/ultrasonic').connect({trigPin: P11, echoPin: P12});

    neck.write(ANGLE);

    marsohod.acceleration(0.25);

    var scan = function() {
    ultrasonic.ping(function(error, value) {
    //  print(value);
    if (!error && value < MAX_DISTANCE) {
    marsohod.stop();
    }
    }, 'cm');
    };

    receiver.on('receive', function(code) {
    if (code === receiver.keys.TOP) {
    marsohod.go({l: SPEED, r: SPEED});
    }
    if (code === receiver.keys.BOTTOM) {
    marsohod.go({l: -SPEED, r: -SPEED});
    }
    if (code === receiver.keys.LEFT) {
    marsohod.go({l: 0, r: SPEED});
    }
    if (code === receiver.keys.RIGHT) {
    marsohod.go({l: SPEED, r: 0});
    }
    if (code === receiver.keys.POWER) {
    marsohod.stop();
    }
    if (code === receiver.keys.MINUS) {
      ANGLE = ANGLE - 5;
      neck.write(ANGLE);
    }
    if (code === receiver.keys.PLUS) {
      ANGLE = ANGLE + 5;
      neck.write(ANGLE);
    }
    });

    setInterval(scan, 100);
    При подключенном шнурке USB работает на ура. При работе от аккумулятора ультразвуковой дальномер не работает. Использовались следующие порты:

    P2 - ИК-приемник
    P3 - светодиод
    P8 - сервопривод (поворот головы)
    P9 - датчик линии цифровой правый
    P10 - датчик линии цифровой левый
    P11 - УЗ дальномер (триггер)
    P12 - УЗ дальномер (эхо).

    Буду благодарен за совет, как это вылечить.
     
  2. Walker2000

    Walker2000 Нуб

    Последнее редактирование: 6 янв 2018