по моему плохая идея. без сигнала серва может остаться в том же положении, а может перескочить в рандомное и больше не двигаться. поэкспериментируй
Насколько я с ними баловался сервы после детатча никуда не пытаются съехать.
Обычно это делал для устранения дрожания-подёргивания. Впечатление такое что с неё сняли питание. А так как прокрутить большую серву, даже обесточенную , задача почти невыполнимая, она будет стоять там где бросили и скорее всего держать то, что держала.
а когда ее снова включаете она уходит в какоето другое положение или остаеться где включили?
а когда ее снова включаете она уходит в какоето другое положение или остаеться где включили?
можно ваш код позаимствовать? :)
Так нельзя её просто "включить"! Вы при этом на неё ШИМ подадите, она и начнет его отрабатывать. И поедет или нет - зависит от установленого значения, ну и особенности библиотеки причудливо могут наложится. Я не использую стандартные либы, точно не скажу. А руками выключеная серва очень даже проворачивается. Код и не просите, он слишком тривиален, ни кто не станет так опускатся :)
да вроде побендили, просто я поставил начальную скорость сейчас в 100шим, на тот момент эксперементировал с дохлым акумом, он с 100 только стартовал, сейчас надо наверно на 70-80 поставить.
кстати есть прикол с движением, если поворачивать а потом сразу нажать вперед то машина еще раз повернет немного и только потом вперед )))
а когда ее снова включаете она уходит в какоето другое положение или остаеться где включили?
можно ваш код позаимствовать? :)
Так нельзя её просто "включить"! Вы при этом на неё ШИМ подадите, она и начнет его отрабатывать. И поедет или нет - зависит от установленого значения, ну и особенности библиотеки причудливо могут наложится. Я не использую стандартные либы, точно не скажу. А руками выключеная серва очень даже проворачивается. Код и не просите, он слишком тривиален, ни кто не станет так опускатся :)
Положение сервы до detach запоминается в библиотеке. если вы ничего с сервой не делали то после attach она просто останется дёргаться на том-же месте(положении)
Положение сервы до detach запоминается в библиотеке. если вы ничего с сервой не делали то после attach она просто останется дёргаться на том-же месте(положении)
тоесть будет так?
человек нажал кнопку, серва получила команду на 100градусов, и поехала, на 50 клешня сжала предмет и стала греться, но заданное время истекло и команда деатч ее выкключила, серва расслабилась, ее можно даже руками расжать.
потом человек нажал другую кнопку, серва получилда команду атач и продолжила было попытку ехать на 100, как вдруг получила новую команду и понеслась ее исполнять(разжимание напрмер)
визуально для человека это будет выглядеть так?
нажал кнопку сжимать, серва сжала предмет и расслабилась. но если предмет не тяжелый то в ней и остался
если водомёт - голова , то вам нужно переобуть резину ! коврозацепы не так будут работать :( , можно поймать аквапланирование....
по коду : вернитесь к старым кнопкам на клешню и и попробуйде ещё раз переделать ( НО НУЖНО ЗАБЫТЬ КАК ДО ЭТОГО ПЕРЕДЕЛЫВАЛИ ) , мало кто полезет за вас искать вашу ошибку :(
если водомёт - голова , то вам нужно переобуть резину ! коврозацепы не так будут работать :( , можно поймать аквапланирование....
по коду : вернитесь к старым кнопкам на клешню и и попробуйде ещё раз переделать ( НО НУЖНО ЗАБЫТЬ КАК ДО ЭТОГО ПЕРЕДЕЛЫВАЛИ ) , мало кто полезет за вас искать вашу ошибку :(
голова это клешня, водомет это зад, так что резина стоит правильно!
насчет кода, сейчас попробую ваш совет, а что еще делать. хотя я его перелопатил вдоль и поперек, так и не не нашел ошибки, вроде все должно работать...
SU-27-16 Вы были правы, просто еще раз переделал скетч, причем действовал точно так же как в прошлый раз, ничего нового, и все заработало. даже незнаю в чем причина была, вчера бился 3 часа, а сегодня за 20 мин все заработало.
правда пока как сделать расслабон серве так и не решил. хочу всетаки 4й провод в серву внедрить. но как это дело приписать к уже существаующему скетчу, пока опыта не хватает (
SU-27-16 Вы были правы, просто еще раз переделал скетч, причем действовал точно так же как в прошлый раз, ничего нового, и все заработало. даже незнаю в чем причина была, вчера бился 3 часа, а сегодня за 20 мин все заработало.
правда пока как сделать расслабон серве так и не решил. хочу всетаки 4й провод в серву внедрить. но как это дело приписать к уже существаующему скетчу, пока опыта не хватает (
Посмотрел цены на датчики давления... от 400р. Печаль. Видимо не пойдет приделать его к клешне. :)
А насколько сильно серва греется? Может к ней дешевый термистор и как только превышение температуры - хватит жать.
Прям только серва выше 35 градусов - значит зажато до кондиции. :D
_____________________________________
Нет времени всю тему читать - а есть вариант подключать питание сервы через полевой транзистор? Питание на серву только в моменты зажимания кнопок, а дальше она отключена.
Посмотрел цены на датчики давления... от 400р. Печаль. Видимо не пойдет приделать его к клешне. :)
А насколько сильно серва греется? Может к ней дешевый термистор и как только превышение температуры - хватит жать.
Прям только серва выше 35 градусов - значит зажато до кондиции. :D
_____________________________________
Нет времени всю тему читать - а есть вариант подключать питание сервы через полевой транзистор? Питание на серву только в моменты зажимания кнопок, а дальше она отключена.
неуверен что датчик давления будет работать, клешня может зажать предмет разными участками своей внутреней поверхности, не факт что датчик будет в нужном месте.
по температуре вариант не очень хороший, но сути зря гркть верву. а вдруг чтото с датчиком произойдет, покажет не тот градус и серва сгорит...
про полевик несовсем понял, можете подробней рассказать об этом способе?
Про полевик - у нас есть 3 провода к серве: земля, управляющий и питание. (коричневый, желтый и красный)
Смысл в том, что провод питания (красный) мы подключаем через полевой транзистор.
Когда напряжение на затворе транзистора есть и транзистор открыт - серва работает, иначе она будет обесточена.
Нужно лишь предусмотреть подачу питания непосредственно перед началом обращения к серве (посредством отпирания транзистора) и отключение питания сразу же после выполнения необходимых действий. Нужен будет +1 пин для управления транзистором.
Есть правда проблема - серва в этот момент может дергаться.
Про полевик - у нас есть 3 провода к серве: земля, управляющий и питание. (коричневый, желтый и красный)
Смысл в том, что провод питания (красный) мы подключаем через полевой транзистор.
Когда напряжение на затворе транзистора есть и транзистор открыт - серва работает, иначе она будет обесточена.
Нужно лишь предусмотреть подачу питания непосредственно перед началом обращения к серве (посредством отпирания транзистора) и отключение питания сразу же после выполнения необходимых действий. Нужен будет +1 пин для управления транзистором.
Есть правда проблема - серва в этот момент может дергаться.
не это тупиковый вариант, в этом случае мы все так же незнаем когда отключать это самое питание...
имхо лучше этот 1 пин пожертвовать на сигнал с резистора сервы...
кстати о пинах он реально только 1 остался! :)
а я еще хотел 2 уз датчика, а там на каждый 2 пина надо )))
Когда напряжение на затворе транзистора есть и транзистор открыт - серва работает, иначе она будет обесточена.
Нужно лишь предусмотреть подачу питания непосредственно перед началом обращения к серве (посредством отпирания транзистора) и отключение питания сразу же после выполнения необходимых действий. Нужен будет +1 пин для управления транзистором.
Есть правда проблема - серва в этот момент может дергаться.
detach сделает с сервой то-же самое, только программно, без транзистора и лишнего пина на управление транзистором
В случае этого расширителя, на использование большей части стандартных библиотек уже не рассчитывайте.
почему?
как еще добавить пинов? сделать больше портов?
Она сможет для вас щелкать релюшками, зажигать светики, принять сигнал с кнопки и т.п. А вот для подключения разных хитрых датчиков, серв и подобных вещей, со стандартными средствами не получится. Если только вы сами напишете для них код через i2c.
Так что если требуется увеличение под п.2, лучше смотрите в сторну MEGi.
Она сможет для вас щелкать релюшками, зажигать светики, принять сигнал с кнопки и т.п. А вот для подключения разных хитрых датчиков, серв и подобных вещей, со стандартными средствами не получится. Если только вы сами напишете для них код через i2c.
Так что если требуется увеличение под п.2, лучше смотрите в сторну MEGi.
спасибо что предупредили, а то я уже думал что мне это поможет.
а можете про мегу подсказать, что это? а то я можно сказать новичек и меня всюду носом тыкать нужно, если можно ссылку?
Как дешевый вариант, выбрать все что у вас управляется установкой пинов в HIGH,LOW и попробовать их навесить на I2C, посмотреть что в итоге освободится.
Как дешевый вариант, выбрать все что у вас управляется установкой пинов в HIGH,LOW и попробовать их навесить на I2C, посмотреть что в итоге освободится.
Я совсем забыл, что у вас не обычная дуина. Тогда только пляски с бубном. У вас даже не понятно, из чего экономить.
а может к ней подключить еще одну плату, стандартную ардуину. чтоб она на 1 или 2 порта отправляла какието команды, а сама формировала их исходя из полученных данных с датчиков. и наоборот в ответ получала какието команды для серво и других нагрузок....
по моему плохая идея. без сигнала серва может остаться в том же положении, а может перескочить в рандомное и больше не двигаться. поэкспериментируй
Насколько я с ними баловался сервы после детатча никуда не пытаются съехать.
Обычно это делал для устранения дрожания-подёргивания. Впечатление такое что с неё сняли питание. А так как прокрутить большую серву, даже обесточенную , задача почти невыполнимая, она будет стоять там где бросили и скорее всего держать то, что держала.
а когда ее снова включаете она уходит в какоето другое положение или остаеться где включили?
можно ваш код позаимствовать? :)
а когда ее снова включаете она уходит в какоето другое положение или остаеться где включили?
можно ваш код позаимствовать? :)
Так нельзя её просто "включить"! Вы при этом на неё ШИМ подадите, она и начнет его отрабатывать. И поедет или нет - зависит от установленого значения, ну и особенности библиотеки причудливо могут наложится. Я не использую стандартные либы, точно не скажу. А руками выключеная серва очень даже проворачивается. Код и не просите, он слишком тривиален, ни кто не станет так опускатся :)
А руками выключеная серва очень даже проворачивается. Код и не просите, он слишком тривиален, ни кто не станет так опускатся :)
поворачиваеться, но при хорошем усилии! само по себе не сдвиниться!
новое видео
https://www.youtube.com/watch?v=hddHKgop9aY&feature=youtu.be
О, третья серия))). А что, Дон Карлос уже узнал когда серву пора останавливать? И уже вплотную подошел к вопросу, как останавливать?
новое видео
https://www.youtube.com/watch?v=hddHKgop9aY&feature=youtu.be
А машинка прикольная. Рывки так и не победили?
новое видео
https://www.youtube.com/watch?v=hddHKgop9aY&feature=youtu.be
А машинка прикольная. Рывки так и не победили?
да вроде побендили, просто я поставил начальную скорость сейчас в 100шим, на тот момент эксперементировал с дохлым акумом, он с 100 только стартовал, сейчас надо наверно на 70-80 поставить.
кстати есть прикол с движением, если поворачивать а потом сразу нажать вперед то машина еще раз повернет немного и только потом вперед )))
баги скетча)
а когда ее снова включаете она уходит в какоето другое положение или остаеться где включили?
можно ваш код позаимствовать? :)
Так нельзя её просто "включить"! Вы при этом на неё ШИМ подадите, она и начнет его отрабатывать. И поедет или нет - зависит от установленого значения, ну и особенности библиотеки причудливо могут наложится. Я не использую стандартные либы, точно не скажу. А руками выключеная серва очень даже проворачивается. Код и не просите, он слишком тривиален, ни кто не станет так опускатся :)
Положение сервы до detach запоминается в библиотеке. если вы ничего с сервой не делали то после attach она просто останется дёргаться на том-же месте(положении)
Положение сервы до detach запоминается в библиотеке. если вы ничего с сервой не делали то после attach она просто останется дёргаться на том-же месте(положении)
тоесть будет так?
человек нажал кнопку, серва получила команду на 100градусов, и поехала, на 50 клешня сжала предмет и стала греться, но заданное время истекло и команда деатч ее выкключила, серва расслабилась, ее можно даже руками расжать.
потом человек нажал другую кнопку, серва получилда команду атач и продолжила было попытку ехать на 100, как вдруг получила новую команду и понеслась ее исполнять(разжимание напрмер)
визуально для человека это будет выглядеть так?
нажал кнопку сжимать, серва сжала предмет и расслабилась. но если предмет не тяжелый то в ней и остался
нажал кнопку разжать, серва разжалась, предмет выпал...
все правильно?
добавил на машину старый водомет,
и сделал клешню на отдельные кнопки.
но почемуто неработают они. серва при старте принимает дефолтное положение, но не управляеться.
все пересмотрел, вроде все правильно, может чтото неусмотрел, кто нибудь гляньте, в чем может быть ошибка?
захватом управляет серва Z
// Скетч для управления через блютус, Wild Thumper 6WD, на ардуино совместимом контролере TREX controller. реализовано движение и стрельба с водомета. #include <BTCA2ALite.h>// Добавляем библиотеку блютус программы #include <Servo.h> // Добавляем библиотеку серво Servo myservoH; // Горизонтальная серва водомета углы от 0 до 180 (центровка 89) Servo myservoV; // Вертикальная серва водомета углы от 120 до 180 Servo myservoZ; // Cерва захвата манипулятора углы от 45 до 116 // ====================== const int Z_SERVO_PIN = 5; // серва захвата манипулятора подключена к пину 7 const int H_SERVO_PIN = 7; // Горизонтальная серва подключена к пину 7 const int V_SERVO_PIN = 8; //Пин вертикального сервопривода 8 const float H_L_ANGLE = 180; // Максимальные угл поворота башни налево const float H_R_ANGLE = 0; // Максимальные угл поворота башни направо const float H_DEF_ANGLE = 84; // Дефолтный угол (центровка) const float V_U_ANGLE = 180; // Максимальные угл поворота башни вверх const float V_D_ANGLE = 150; // Максимальные угл поворота башни вниз const float V_DEF_ANGLE = 160; // Дефолтный угол (центровка) const float Z_L_ANGLE = 116; // Максимальные угл поворота башни налево const float Z_R_ANGLE = 45; // Максимальные угл поворота башни направо const float Z_DEF_ANGLE = 50; // Дефолтный угол (центровка) //Размер шага V_STEP и H_STEP побираем экспериментально для достижения нужной скорости поворота серв const float V_STEP = 0.012; // Шаг - знаение отвечающее за скорость вращения по вертикали. const float H_STEP = 0.012; // Шаг - знаение отвечающее за скорость вращения по горизонтали const float Z_STEP = 0.012; // Шаг - знаение отвечающее за скорость вращения захвата манипулятора float curVAngle = V_DEF_ANGLE; //Переменная текущего угла верт. сервы float curHAngle = H_DEF_ANGLE; //Переменная текущего угла гор. сервы float curZAngle = Z_DEF_ANGLE; //Переменная текущего угла гор. сервы bool moveServoVUp = false; //Флаг движения верт. сервы вверх bool moveServoVDown = false; //Флаг движения верт. сервы вниз bool moveServoHLeft = false; //Флаг движения гор. сервы влево bool moveServoHRight = false; //Флаг движения гор. сервы вправо bool moveServoZLeft = false; //Флаг движения гор. сервы влево bool moveServoZRight = false; //Флаг движения гор. сервы вправо btca2aLite btca2aLite; // Конструктор btca2aLite // задаем пины для левого мотора #define Dir_L 2 #define Pwm_L 3 #define Brake_L 4 // задаем пины для правого мотора #define Dir_R 10 #define Pwm_R 11 #define Brake_R 9 // Задаем скорости для движения byte MaxSpeed = 250; // Максимальная скорость byte MinSpeed = 85; // Минимальная скорость int forw_back = 0; int righ_left = 0; byte step_fb = 5; // Шаг изменения скорости движения вперед - назад byte step_stop = 10; // Шаг изменения скорости остановки byte step_rl = 10; // Шаг изменения скорости движения вправо - влево byte step_dir = 10; // Шаг изменения скорости выравнивания #define SHOT 12 // пин для водомета enum States { WAITING, READING, RUNNING, ERROR, TIMEOUT }; States state; States onWait(); States onRead(); States onRun(); States onError(); States onTimeout(); void performServo(); // добовляем сервы void setup(){ Serial.begin(9600); // Скорость BT и порта должна быть 9600 //Моторы pinMode (Pwm_L, OUTPUT); pinMode (Dir_L, OUTPUT); pinMode (Brake_L, OUTPUT); pinMode (Pwm_R, OUTPUT); pinMode (Dir_R, OUTPUT); pinMode (Brake_R, OUTPUT); digitalWrite (Pwm_L, LOW); digitalWrite (Pwm_R, LOW); digitalWrite (Brake_L, LOW); digitalWrite (Brake_R, LOW); pinMode(SHOT, OUTPUT); // задаем выход для стрельбы водой // устанавливаем пин как вывод управления сервой myservoZ.attach(Z_SERVO_PIN); myservoH.attach(H_SERVO_PIN); myservoV.attach(V_SERVO_PIN); myservoZ.write(curZAngle); myservoH.write(curHAngle); myservoV.write(curVAngle); //Светодиод pinMode(13, OUTPUT); // Инициализируем пин светодиода digitalWrite(13, HIGH); // Светодиод выключен } void loop(){ btca2aLite.ReadCommand(); // Считывание принятых команд (кодов кнопок) //Вызываем функцию управление сервами performServo(); //код моторов с плавным старт\стопом static unsigned long pre_millis = 0; if(millis()-pre_millis > 50) { pre_millis = millis(); if(btca2aLite.ButtonPressed(KEYCODE_DPAD_UP)) { forw_back += step_fb; if(forw_back > 0 && forw_back < MinSpeed) forw_back = MinSpeed; } else if(btca2aLite.ButtonPressed(KEYCODE_DPAD_DOWN)) { forw_back -= step_fb; if(forw_back < 0 && forw_back > MinSpeed*-1) forw_back = MinSpeed*-1; } else { if(forw_back < 0) forw_back += step_stop; else if(forw_back > 0) forw_back -= step_stop; if(abs(forw_back) < MinSpeed) forw_back = 0; } forw_back = constrain(forw_back, MaxSpeed*-1, MaxSpeed); if(btca2aLite.ButtonPressed(KEYCODE_DPAD_RIGHT)) { righ_left += step_rl; if(righ_left > 0 && righ_left < MinSpeed) righ_left = MinSpeed; } else if(btca2aLite.ButtonPressed(KEYCODE_DPAD_LEFT)) { righ_left -= step_rl; if(righ_left < 0 && righ_left > MinSpeed*-1) righ_left = MinSpeed*-1; } else { if(righ_left < 0) righ_left += step_dir; else if(righ_left > 0) righ_left -= step_dir; if(abs(righ_left) < MinSpeed) righ_left = 0; } righ_left = constrain(righ_left, MaxSpeed*-1, MaxSpeed); int pwm_l = forw_back + righ_left; int pwm_r = forw_back - righ_left; pwm_l = constrain(pwm_l, MaxSpeed*-1, MaxSpeed); pwm_r = constrain(pwm_r, MaxSpeed*-1, MaxSpeed); digitalWrite(Dir_L, (pwm_l<0)?0:1); digitalWrite(Dir_R, (pwm_r<0)?0:1); analogWrite(Pwm_L, abs(pwm_l)); analogWrite(Pwm_R, abs(pwm_r)); } //-------— включение насоса —------------- if (btca2aLite.ButtonPressed(KEYCODE_BUTTON_SELECT)) { digitalWrite (SHOT, HIGH); } //-------— выключение насоса происходит автоматически после отпускания кнопки—------------- if(btca2aLite.ButtonReleased(KEYCODE_BUTTON_SELECT)) { digitalWrite (SHOT, LOW); } //--------— Повороты серв при нажатии кнопок —------------- if(btca2aLite.Button(KEYCODE_BUTTON_X)) // servoV вниз { moveServoVDown = true; } if(btca2aLite.Button(KEYCODE_BUTTON_A)) // servoH движется к 0 { moveServoHRight = true; } if(btca2aLite.Button(KEYCODE_BUTTON_B)) // servoV вверх { moveServoVUp = true; } if(btca2aLite.Button(KEYCODE_BUTTON_Y)) // servoH движется к 180 { moveServoHLeft = true; } //--------— серва захвата манипулятора —------------- if(btca2aLite.Button(KEYCODE_BUTTON_R1)) // servoH движется к 180 { moveServoZLeft = true; } if(btca2aLite.Button(KEYCODE_BUTTON_R2)) // servoH движется к 180 { moveServoZRight = true; } //--------— чтобы сервы не продолжали движения при отжатых кнопках —------------- if(btca2aLite.ButtonReleased(KEYCODE_BUTTON_X)) { moveServoVDown = false; } if(btca2aLite.ButtonReleased(KEYCODE_BUTTON_B)) { moveServoVUp = false; } if(btca2aLite.ButtonReleased(KEYCODE_BUTTON_A)) { moveServoHRight = false; } if(btca2aLite.ButtonReleased(KEYCODE_BUTTON_Y)) { moveServoHLeft = false; } if(btca2aLite.ButtonReleased(KEYCODE_BUTTON_R1)) { moveServoZRight = false; } if(btca2aLite.ButtonReleased(KEYCODE_BUTTON_R2)) { moveServoZLeft = false; } //----------------— Стоп —--------------------- // Если не нажата ни одна кнопка курсора происходит остановка, скорость 0 для каждого мотора if (btca2aLite.ButtonReleased(KEYCODE_DPAD_UP) && btca2aLite.ButtonReleased(KEYCODE_DPAD_DOWN) && btca2aLite.ButtonReleased(KEYCODE_DPAD_LEFT) && btca2aLite.ButtonReleased(KEYCODE_DPAD_RIGHT)){ analogWrite (Pwm_L, 0); analogWrite (Pwm_R, 0); } } //Функция управления сервоприводами (вызывается в теле loop на каждой итерации) //Выполняет изменения положения серв на подобранный шаг согласно установленным флагам движения //Флаги устанавливаются согласно поступившим символам управления сервами void performServo() { //Установлен флаг движения вверх и текущий угол не максимальный if (moveServoVUp && curVAngle + V_STEP <= V_U_ANGLE) { //К текущему верт. углу прибавляем шаг curVAngle += V_STEP; } //Установлен флаг движения вниз и текущий угол не минимален else if (moveServoVDown && curVAngle - V_STEP >= V_D_ANGLE) { //От текущего верт. угла отнимаем шаг curVAngle -= V_STEP; } //Установлен флаг движения влево и текущий угол не максимален if (moveServoHLeft && curHAngle + H_STEP <= H_L_ANGLE) { //К текущему гор. углу прибавляем гор. шаг curHAngle += H_STEP; } //Установлен флаг движения вправо и текущий угол не минимален else if (moveServoHRight && curHAngle - H_STEP >= H_R_ANGLE) { //От текущего угла отнимаем гор. шаг curHAngle -= H_STEP; } //Установлен флаг движения влево и текущий угол не максимален if (moveServoZLeft && curZAngle + Z_STEP <= Z_L_ANGLE) { //К текущему гор. углу прибавляем гор. шаг curHAngle += Z_STEP; } //Установлен флаг движения вправо и текущий угол не минимален else if (moveServoZRight && curHAngle - Z_STEP >= Z_R_ANGLE) { //От текущего угла отнимаем гор. шаг curZAngle -= Z_STEP; } //Если было движние по вертикали if (moveServoVUp || moveServoVDown) { myservoV.write(curVAngle); } //Если было движение по горизонтали if (moveServoHLeft || moveServoHRight) { myservoH.write(curHAngle); } //Если было движение по горизонтали if (moveServoZLeft || moveServoZRight) { myservoZ.write(curZAngle); } }а где перёд ? где зад ?
если водомёт - голова , то вам нужно переобуть резину ! коврозацепы не так будут работать :( , можно поймать аквапланирование....
по коду : вернитесь к старым кнопкам на клешню и и попробуйде ещё раз переделать ( НО НУЖНО ЗАБЫТЬ КАК ДО ЭТОГО ПЕРЕДЕЛЫВАЛИ ) , мало кто полезет за вас искать вашу ошибку :(
а где перёд ? где зад ?
если водомёт - голова , то вам нужно переобуть резину ! коврозацепы не так будут работать :( , можно поймать аквапланирование....
по коду : вернитесь к старым кнопкам на клешню и и попробуйде ещё раз переделать ( НО НУЖНО ЗАБЫТЬ КАК ДО ЭТОГО ПЕРЕДЕЛЫВАЛИ ) , мало кто полезет за вас искать вашу ошибку :(
голова это клешня, водомет это зад, так что резина стоит правильно!
насчет кода, сейчас попробую ваш совет, а что еще делать. хотя я его перелопатил вдоль и поперек, так и не не нашел ошибки, вроде все должно работать...
SU-27-16 Вы были правы, просто еще раз переделал скетч, причем действовал точно так же как в прошлый раз, ничего нового, и все заработало. даже незнаю в чем причина была, вчера бился 3 часа, а сегодня за 20 мин все заработало.
правда пока как сделать расслабон серве так и не решил. хочу всетаки 4й провод в серву внедрить. но как это дело приписать к уже существаующему скетчу, пока опыта не хватает (
SU-27-16 Вы были правы, просто еще раз переделал скетч, причем действовал точно так же как в прошлый раз, ничего нового, и все заработало. даже незнаю в чем причина была, вчера бился 3 часа, а сегодня за 20 мин все заработало.
правда пока как сделать расслабон серве так и не решил. хочу всетаки 4й провод в серву внедрить. но как это дело приписать к уже существаующему скетчу, пока опыта не хватает (
Посмотрел цены на датчики давления... от 400р. Печаль. Видимо не пойдет приделать его к клешне. :)
А насколько сильно серва греется? Может к ней дешевый термистор и как только превышение температуры - хватит жать.
Прям только серва выше 35 градусов - значит зажато до кондиции. :D
_____________________________________
Нет времени всю тему читать - а есть вариант подключать питание сервы через полевой транзистор? Питание на серву только в моменты зажимания кнопок, а дальше она отключена.
)))) тема продолжается
)))) тема продолжается
Пятая серия, где Пухлявый с его попкорном)))
нет его
Посмотрел цены на датчики давления... от 400р. Печаль. Видимо не пойдет приделать его к клешне. :)
А насколько сильно серва греется? Может к ней дешевый термистор и как только превышение температуры - хватит жать.
Прям только серва выше 35 градусов - значит зажато до кондиции. :D
_____________________________________
Нет времени всю тему читать - а есть вариант подключать питание сервы через полевой транзистор? Питание на серву только в моменты зажимания кнопок, а дальше она отключена.
неуверен что датчик давления будет работать, клешня может зажать предмет разными участками своей внутреней поверхности, не факт что датчик будет в нужном месте.
по температуре вариант не очень хороший, но сути зря гркть верву. а вдруг чтото с датчиком произойдет, покажет не тот градус и серва сгорит...
про полевик несовсем понял, можете подробней рассказать об этом способе?
https://vk.com/video_ext.php?oid=8503257&id=171269871&hash=80a5ed04254c3...
"про полевик несовсем понял, можете подробней рассказать об этом способе?"
Эт еще один способ отключить серву, не дающий ответа на вопрос "когда?"
Про полевик - у нас есть 3 провода к серве: земля, управляющий и питание. (коричневый, желтый и красный)
Смысл в том, что провод питания (красный) мы подключаем через полевой транзистор.
Когда напряжение на затворе транзистора есть и транзистор открыт - серва работает, иначе она будет обесточена.
Нужно лишь предусмотреть подачу питания непосредственно перед началом обращения к серве (посредством отпирания транзистора) и отключение питания сразу же после выполнения необходимых действий. Нужен будет +1 пин для управления транзистором.
Есть правда проблема - серва в этот момент может дергаться.
Про полевик - у нас есть 3 провода к серве: земля, управляющий и питание. (коричневый, желтый и красный)
Смысл в том, что провод питания (красный) мы подключаем через полевой транзистор.
Когда напряжение на затворе транзистора есть и транзистор открыт - серва работает, иначе она будет обесточена.
Нужно лишь предусмотреть подачу питания непосредственно перед началом обращения к серве (посредством отпирания транзистора) и отключение питания сразу же после выполнения необходимых действий. Нужен будет +1 пин для управления транзистором.
Есть правда проблема - серва в этот момент может дергаться.
не это тупиковый вариант, в этом случае мы все так же незнаем когда отключать это самое питание...
имхо лучше этот 1 пин пожертвовать на сигнал с резистора сервы...
кстати о пинах он реально только 1 остался! :)
а я еще хотел 2 уз датчика, а там на каждый 2 пина надо )))
подумываю о приобретении платы расширения. аля:
http://zelectro.cc/Z-PCF8574T_I2C_module
В случае этого расширителя, на использование большей части стандартных библиотек уже не рассчитывайте.
не это тупиковый вариант, в этом случае мы все так же незнаем когда отключать это самое питание...
имхо лучше этот 1 пин пожертвовать на сигнал с резистора сервы...
А действительно ли нам важно настолько точно знать когда ее выключить?)
Думаю, доли секунды тут не важны. Даем после выполнения, допустим 100мс, если мало чуть прибавить.
Для расширения - как вариант если много пинов используются в режиме цифровых выходов использовать микросхемку типо http://amperka.ru/product/74hc595-shift-out-register
Только прогу надо будет перелопатить.
Когда напряжение на затворе транзистора есть и транзистор открыт - серва работает, иначе она будет обесточена.
Нужно лишь предусмотреть подачу питания непосредственно перед началом обращения к серве (посредством отпирания транзистора) и отключение питания сразу же после выполнения необходимых действий. Нужен будет +1 пин для управления транзистором.
Есть правда проблема - серва в этот момент может дергаться.
detach сделает с сервой то-же самое, только программно, без транзистора и лишнего пина на управление транзистором
В случае этого расширителя, на использование большей части стандартных библиотек уже не рассчитывайте.
почему?
как еще добавить пинов? сделать больше портов?
В случае этого расширителя, на использование большей части стандартных библиотек уже не рассчитывайте.
почему?
как еще добавить пинов? сделать больше портов?
Она сможет для вас щелкать релюшками, зажигать светики, принять сигнал с кнопки и т.п. А вот для подключения разных хитрых датчиков, серв и подобных вещей, со стандартными средствами не получится. Если только вы сами напишете для них код через i2c.
Так что если требуется увеличение под п.2, лучше смотрите в сторну MEGi.
Она сможет для вас щелкать релюшками, зажигать светики, принять сигнал с кнопки и т.п. А вот для подключения разных хитрых датчиков, серв и подобных вещей, со стандартными средствами не получится. Если только вы сами напишете для них код через i2c.
Так что если требуется увеличение под п.2, лучше смотрите в сторну MEGi.
спасибо что предупредили, а то я уже думал что мне это поможет.
а можете про мегу подсказать, что это? а то я можно сказать новичек и меня всюду носом тыкать нужно, если можно ссылку?
http://arduino.ru/Hardware/ArduinoBoardMega2560
Как дешевый вариант, выбрать все что у вас управляется установкой пинов в HIGH,LOW и попробовать их навесить на I2C, посмотреть что в итоге освободится.
Как дешевый вариант, выбрать все что у вас управляется установкой пинов в HIGH,LOW и попробовать их навесить на I2C, посмотреть что в итоге освободится.
это вы про ту плану расширения?
у меня кстати есть еще шина I2C на плате.
вот такая плата у меня https://www.sparkfun.com/products/12075
Я совсем забыл, что у вас не обычная дуина. Тогда только пляски с бубном. У вас даже не понятно, из чего экономить.
Я совсем забыл, что у вас не обычная дуина. Тогда только пляски с бубном. У вас даже не понятно, из чего экономить.
а может к ней подключить еще одну плату, стандартную ардуину. чтоб она на 1 или 2 порта отправляла какието команды, а сама формировала их исходя из полученных данных с датчиков. и наоборот в ответ получала какието команды для серво и других нагрузок....
тема про "расслабление" закончилась ? решение приняли ?
....тогда откройте новую тему про увеличение псевдоПинов !
тема про "расслабление" закончилась ? решение приняли ?
....тогда откройте новую тему про увеличение псевдоПинов !
неа пока не решил(
разделяйте темы.... трудно в одной ветке следить за вашими желаниями... вернее - не трудно, а на..нано.... :(
про расслабление - всё уже предложено - закрывайте тему - ".... сами решайте ... решайте сами ... иметь или не иметь .... "
наверно вы правы, создам в разде проекты, может там кто посожет
да ! создайте ! подскажут.... а вы услышите ?
да ! создайте ! подскажут.... а вы услышите ?
а вы прочли что я просил?
с самого начала говорил что нехватает знаний самому код написать, прошу помощи в написании нескольких несчастных строчек в мой код...
но народ предпочел более 50 сообщений настрочить нежели реально помочь...
уже и решение нашли, припаять дополнительный провод к серве...
да потому что твоя идея оторвана от реальности, а тебе предлагали реальные
если ты уперся на своем это не значит что тебе помогут в этом