Запуск серво кнопкой/микросвитчем
- Войдите на сайт для отправки комментариев
Пт, 03/06/2011 - 09:57
Приветствую.
Прошу сразу не пинать, потому как сам понимаю, что туплю и вопрос у меня совершенно нубский. :)
Имеется плата Arduino Mega, серво. Задача проста как три копейки(на данный момент, дальше больше :))
Никак не могу написать скетч, чтобы серва совершала движение(как в примере sweep) после нажатия микросвитча.
Микросвитч планируется использовать как простейший и дешёвый датчик, если есть идеи, с радостью выслушаю.
Затея сделать мишень, которая после падения поднимается сервой.
Прорыл инет, пересмотрел примеры с миганием диода и сервами. Помогите, плиз.
С уважением.
Дубликат этой темы удалил, дабы не засорять форум. С уважением Adessit
Будет проще если ты опишешь как подключаешь и покажешь свой текущий код, который не работает. И мы возможно сможем помочь.
Подключаю просто.
На 9-й пин(PWM) серву, на 2-й(Analog In) кнопку.
Вот сырой код, собранный из примеров:
Examples -> Digital -> Button
Examples -> Servo -> Sweep
Насколько я понимаю, я коряво пытаюсь подружить аналоговый выход и цифровой... :)
Для вставки кода есть кнопочка с надписью code. Я уже поправил сообщение, просто в качестве информации. Если ей не пользоваться, код очень тяжело читать и комментировать.
А что касается кода. То из него следует, что кнопка должна быть подключена к цифровому порту 2, а не аналоговому.
Спасибо, за поправку. Исправлюсь. :)
Насчёт кода...
Написано на плате Analog In , но на этот же 2-й пин я подключал кнопку и диод, как в скетче-примере. Всё работает... Другого 2-го пина не нашёл, только PWM
Так вот и нужно воткнуть где написано PWM Digital, а не там где Analog In. Вам нужен цифровой вход/выход, а не агалоговый вход.
На плате написано PWM и усё....
PWM означает, что этот вход/выход может работать в режиме ШИМ. В данном случае это не важно, важно, что он цифровой. Тыкайте туда.
Тыкнул.. Задал в скетче пины. Диод горит постоянно... Балин.
Я чо-то вообще не могу понять, что ты пытаешься сделать и при чем тут диод, то ты хотел управлять сервой. Теперь диод? у тебя вообще от диода только, объявление константы с номером порта встроенного светодиода (строка 19). В самом коде ты используешь переменную servoPin, которая вообще у тебя никак не объявлена.
Для того чтобы зажечь диод не надо длинный код писать. Сначала, пытаюсь зажечь диод, чтобы тупо понять, как всё подключается и работает... Наверняка у меня в скетче с сервой куча ошибок, да если ещё неправильно соединяю... . Просто я уж не знаю где исправлять...
Рассказываю идею.
Мишень(в будущем несколько связанных) для эйрсофта. После выстрела падает, серво её поднимает. Для начала сразу, потом буду заморачиваться с таймерами. Движение есть в примере Sweep.
Кнопка нужна, для подачи команды на серву, типа пора поднимать. :) Если есть идеи по-лучше, как воплотить, с удовольствием выслушаю.
Есть такое дело, servoPin не прописан. Это я скопировал в пост предудыщий вариант...
Если хочешь зажигать светодиод, то либо зажигай светодиод, т.е. в строках 26, 35 и 38 используй переменную ledPin, которую ты объявил для светодиода, либо в строке 19 измени ledPin на servoPin. Я же уже написал, ты объявляешь одну переменную (строка 19), а используешь другую, необъявленную.
Не хочу я светодиод зажигать, не хочу. :)
Писал же выше, по-ошибке скопировал предыдущий не редактированный код. Сейчас и в посте отредактирую. Неужели в остальном всё правильно?
Буду пробовать
Добрый день, не хотелось создавать новую тему, тем более задача схожая. Есть две сервы и несколько кнопок, для первой сервы необходимо, что бы при нажатии на кнопку серва перешла в крайнее левое положение, жмем еще раз - серва возвращается в нейтральное положение, жмем еще раз - серва переходит в крайнее правое положение, дальше по циклу. Вторая серва - жмем 1 раз кнопочку, серва начинает двигаться вправо и влево на определенный угол с какой то скоростью, жмем еще раз, серва увеличила скорость, жмем еще раз серва возвращается в нейтральное положение. Заранее спасибо)))
Добрый день, не хотелось создавать новую тему, тем более задача схожая. Есть две сервы и несколько кнопок, для первой сервы необходимо, что бы при нажатии на кнопку серва перешла в крайнее левое положение, жмем еще раз - серва возвращается в нейтральное положение, жмем еще раз - серва переходит в крайнее правое положение, дальше по циклу. Вторая серва - жмем 1 раз кнопочку, серва начинает двигаться вправо и влево на определенный угол с какой то скоростью, жмем еще раз, серва увеличила скорость, жмем еще раз серва возвращается в нейтральное положение. Заранее спасибо)))
Немного не то. Есть 2 нопки и 2 сервы, задача - повесить на кнопки программы для сервомашинок (3 штуки на машинку) включение и отключение естественно должно быть независимым. Думаю делается это через прерывание но пока не разберусь как)
>>Так вот и нужно воткнуть где написано PWM Digital, а не там где Analog In. Вам нужен цифровой вход/выход, а не агалоговый вход.<<
Все порты МК могут быть как входами так и выходами. Как порт сконфигурируете так он и поплывет.
кто может за скромное вознаграждение накидать нужный мне скетч?
FurLion - как то так?
http://www.youtube.com/watch?v=4OyYUCWs_-8&feature=plcp&context=C3730bee...
Mastino, именно так как нужно)) Если что ICQ для связи 4823286 четыре три.
.
А кнопка-то как подлючена? Про подтягивающие внешние резисторы не забыли? Судя по коду встроенные вы не используете.
Ну и почему же не дать схему-то? Как изначально просили. Не нужно этого "Подключаю просто.". Раз что-то не работает, то возможно вы в своем "просто" что-то упустили.
все работает как видно на видео :)
Ну то что работает, это вы уже видимо с FurLion в icq обменивались. Тут оно "не публиковалось". А то что "это в принципе возможно" - и так было известно.
К тому же мой вопрос отностился к скетчу топик-стартера, а не FurLion. tsvalia тоже хотел разобратся. Просто я не посмотрел "когда это было". Видимо "уже не хочет" ;)
Приветствую.
Забросил изыскания, т.к. комп сдох и работа сжирала всё время... Сейчас уволился, времени стало по-больше, скоро возьму свежий комп и буду заново копать. :)
Начну сначала и задам принципиально-теоритеческий вопрос.
Чем проще и решить мою задачу?
1. Микросвитчем.
2. Датчиком расстояния.
3. Датчиком освещённости?(хз, правильно ли называю)
С уважением.
Со всеми просто. Но думаю для начала с микросвитчем.
Как быть с "дребезгом"?
с каким дребезгом?
Как быть с "дребезгом"?
Два варианта: либо плюнуть, либо боротся.
Плюнуть: либо слюной, либо желчью.
Боротся: либо аппаратно, либо программно.
Выбирайте.
Бум бороться. :)
с каким дребезгом?
С тем, который возникает при использовании микросвитча или кнопки... Можно добится от кнопки чётко "0" или "1"?
>с каким дребезгом?
Кстати ОЧЕНЬ хороший вопрос. Исходя из изначально поставленной задачи более оптимальным будет именно "плюнуть".
P.S. Кстати, ну неужели гугл ничего говорит про то как с дребезгом боростся? Как-то трудно в это поверить.
Говорит само собой, нато он и гугл. :)
http://www.freeduino.ru/arduino/sample_Buttons.html
"Живое" общение всяко продуктивнее.
это типо - Debounce?
http://arduino.cc/it/Tutorial/Debounce
Похоже, что да...
>"Живое" общение всяко продуктивнее.
Для кого, для вас? А для других?
Вы посмотрите на это с другой стороны. Есть ресурс людей. Он ограничен. Если вам ответили на вопрос, который уже отвечен 1000 раз, значит не ответили на какой-то другой вопрос. Возможно более важный и который не имеет очевидного ответа.
И когда вы дойдете до более сложных вопросов - вам отвечать будет некому. Потому что те кто могут ответить, либо отвечают в 10000 раз на очередной "как по кнопке зажечь диод", либо задолбались и вообще перестали отвечать. Вы думаете интрестно отвечать на одни и те же вопросы? Людям которым лень в гугл заглянуть. Ладно бы "заглянул, попробовал, не получается" - тут само-собой помочь нужно.
С документацией вы так же поступаете? Зачем ее читать - проще спросить. А писали/переводили ее наверное от нечего делать.
P.S. Кстати, вы нашли только один ответ как боротся с дребезгом. Можно и без библиотеки (мне лично даже проще). А есть еще и аппаратное решение.
Понятно. Вопросов больше не имею.
Вы не обижайтесь. Одно дело "вопросы", а другое дело "лень".
Если что-то непонятно, нужно помочь разобратся, не получается - конечно такие вопросы будут восприняты нормально. Если человек сам прикладывает усилия, то почему бы и не помочь? Все были (и есть) новичками, все чего-то не понимают.
А обида - это не продуктивно. Кроме себя вы этим никого не накажете.
Если показалось обидно - извините. Не ставил такой цели. Хотел объяснить. Причем лично свое видение (я не могу говорить за все сообщество в целом, может кому-то в кайф отвечать вместо гугла).
С дребезгом бороться делаем (10-100мс).
Можно изменением переменной-флага . С флагом щас пример набросаю.
Ксожалению нет возможности проверить (в данный момент) , но работать будет.