Всем привет. Помогите пж. При подключения к передним колесам(серво) (вот код) Код (Javascript): var servo = require('@amperka/servo'); var l = servo.connect(P8); var r = servo.connect(P9); var speedf = 180; var speedb = 0; PrimarySerial.setup(9600); PrimarySerial.on('data', function (dataIn) { //print(dataIn); if (dataIn === 'F') { //Если пришла команда "F" l.write(speedb); r.write(speedf); } else if (dataIn === 'B') { l.write(speedf); r.write(speedb); } else if (dataIn === 'L') { //или если пришла команда "L" l.write(speedb); r.write(speedb); } else if (dataIn === 'R') { l.write(speedf); r.write(speedf); } else if (dataIn === 'S') { l.write(90); r.write(90); } }); моторы через motor shield серво который подключен к P9 вращается сам по себе, а при настройке потенциометром снизу останавливается, пищит, и опять крутится. (код с моторами) Код (Javascript): var Motor = require('@amperka/motor'); var M1 = Motor.connect(Motor.MotorShield.M1); var M2 = Motor.connect(Motor.MotorShield.M2); var servo = require('@amperka/servo'); var l = servo.connect(P8); var r = servo.connect(P9); var defaultSpeed = 0.5; // это число мы будем использовать в логике поворотов var velocity = 4; var drive = function(m1, m2) { M1.write(-m1); M2.write(-m2); }; PrimarySerial.setup(9600); PrimarySerial.on('data', function (dataIn) { //print(dataIn); if (dataIn === 'F') { //Если пришла команда "F" l.write(0); r.write(180); drive(velocity, -velocity); } else if (dataIn === 'B') { l.write(0); r.write(180); drive(-velocity, velocity); } else if (dataIn === 'L') { //или если пришла команда "L" l.write(0); r.write(0); drive(velocity, velocity); } else if (dataIn === 'R') { l.write(180); r.write(180); drive(-velocity, -velocity); } else if (dataIn === 'I') { //или если пришла команда "I", едем вперёд и направо drive(-defaultSpeed + -velocity, -defaultSpeed - -velocity); } else if (dataIn === 'J') { //или если пришла команда "J", едем назад и направо drive(defaultSpeed + -velocity, defaultSpeed - -velocity); } else if (dataIn === 'G') { //или если пришла команда "I", едем вперёд и налево drive(defaultSpeed - -velocity, defaultSpeed + -velocity); } else if (dataIn === 'H') { //или если пришла команда "H", едем назад и налево drive(defaultSpeed + -velocity, defaultSpeed - -velocity); } else if (dataIn === 'S') { l.write(90); r.write(90); drive(0, 0); } }); Помогите пж кто шарит в javascript
Всем здравствуйте. Такая у меня проблема. Собирая управление твердотопливного котла, столкнулся с тем что сервопривод в процессе работы поддергивается, хаотично. опытным путем были исключены проблемы с дуней с питанием подключением сервой и тд. Было установлено что на поддергивание влияет датчики температурв(18b20), сначала грешил на библиотеку Dallas так как при удалении библиотеки и всех ее корней и датчиков из скетча проблема уходит переписал скетч без библиотеки dallas , но с датчиками поддергивания вернулись, при том изменяя задержку времяни на опрос датчика изменяется характер (частота) поддергиваний. ВОПРОС: как это исправить, с чем может быть это связано, это конфликт датчиков создающая помехи на шим ? Скетч выложу позже.
Проблема в том что, для хорошей работы с сервоприводами нужен multiservo shield. И ещё посмотрите видео Амперки про гексапод, там есть ответ на вашу проблему.
это называется джиттер, можите погуглить. самое простое решение - делать attach только когда нужно движение и после его окончания detach. библиотека имеет тормоза - в ней задержки для чтения температуры. обрабатывайте датчик без библиотеки, там ничего сложного нет, в гугле есть примеры.
Да именно так я и сделал если серва нужна то работает если нет то пусть стоит и не дергантся отключенная. Я сделал скетч без библиотеки Даллас да реакция на кнопки пошустрее , но серва как дергалась так и дергается. Но detach решил эту проблему .Спасибо)
дёргаться может ещё если питание по напряжению на нижнем пределе (я всегда подаю по верхнему) или по току источник питания слабоват.