Проблемы после недели эксплуатации: 1) Собрали "семафор" - пишет ошибку, что метод write не определен. Пробовали подсоединить на разные пины, но ошибка остается. Закомментировали - все остальное (кнопка, звуковой сигнал и светодиод) заработало. 2) Ультразвуковой дальномер: пишет ошибку no connection, и только после отсоединения (!) датчика, то есть когда пустая плата, начинает писать разные числа расстояний. Подозреваю что и дальномер неисправен. Тоже пробовали на разных пинах. 3) Также есть ошибка при подсоединении кнопки на 4й пин - на остальных работает. Вообще если детали неисправны - не жалко, все равно набор офигенный. Но не понятно почему так много неисправностей сразу. Планирую докупить моторчик и проверить заработает ли он. Предложение: В буклете (или на сайте) хорошо бы добавить раздел "Если не взлетело" где рассказать принципы как находить и исправлять ошибки. Ведь дети могут неправильно код написать, а если что-то не работает - забить и начать собирать что-то другое.
Алексей, добрый день! Что-то где-то с софтом не так, уверен. 1) Можете дословно привести код программы, которая не заработала с ошибкой «метод write не определен»? 2) Можно фотографию того, как вы подключили дальномер к Troyka Shield. Подозреваю, что есть какая-то ошибка. 3) При подключении кнопки к 4-му пину, Iskra JS не видит с неё сигнал? Или как проявляется неработоспособность?
сейчас не могу, позже еще раз попробую запустить моторчик Ошибок не исключаю - ребенок набирал, но визуально все было ок. К тому же там write в двух местах (закрытие и открытие шлагбаума) и в обоих были ошибки. Пробовали на разные пины, сверяли подключение - все по инструкции. Опять же, фото сейчас нет - разобрали. Если на 4й пин поставить кнопку - она не работает. Если на 3й или 5й - работает. Ошибку не помню. Кажется, с еще какими-то пинами были проблемы - решается переустановкой на соседний. На выходных планирую поразбираться и отпишусь.
Вероятно, Алексей_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 градусов без ошибок! А по нажатию кнопки ругается.
А я разобрался с сервой!!! Убрал предустановку сервы на угол и усё! Спойлер: Было Код (Javascript): var barrier = require('@amperka/servo') .connect(P13) .write(90); Спойлер: Стало Код (Javascript): var barrier = require('@amperka/servo') .connect(P13); Не пойму только почему включенный при инициализации светодиод в дальнейшем выключается и включается, а серва с заданным при инициализации углом старается до потери пульса держать именно этот угол и никакой другой. Может у кого-то есть мысли на этот счет?
- Странно. И всего лишь после удаления этой строчки пропала ошибка? Моторчик же шлагбаум - он вначале старается держаться на 90' (открыт) а потом 0', по идее.
Аяй! Это мы напортачили: сломали цепочные вызовы в servo. Сегодня вернём и будут работать оба варианта.
Как ни странно, да. А правильное положение шлагбауму после включения питания придают пара нажатий кнопки (закрыть-открыть). Ну вот и нашли корень зла.