Не могу разобраться в коде Йодо/Робоняши

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем DukeSeeD, 23 май 2019.

  1. DukeSeeD

    DukeSeeD Нерд

    Добрый день , есть компоненты из набора Йоды и Робоняши.
    вот наварганил из примеров в обучающих материалах

    Код (Javascript):
    var servo = require('@amperka/servo')
      .connect(P13);
    var led = require('@amperka/USER]/led').connect(P1);

    var receiver = require('@amperka/ir-receiver')
      .connect(P0);
    var buzzer = require('@amperka/buzzer').connect(P2);

    receiver.on('receive', function(code) {
      if (code === receiver.keys.SQUARE) {
    servo.write(90)    ;
      }
      if (code === receiver.keys.CROSS) {
        servo.write(40);
      }
      if (code === receiver.keys.TRIANGLE) {
        servo.write(140);
      } if (code === receiver.keys.BOTTOM) {
        marsohod.go({l: -0.25, r: -0.25});
      }
      if (code === receiver.keys.RED) {
        led.toggle();
      }
      if (code === receiver.keys.GREEN) {
        buzzer.toggle();
      }
    });
    var SPEED = 0.5;

    var marsohod = require('@amperka/robot-2wd')
      .connect();
    receiver.on('receive', function(code) {
      if (code === receiver.keys.TOP) {
        marsohod.go({l: SPEED, r: SPEED});
        servo.write(90);
      }
      if (code === receiver.keys.POWER) {
        marsohod.stop();
      }
      if (code === receiver.keys.LEFT) {
        marsohod.go({l: 0, r: 0.3 });
        servo.write(140);
      }
      if (code === receiver.keys.RIGHT) {
        marsohod.go({l: 0.3, r: 0 });
        servo.write(40);
      }
    if (code === receiver.keys.GREEN) {
        marsohod.go({l: 1, r: 1});
    }
    });

    проблема в этих строках, не пойму в чем(
    Код (Javascript):
      if (code === receiver.keys.RED) {
        led.toggle();
      }
      if (code === receiver.keys.GREEN) {
        buzzer.toggle();
      }

    Должно быть при нажатии красной кнопки на пульте мигание светодиода , а при зеленой пищание зуммера... но что то идёт не так... и зуммер и светодиод включаются при нажатии любой кнопки на пульте , даже на не запрограммированной... вроде же все просто... при том что все остальное работает нормально .. оба мотора и сервопривод
     
    Последнее редактирование: 23 май 2019
  2. NikitOS

    NikitOS Король шутов Администратор

    Читаем закреплённое сообщение и исправляем ошибки
     
    DukeSeeD нравится это.
  3. Daniil

    Daniil Гуру

    Что в JS значит "==="?
     
  4. DukeSeeD

    DukeSeeD Нерд

    норм?
     
  5. DukeSeeD

    DukeSeeD Нерд

    === значит равно
     
    Daniil нравится это.
  6. Daniil

    Daniil Гуру

    Спасибо, не знал.
     
  7. ИгорьК

    ИгорьК Гуру

    Код (C++):
    1 == '1'  -> true
    1 === '1' -> false
     
    NikitOS и Daniil нравится это.
  8. Daniil

    Daniil Гуру

    я уже почитал про такое сравнение. Думал у ТС опечатка.
    Любопытный синтаксис
     
  9. ИгорьК

    ИгорьК Гуру

    Это очень полезная фича. Пришло, например, что-то по UART, надо сравнить, "==" - сравнит с автоматическим преобразованием типов.
     
    Daniil нравится это.
  10. ИгорьК

    ИгорьК Гуру

    Зачем у вас в скрипте дважды повторена конструкция
    Код (C++):
    receiver.on('receive', function(code) {
    ...
     
    DukeSeeD нравится это.
  11. DukeSeeD

    DukeSeeD Нерд

    Молодец, в этом и была ошибка , вставил всё под одно, заработало как надо, спасибо
     
  12. NovaStream2030

    NovaStream2030 Напечатан на 3D-Принтере

    Код (Javascript):
    var servo = require('@amperka/servo')
      .connect(P13);
    var led = require('@amperka/led').connect(P1);
    var receiver = require('@amperka/ir-receiver')
      .connect(P0);
    var buzzer = require('@amperka/buzzer').connect(P2);
    var marsohod = require('@amperka/robot-2wd')
      .connect();
    var SPEED = 0.5;
    receiver.on('receive', function(code) {
      if (code === receiver.keys.SQUARE) {
    servo.write(90)    ;
      }
      if (code === receiver.keys.CROSS) {
        servo.write(40);
      }
      if (code === receiver.keys.TRIANGLE) {
        servo.write(140);
      }
      if (code === receiver.keys.BOTTOM) {
        marsohod.go({l: -0.25, r: -0.25});
      }
      if (code === receiver.keys.RED) {
        led.toggle();
      }
      if (code === receiver.keys.GREEN) {
        marsohod.go({l: 1, r: 1});
        buzzer.toggle();
      }
      if (code === receiver.keys.TOP) {
        marsohod.go({l: SPEED, r: SPEED});
        servo.write(90);
      }
      if (code === receiver.keys.POWER) {
        marsohod.stop();
      }
      if (code === receiver.keys.LEFT) {
        marsohod.go({l: 0, r: 0.3 });
        servo.write(140);
      }
      if (code === receiver.keys.RIGHT) {
        marsohod.go({l: 0.3, r: 0 });
        servo.write(40);
      }
    });
     
    Вот это должно работать.
     
  13. NikitOS

    NikitOS Король шутов Администратор

    @NovaStream2030, хочешь предупреждение за некропостинг?