Скетчи для беспроводного включения светодиода
- Войдите на сайт для отправки комментариев
Вс, 06/05/2012 - 13:43
Добрый день!
Есть два ардуино фио и радиомодули APC 220. При нажатии кнопки на одном должен загореться светодиод на другом.
Подскажите начинающему скетчи для обоих ардуино.
С уважением Михаил
В самом простом случае как то так:
Кнопка должна при нажатии замыкать 2 пин на землю (GND) и так как проверить не на чем попробуйте разные варианты второй код строки 09 и 10.
Спасибо огромное,но не работает.Скажите,чтобы исключить пока радиомодули(вдруг это они не работают), можно соединить Т и R (противоположно)ардуинок проводами ?
Можно
RX к ТX
TX к RX
GND к GND
В обоих вариантах Светодиод горит постоянно. На кнопку не реагирует.Причем только в случае ,если включена ардуина с кнопкой.
Кнопка закорачивает 2 пин на землю.
А если так:
1. А откройте на компе serial монитор.
(Вторую ардуину можно ввобще не при этом не подключать).
Понажимайте кнопку, убедитесь что в serial монитор 1 меняется на 0.
Так вы будете знать что "кнопка работает".
2. Подключайте вторую дуину, но поменяйте
Serial.println(!digitalRead(BUTTON));
на
Serial.write(!digitalRead(BUTTON));
P.S. Имелся ввиду первый скетч из сообщения 2
В serial монитор при нажимании кнопки бегущие ноли становятся единицами,при отпускании-опять " 0" побежали..
Поменял-ничего не изменилось.Светодиод горит постоянно. Может, кнопку перетянуть на "минус" через внешний резистор?...
Значит отсылает, так что второй пример тоже не работает? Здесь должно происходить тоже самое - нажали кнопку - 1, отпустили - 0:
А здесь если вы отправите в сериал-монитор 1, то светодиод долже зажечься, если 0 - погаснуть:
Без изменений,братцы.Светодиод светится при вкл. обеих ардуинок , при выкл .ардуинки с кнопкой продолжает светиться ...
Так а если в сериал-монитор посылать 1 или 0 светодиод загорается и тухнет?
А как подключиться одновременно и к сериал-монитору и ко второй дуине ? разьем запараллелить ?
Нет, подключите к компу только дуину на которой светодиод и попробуйте в сериал-монитор отправить 1 или 0
Понял,спасибо.
Отправляю на сериал 0 и 1, светодид не горит. Стоит только нажать на SEND справа в верхнем углу монитора или ENTER на компе , сразу загорается и уже не гаснет.
Последний пример используете?
Да.Только #define BUTTON 2 добавил в кнопочный скетч .
Странно у меня все работает. А если так должно возвращаться тоже самое что шлете 0 или 1:
И еще исправьте вот так:
И попробуйте так:
Вы знаете , 17 сообщение заработало!Надо отойти , попробую 18 сооб. и попробую модули и сразу отпишусь.Заодно расскажу, для чего я Вас,братцы, мучил. Пока,СПАСИБО ОГРОМНОЕ !!!
...Пришел,извините..
Радиомодули настроил, все работает!!!
Вот посмотрите , для чего я это все затеваю...
Стартовое оборудование для проведения соревнований.
Кино для ознакомления
http://www.youtube.com/watch?feature=player_embedded&v=y9v4NwVA3Xs
Правила
http://www.youtube.com/watch?feature=player_embedded&v=KK47reiZhqQ
Буду РАД любой Вашей помощи.Магарыч с меня!!Милости прошу на соревнования
E-mail:R164@mail.ru
Скайп: R164R164
тел моб 8(928)9822500 Михаил Манелов , г.Ессентуки
Не сочтите за наглость, как этот скетчи усовершенствовать на 3 независимые кнопки (пины2,3,4) с независимым зажиганием(время горения-2 сек) светодиодов(появл.сигналов)на пинах 11,12,13 другого ардуино?Поскольку светофоров тоже 3 шт...
Поконкретнее сформулируйте чего хотите, а то как-то не очень понятно.
Предположим нажали первую кнопку, загорелся первый светодиод. Прошла одна секунда. В этот момент нажимают вторую кнопку.
Должен зажечься второй светодиод, или допустимо "пока не погас первый, мы ни на что не реагируем"?
Братцы,извините,только у компа оказался..
Светофор на 3 цвета:кр,жел,зел. На светофоре стоит модуль с ардуиной и реле. Напротив светофора стоят 3 судьи ,ардуинка с модулем на 3 кнопки. У каждого судьи в руке по одной кнопке соотв. цвета . Любой из них независимо друг от друга должен своей кнопкой зажечь только свой цвет(СВЕТ) на светофоре. Зажигание фонарей может происходить одновременно.Время Горения после зажигания--2--3 сек. В правилах работа светофора хорошо видна...
Попробуйте такой скетч, на "принимающей" ардуине
Укажите ваши пины в первой строчке. Не забудте что диоды нужно подключать через резистор токоограничивающий (кроме 13-того пина, там он уже есть). Подключите эту дуину к компу и попробуйте попосылать, руками, 1, 2 или 3. Сделать имитацию нажатия кнопок. Диоды долны загоратся на 2сек. Повтороные нажатия - игнорируются.
Если все заработает - можно и за "отправляющий скетч" братся.
Упс. Очепятка. В строчке 38, должно быть не
if(currentTime>times_off[buttonIndex]){
а
if(currentTime>times_off[i]){
Вы пишите :"Повторные нажатия игнорируются" . А должно при каждом пересечении самолетом судейской плоскости., Вся гонка состоит из 10 кругов=10 раз зажиганий .Если самолет не долетел до этиой плоскости и развернулся раньше, судья светофор не зажигает и на комп идет сигнал о недолете.
Имеетсяв ввиду что игнорируются повторные нажатия пока горит светодиод (например дребег кнопок и т.п.).
Если же вам нужно, что-бы 2сек. отсчитывались от самого последнего нажатия. Что-то типа
"нажали", прошла одна секунда (диод еще горит), а мы еще раз нажали (добавили еще 2 сек). Итого диод горит 3 сек. Значит просто уберите эту проверку, да и все. Выкинте строчки 28 и 31
Если же у вас "поторные нажатия" идут с интервалом, например 5 сек, то игнорирования не будет в любом случае.
Тогда у Вас все правильно,ничего выкидывать не надо .Пробую ...
ничего не загорается .На пинах 11,12,13--5 вольт постоянно,несмотря на все команды через сериал.
(меряю между пином и 3v3)
"Отправляющую" дуину отключили на это время? Она не шлет помехи?
Мою "поправку опечатки", учли?
>(меряю между пином и 3v3)
Ну обычно напряжение на пине меряеют между пином и землей.
>ничего не загорается .На пинах 11,12,13--5 вольт постоянно
Это же взаимоисключающие утвреждения.
5v - означает "горит".
"не загорается" означает - 0v.
Что у вас, все-таки. "Не включается" или "Горит постоянно"?
Извиняюсь, только с аэродрома...
Не включается.Между землей и пинами11,12,13- ноль вольт
3V3 подключено тоже только к этим пинам.
очепятку использовал
отправлющую дуину отключил
Попробуйте вот этот (копируйте его целиком, не правте предыдущий)
Проверте скорость в порту (нижний правый угол серил монитора). Должно быть 9600.
Скажите что вы будете видеть в serial мониторе. Теперь скетч будет не только включать диоды, но и сообщать об этом (и прочитанных кнопка) в Serial.
> 3V3 подключено тоже только к этим пинам.
Зачем?????!!!!! Не уверен, но вы можете так что-нибудь попалить.
Вообще счас можете все отключить от дуины (кроме USB кабеля). Достаточно в Serial монитор смотреть.
А диоды подключается так
Никаких 3.3V тут не нужны.
На всякий случай. Это если "обычные светики". Если же это какие-то "сверхяркие светодиоды". С потреблением тока более 40ma, то уже какие-то драверы для управления мощьной нагрузкой нужно будет городить.
Теперь диоды горят.Никакой реакции в серал-мониторе.
Слева сверху вниз в одну вертикальную строку печатается один раз "Ready for command Turn0ffo",потом много "Turn0ffo", после нажатия на SEND------"Turn0ffo-39".
АВТОСКРОЛ выключить ?
Сейчас к пинам подключен вольтметр.Нет св/диодов в наличии...
Ладно. Умучили. Счас свой комп с ардуиной включу, дополирую и дам скетч.
Автоскролл - по вашему желанию. Это шутка для вашего удобства. Ни на что не влияет. Как вам удобней выводи читать.
>Сейчас к пинам подключен вольтметр.Нет св/диодов в наличии...
Это хорошо. Главное - не пытайтесь в них 3.3V вкоротить.
Извините,спасибо...
В скетче после последней загрузки внизу чего- то много красным написано про JAWA, хотя скетч загрузился..
Да за что извинятся, для того этот форум и есть.
>В скетче после последней загрузки внизу чего- то много красным написано про JAWA, хотя скетч загрузился.
Это не от скетча зависит. Сама IDE глючит. Попробуйте просто залить еще раз. Зайти/выйти из IDE. Ребутнутся.
Вообщем вот такой у меня работает:
При последовательной посылке 1, 2, 3 выдает примерно такое:
На 13-том леде (включается по команде 1) вижу что работает все как надо. Другие ноги думаю тоже, по аналогии работают правильно.
Что-бы два раза не вставать.
Скетч для "отправляющией дуины". Кнопки подключены "от пина к земле".
Подключаете "отправляющую дуину", открываете серил монитор. Жмете кнопки должны видеть в сериал монторе номер нажатой.
Если кнопок нет под руками - можете просто проводком коротнуть пин на землю.
Если все нормально - соеденяете, накрест, RX,TX пины дуин и проверяете как они друг друга понимают.
С получающей дуиной-все прекрасно!!!!
С отправляющей-засада : на сериал-монитторе сразу ниже Senda горизонтальная бегущая строка из 123 пока комп не зависнет. Никакой реакции на закорачивание пинов 3,4,5
"Зайти/выйти из IDE. Ребутнутся." Не умею, научите ...
А вот так всегда. Поленишися проверить. Так как "всего пара строчек" :(
Вот. Это уже проверил на себе. Проводком потыкал.
P.S. delay(500) - для отладки. Уберите его когда будете соединять дуины.
>"Зайти/выйти из IDE. Ребутнутся." Не умею, научите ...
Ну программа которой вы Arduino программите. Закрываете ее и открываете опять. :)
Если не помогает - ребутнутся, то есть, перезагрузить компьютер. Фактически то же самое "включить/выключить", только уже не программы, а всего комипьютера целиком.
Но раз скетчи у вас льются - значит вам это не нужно. Помогло "попробовать еще раз".
ВОЛШЕБНИК....
Все работает....
1? Как убрать перемигивание диода посередине горения(2 сек горит,тухнет,опять горит 2 сек и гаснет совсем))?
2?Повторное зажигание не менее чем через ,допустим, 5 сек.(защита от судейской ошибки)?Сейчас можно сразу...
3?При зажигании светофоров кратковременная подача питания на встроенные в кнопки микровибраторы(чтобы судья "собственноручно" знал, что он зажег светофор. Смотреть судья должен только на самолет, пересекающий контрольную плоскость.Отвлекаться нельзя, скорости за 350-400 км/час)
4?Может,уже уместно обсудить оплату Вашего труда ?Или я могу чем помочь?(Вопросы у меня еще будут,это только часть стартового комплекса)...
>ВОЛШЕБНИК....
Ага, блин. Особенно в сообщении #41. Что-называется "мля, без закрылков взлетели!! Хорошо что никто не заметил!".
>1? Как убрать перемигивание диода посередине горения
Нужно посмотреть что в логе принимающая пишет. Но наверное, извините, уже не сегодня
А если слать не дуиной, а руками в сериал тоже есть перемигивание?
>2?Повторное зажигание не менее чем через ,допустим, 5 сек
Можно. Просто завести еще один массив и в строчке 33 делать проверки по нему, а не times_off
>3?При зажигании светофоров кратковременная подача питания на встроенные в кнопки микровибраторы
Со стороны скетча - тоже можно. Опять-таки заводите дополнительный массивы (для пинов, для времени) и делаете "по аналогии.
А вот как эти микровибраторы подключить - вам виднее. Зависит от того что там они по току кушают. Но в вопросе схемотехники, я близок к нубу. Могу какие-то советы давать уровня "здравый смысл+закон ома" (ну "основы" на easyelectronics почитал). На 80% форумных вопросов этого хватает :)
>Может,уже уместно обсудить оплату Вашего труда ?
А вы уверены что хотите этого? ;)
Программер - удовольствие дорогое. Особенно если это для хобби оплачиваемого "с зарплаты". "Магарыч" тут не проходит. Тем более что я не пью.
"А если слать не дуиной, а руками в сериал тоже есть перемигивание?"
Если слать не дуиной, а руками, то никакого перемигивания нет.Диод (горит ровно две сек. и гаснет).
А когда через другую дуину -диод (горит 2 сек,гаснет,опять горит 2 сек и гаснет окончательно.Как будто отправляющая дуина дублирует команду)
"Программер - удовольствие дорогое. Особенно если это для хобби оплачиваемого "с зарплаты"."
...и тут Вы правы,чего душой кривить..затея моя некоммерческая ,для большинства -глупая, из собственного кармана...Но я хочу ее сделать, извините...Блин,чета тоже устал..
Для общего развития, о каких суммах может идти речь?..
Для силовой разводки на светофоры приобрел релейный модуль для ардуино:
http://arduino-direct.com/sunshop/index.php?l=product_detail&p=155
Начал разбираться, подключил и понял ,что управляюший сигнал не "+5" вольт, а "0". Но хотелось-бы оставить пины 11,12,13 как есть для контроля светодиодами прохождения сигнала на принимающую дуину. Можно значения пинов 11,12,13 инвертировать на пины ,допустим 8,9,10 и взять уже с них управляющий ноль для релейных входов ?
Можно, но не нужно. Светики же можно подключить что-бы они зажигались при 0-ле на ноге.
Просто втыкаем светик не по схеме (нога-резистор-светик-земля), а (нога-резистор-светик-5v). Тогда он светится будет когда на ноге 0.
А релейный модуль подключать паралельно с ним (но смотреть что-бы их суммарны ток был не выше 40ma). Безопасней модуль включать "после резистора", а не сразу на ногу.
Или вообще попробовать включить их последовательно. Тогда вы действительно будете "контролировать" модуль, а не надеятся что в скетче "светик включили, а модуль забыли".
Ну и конечно в коде инвертнуть управляющий сигналы, там где digitalWrite(LED_PINS[buttonIndex],...); HIGH поменять на LOW и наоборот. (строки 16,34,47).
"А если слать не дуиной, а руками в сериал тоже есть перемигивание?"
Если слать не дуиной, а руками, то никакого перемигивания нет.Диод (горит ровно две сек. и гаснет).
А что при этом видно в Serial Monitor у "принимающей"?
P.S. А вы в скайпе-то появляетесь?