Йодо: не работает моторчик и дальномер

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Алексей_js, 24 апр 2016.

  1. Проблемы после недели эксплуатации:
    1) Собрали "семафор" - пишет ошибку, что метод write не определен. Пробовали подсоединить на разные пины, но ошибка остается. Закомментировали - все остальное (кнопка, звуковой сигнал и светодиод) заработало.
    2) Ультразвуковой дальномер: пишет ошибку no connection, и только после отсоединения (!) датчика, то есть когда пустая плата, начинает писать разные числа расстояний. Подозреваю что и дальномер неисправен. Тоже пробовали на разных пинах.
    3) Также есть ошибка при подсоединении кнопки на 4й пин - на остальных работает.

    Вообще если детали неисправны - не жалко, все равно набор офигенный. Но не понятно почему так много неисправностей сразу. Планирую докупить моторчик и проверить заработает ли он.

    Предложение: В буклете (или на сайте) хорошо бы добавить раздел "Если не взлетело" где рассказать принципы как находить и исправлять ошибки. Ведь дети могут неправильно код написать, а если что-то не работает - забить и начать собирать что-то другое.
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Алексей, добрый день!

    Что-то где-то с софтом не так, уверен.

    1) Можете дословно привести код программы, которая не заработала с ошибкой «метод write не определен»?

    2) Можно фотографию того, как вы подключили дальномер к Troyka Shield. Подозреваю, что есть какая-то ошибка.

    3) При подключении кнопки к 4-му пину, Iskra JS не видит с неё сигнал? Или как проявляется неработоспособность?
     
  3. сейчас не могу, позже еще раз попробую запустить моторчик
    Ошибок не исключаю - ребенок набирал, но визуально все было ок. К тому же там write в двух местах (закрытие и открытие шлагбаума) и в обоих были ошибки.
    Пробовали на разные пины, сверяли подключение - все по инструкции. Опять же, фото сейчас нет - разобрали.
    Если на 4й пин поставить кнопку - она не работает. Если на 3й или 5й - работает. Ошибку не помню. Кажется, с еще какими-то пинами были проблемы - решается переустановкой на соседний.
    На выходных планирую поразбираться и отпишусь.
     
  4. nailxx

    nailxx Официальный Нерд Администратор

    Это нам бы помогло. Можно будет какие-то не очевидные моменты разъяснить и подчеркнуть.
     
  5. Processor

    Processor Нуб

    Вероятно, Алексей_js имеет ввиду вот эту ошибку:
    Код (Text):
    Uncaught Error: Field or method "write" does not already exist, and can't create it on undefined
    at line 27 col 12
        barrier.write(0);
               ^
    in function called from system
    У меня она возникла в 11 опыте "Переезд" из брошюры Йодо.
    Вот полный код программы
    Код (Javascript):
    var trigger = require('@amperka/button')
      .connect(P2);

    var buzzer = require('@amperka/buzzer')
      .connect(P5)
      .frequency(50);

    var light = require('@amperka/led')
      .connect(P1);

    var barrier = require('@amperka/servo')
      .connect(P13)
      .write(90);

    var closed = false;

    trigger.on('press', function() {
      closed = !closed;
      if (closed) {
        buzzer.beep(1, 0.5);
        light.blink(1, 0.5);
        barrier.write(0);
      } else {
        buzzer.turnOff();
        light.turnOff();
        barrier.write(90);
      }
    });

    А вот сообщения консоли (загрузка программы и два нажатия кнопки)
    Код (Text):
    >reset();
    =undefined
        ____       __
       /  _/_____ / /__ _____ ____ _
       / / / ___// //_// ___// __ `/
    _/ / (__  )/ ,<  / /   / /_/ /
    /___//____//_/|_|/_/    \__,_/
    Based on Espruino 1v85.1057
    (c) 2016 G.Williams, Amperka LLC
    Support the work of core developers:
    http://espruino.com/Donate
    >echo(0);
    =undefined
    Erasing Flash....
    Writing............
    Compressed 87200 bytes to 9688
    Checking...
    Done!
    Running onInit()...
    Uncaught Error: Field or method "write" does not already exist, and can't create it on undefined
    at line 27 col 12
        barrier.write(0);
               ^
    in function called from system
    Uncaught Error: Field or method "write" does not already exist, and can't create it on undefined
    at line 31 col 12
        barrier.write(90);
               ^
    in function called from system
    >

    Разобраться пока не разобрался, но серва точно рабочая. Пробовал и другую серву. В опыте 10 серва прекрасно управляется на 13 пине. Поэтому пока тупик. Вроде все исправно, но не хочет работать.

    Да, чуть не забыл. В начале программы серва выставляется в положение 90 градусов без ошибок! А по нажатию кнопки ругается.
     
  6. Processor

    Processor Нуб

    А я разобрался с сервой!!! :)
    Убрал предустановку сервы на угол и усё!
    Код (Javascript):
    var barrier = require('@amperka/servo')
      .connect(P13)
      .write(90);
    Код (Javascript):
    var barrier = require('@amperka/servo')
      .connect(P13);
    Не пойму только почему включенный при инициализации светодиод в дальнейшем выключается и включается, а серва с заданным при инициализации углом старается до потери пульса держать именно этот угол и никакой другой.
    Может у кого-то есть мысли на этот счет? ;)
     
  7. - Странно. И всего лишь после удаления этой строчки пропала ошибка?
    Моторчик же шлагбаум - он вначале старается держаться на 90' (открыт) а потом 0', по идее.
     
  8. nailxx

    nailxx Официальный Нерд Администратор

    Аяй! Это мы напортачили: сломали цепочные вызовы в servo. Сегодня вернём и будут работать оба варианта.
     
  9. Processor

    Processor Нуб

    Как ни странно, да. А правильное положение шлагбауму после включения питания придают пара нажатий кнопки (закрыть-открыть).
    Ну вот и нашли корень зла. :)
     
  10. nailxx

    nailxx Официальный Нерд Администратор

    Да.

    Выкатили обновление.