Робот на UNO

nbouda
nbouda аватар
Offline
Зарегистрирован: 10.06.2019
Интересный отказ серво. Может кому-то пригодится.
 
В роботе 8 серво, по 2 на каждую конечность.
В процессе разработки произошел отказ.
Простые команды: СТОЙ, СИДИ выполнял без проблем.
Циклическую команду ИДИ, отказался. Стал зависать сразу после первого движения.
Суть оказалась в том, что один из серво команду выполнял, поворачивался, 
а вот в Ардуино не сообщал об окончании поворота.
UNO ожидал окончания поворота всех серво, 
прежде чем начать следующий шаг.
Использую библиотеку VarSpeedServo.h
Вот как это выгдядит: servo_down1.write(Baz[b1]+(EEPROM.read(1)-128),S,true);
 
Последовательно убирал (true), пока не нашел.
Точнее сначала убрал все-заработало, но не корректно есественно (не дожидались окончания цикла),
потом уже поочередно.
Серво MG90S. Уже штук 30 переломал, но такого не всречал.
 
Поиск осложнялся тем, что все серво команды исправно выполняли и казалось бы к ним нет претензий.
 
VladimirTsibrov
Offline
Зарегистрирован: 05.03.2019

nbouda пишет:

Суть оказалась в том, что один из серво команду выполнял, поворачивался, 
а вот в Ардуино не сообщал об окончании поворота.
Вот только сервомашинки (распространенные хоббийные модели) не сообщают о своем положении в принципе. Да, в библиотеке есть задержка, но реализована она иначе.
 
И зачем вы сломали штук 30 MG90S?
nbouda
nbouda аватар
Offline
Зарегистрирован: 10.06.2019

Вы правы полностью, видимо библиотечка сама по запросу myservo.read() шлет результаты промежуточные, как ей представляется верные :). Я их (не проверив) и принял за ответы серво. Спасибо.

Моторчки поломал не враз, где-то за полгода. Клинят, проворачиваются и пр. и др. Конечно насилую их.