Arduino uno
- Войдите на сайт для отправки комментариев
Ср, 23/07/2014 - 20:17
Приветствую, совсем не давно я заказал с Китая Arduino uno.
И когда я начал осваивать массивы возникла проблема с 3 им цифровым (вход/выход), а именно на этом выходе не загорается светодиод. Потом попытался зажечь один светодиод только от 3 выхода, и точно также не загорелся. Мог ли я спалить этот выход ?
как подключали? через резистор? как зажигали?
Мог ли я спалить этот выход ?
Теоретически - могли (особенно если сразу три светика на одну ногу цепляли). Но вероятность того что что-то напутали в коде - выше.
Так что не нужно из себя "партизана изображать". Телепатов нет. Если хотите внятных ответов, то внятно объясните что вы делали, как подключали, покажите скетч которым вы пытались "точно так же не загорелся".
А... и еще..., ну почему тема называется "Aduino Uno"? Разве про нее речичь идет? Вопросы про уну или "как правильно зажигать светики", или там "как проверить спалил ли я выход...", или еще что-то "поближе к реальности... что-бы понятней было о чем речь пойдет".
Вообщем ждем подключени, скетча и объяснения как же вы проверяли что он "не зажигается".
Конечно 220 Ом
leshak, Ок ,Приму во внимание ваше замечание
Во первых читаем это: Вставка программного кода в тему/комментарий (уже поправил ваш поста, это на будущие).
Во вторых.... к сожалению сам код "выглядит корректным". Так что остались варианты:
1. Сгорел выход (или не пропай, или на плате дорожка...)
2. Ошибки в подключении (перепутали скажем D3 и A3), полярность светка или еще что-то...
3. Сам светик сдох.
Начем с последнего. Если этот же светик, через этот же резистор, ничего не меняя подключить не D3, а к +5v пину. Светиться?
Хотя, конечно... "код корректный" это я слегка погорячился. Есть тараканчик. Правда маловероятно что "из-за этого проблемы", но все же...
сколько раз у нас выполнится цикл (начинайте в уме, загибая пальзцы 0, 1, 2, 3....) ? А сколько у нас светиков?
Вообщем я предлагаю, раз разбираемся именно с третьим упростить ваш скетч до вот такого:
При включении, по идее, толкьо на D3 светик должен загореться на три секунды и в сериал мониторе появится надпись "Led is ON".
Во вторых.... к сожалению сам код "выглядит корректным".
Дааа?
На выход какие пины получаются? ;)
Во вторых.... к сожалению сам код "выглядит корректным".
Дааа?
На выход какие пины получаются? ;)
невнимательно читали... чуть ниже я сразу же написал "про корретность - погорячился" и предложил посчитать сколько раз выполнитеся цикл :)
невнимательно читали... чуть ниже я сразу же написал "про корретность - погорячился" и предложил посчитать сколько раз выполнитеся цикл :)
А блин.... все-таки я "невнимательно читал". Вы правы... еще один таракан есть.
Но даже в этом случае мой проверочный из #7 должен нормально зачешь светик и доказать что "с железом все в порядке".
Вообщем булатка, банальный скетч типа
Зажигает третий светик?
Благодарствую за советы :). Это я тупанул. Оказывается на этот pin 3 раза сгоревшие светодиоды использовал.
Кстати у меня возник еще вопрос . Теперь у меня 0 pin горит достаточно ярко, а остальные тускло, Я измерил напряжение на светодиодах и оказалось на 0 pin 2В, а на остальных 1.7. В. С чем это связано ? И как выдать одинаковое напряжение ?
Кстати у меня возник еще вопрос . Теперь у меня 0 pin горит достаточно ярко, а остальные тускло,
А вот теперь смотрите в описание своей платы... смотрите что расположено на D0,D1
Вообщем лучше считайте что D0,D1 - использовать нельзя. По крайней мере пока вы собираетесь к компу подключать дуину. Прошивки там заливать, отлаживать и т.д.
Благодарствую за советы :). Это я тупанул. Оказывается на этот pin 3 раза сгоревшие светодиоды использовал.
Да нет... у вас реально проблемы в скетче. И в loop() лишний раз цикл прокручиваете, и в setup().... пины на выход не включили (а это 100% причина "тусклости"). Смотрите сообщение №8. Ответте на вопрос который задал vdk.
Сорри я ввел вас в заблуждение, нет я не использовал D0, D1. Использовал выходы с D2- D7.
Это я элементы массива имел ввиду( D2=0, D3=1, и т.д.)
Кстати у меня возник еще вопрос . Теперь у меня 0 pin горит достаточно ярко, а остальные тускло, Я измерил напряжение на светодиодах и оказалось на 0 pin 2В, а на остальных 1.7. В. С чем это связано ? И как выдать одинаковое напряжение ?
А если их (светодиоды с резисторами) подключить не к пинам, а к 5В? Тоже один их них горит ярче? (если да, то это уже зависит не от ардуины, а от светодиода/резистора
Сорри я ввел вас в заблуждение, нет я не использовал D0, D1. Использовал выходы с D2- D7.
Это я элементы массива имел ввиду( D2=0, D3=1, и т.д.)
Ну, а D7 какой индекс будет иметь?
То есть у вас D2 горит тускло, а остальные ярко?
Отгадка в сообщении #8. Вы только D2 включили на выход.
А потом (именно "потом", когда ВСЕ пины включите на выход и все нормально загорится) почитайте внимательно
Функция digitalWrite() | Аппаратная платформа Arduino , и попробуйте понять "что же сделали", почему они не включенные на выход "все-таки загорелись" хотя-бы тускло.
Кстати - не забывайте. Что "что там у вас" - никто не видит. Когда исправите скетч - тоже покажите тут. А то может вы "давно все исправили", но никому об этом не сказали.
Подключил. Действительно горит ярче. Спасибо, буду уменьшать сопротивление
А если их (светодиоды с резисторами) подключить не к пинам, а к 5В? Тоже один их них горит ярче? (если да, то это уже зависит не от ардуины, а от светодиода/резистора
А смысл? Светит но "тускло". А как еще будет светиться лед, подключенные через 20.2K резистор? Вообщем и порт живой, и светик живой. Все живое. Ничего не сгорело. Только скетч исправить.
Все-таки "допинать работу с циклами".
Bulatka92
Подсказка: в setup() вам тоже цикл нужен.
Подключил. Действительно горит ярче. Спасибо, буду уменьшать сопротивление
Не нужно. 220 - вполне правильный номинал. И то что он при подключении к +5v горит нормально - лишнее подтверждение тому.
Разбирайтесь со скетчем.
В итоге у вас на пине должно все гореть так же, и при тех же номиналах, что и при подключении к +5v.
А смысл? Светит но "тускло". А как еще будет светиться лед, подключенные через 20.2K резистор? Вообщем и порт живой, и светик живой. Все живое. Ничего не сгорело. Только скетч исправить.
эммм... я исхожу из того, что если на пине LOW, то светодиод светиться вообще не будет. Или будет?
leshak, вот скейч
Все горит, как я хотел. Спасибо вам
vdk, спасибо,понял в чем дело
leshak, вот скейч
Все горит, как я хотел. Спасибо вам
И что, думаете я отстану от вас? И не найдетесь :)
Работает - хорошо. Но нужно же еще что-бы код прилично выглядел.
Почему в loop() вы сделали цикл по массиву идете, а setup() у вас, в принципе тоже самое, но тупым копированием сделано?
Это правильно когда не работает и не уверен "сделать хоть как-то", лишь бы работало.
Но ведь дальше нужно... вообщем давайте, то же самое, но тоже только через for.
В loop() вы для каждого элементы выставляли "состояние", а в setup(), абсолютно по аналогии только "режим" выставляем.
А смысл? Светит но "тускло". А как еще будет светиться лед, подключенные через 20.2K резистор? Вообщем и порт живой, и светик живой. Все живое. Ничего не сгорело. Только скетч исправить.
эммм... я исхожу из того, что если на пине LOW, то светодиод светиться вообще не будет. Или будет?
Тогда и вам нужно перечитывать доку по digitalWrite(). Что будет если пину включенному на вход, мы сделаем digitalRead(.., HIGH)? Что подобная комбинация означает с точки зрение камня?? ВХОД+HIGH? Он не "проигнорирует" (как вы видимо подумали), а... все-таки кой чего сделает. На выходе не LOW будет. А, как ни странно, все-таки HIGH. Только с офигеным ограничем по току: 0.25mA. Которых может хватит что-бы хоть как-то поджечь светик, а может и нет.
Согласен с вами.
Тогда и вам нужно перечитывать доку по digitalWrite(). Что будет если пину включенному на вход, мы сделаем digitalRead(.., HIGH)?
А! Нашел где это было - digitalRead, я о нем и не думал (и нефиг такие тесты писать, кстати)
Но в любом случае есть смысл посмотреть, на чьей стороне проблема, а потом уже думать, что с ней делать
Тогда и вам нужно перечитывать доку по digitalWrite(). Что будет если пину включенному на вход, мы сделаем digitalRead(.., HIGH)?
А! Нашел где это было - digitalRead, я о нем и не думал
Но в любом случае есть смысл посмотреть, на чьей стороне проблема, а потом уже думать, что с ней делать
Тьфу блин... уже под вечер заговариваю. digitalWrite конечно. Булатки-то я ссылку "что читать" дал верно, а вам уже.. оговорился.
Читаем документацию:Функция digitalWrite() | Аппаратная платформа Arduino
Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со значением HIGH будет активировать внутренний 20K нагрузочный резистор. Подача LOW в свою очередь отключает этот резистор. Нагрузочного резистра достаточно чтобы светодиод, подключенный к входу, светил тускло. Если вдруг светодиод работает, но очень тускло, возможно необходимо установить режим выход (OUTPUT) функцией pinMode().
P.S. Почему в данном случае pull-up перевели как "нагрузочный", а не "подтягивающий" - я не знаю.
Тогда и вам нужно перечитывать доку по digitalWrite(). Что будет если пину включенному на вход, мы сделаем digitalRead(.., HIGH)?
А! Нашел где это было - digitalRead, я о нем и не думал (и нефиг такие тесты писать, кстати)
Как раз "нужно". Это тоже один из способов проверить (не 100%, но все же) "сгорела нога или нет", Если она включена на OUTPUT. Мы сделали digitalWrite(...,HIGH), и тот уже сделав digitalRead получили LOW, то сказать "похоже ноге кабздец" - можно с большой долей уверенности. А на тот момент, если помните, подозрение что на "спалили ногу" - еще имело место быть. Отсюда и "такие тесты" :)
Кстати если бы тот тест все-таки пустили,то светик он бы защего нормально :)
Согласен с вами.
Ну вот... другое дело :)
Хотя тут конечно можно еще найти что "улучшать", но на это уже...перфекционизм. у меня сил сегодня уже не хватит сил объяснять:)
В любом случае - новичка, за такой код, ни у кого язык не повернется корить. Да и опытный - в принципе краснеть не будет за такое. :)
Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со значением HIGH будет активировать внутренний 20K нагрузочный резистор.
Вот я и говорю, что нефиг писать такие тесты как в #7, а то полтергейстов не оберешься
(хотя тоже уже под вечер начал путать digitalRead с INPUT mode - все равно контекст использования совпадает)
Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со значением HIGH будет активировать внутренний 20K нагрузочный резистор.
Вот я и говорю, что нефиг писать такие тесты как в #7, а то полтергейстов не оберешься
Каких полтергейстов? Что вам не нравится в тесте #7? Помоему его проблема только в одном - его не успели запустить и попробовать. Либо запустили, но о результатах - не сказали.
Если вы, по прежнему утверждаете что он содержит "полтергейсы", то опишите что же именно в нем "не так"?
Полтергей был именно в изначальном скетче. Причину полтергейса - вы сами подсказали. Как только ее исправили - все стало на свои места.
Если бы пустили тест #7, то он бы тоже показал что "железо работает нормально" и таракана в изначальном скетче - все равно нашли бы.
Так почему же "нефиг писать такие тесты"?
Каких полтергейстов? Что вам не нравится в тесте #7? Помоему его проблема только в одном - его не успели запустить и попробовать. Либо запустили, но о результатах - не сказали.
Мне 12 строчка не нравится - переключаем выход на вход и удивляемся побочным эффектам
Каких полтергейстов? Что вам не нравится в тесте #7? Помоему его проблема только в одном - его не успели запустить и попробовать. Либо запустили, но о результатах - не сказали.
Мне 12 строчка не нравится - переключаем выход на вход и удивляемся побочным эффектам
Ну вот это конкретика. Могу объяснить почему именно так:
Вот у нас упрощенное устройство одного входа/выхода
Мы имеем подозрение что у нас "сгоревший порт".
Что будет если мы дадим на него HIGH, а в итоге имеем LOW по факту? Как это может проиходить? А к примеру если у нас нижний диодик сгорел не в обрыв, а в КЗ.
Теперь что будет если мы на подобный вход попробуем дать HIGH? (подключем его к VCC). Мы получим "короткое замыкание". Через навернувшийся диод пойдет сильнейший ток, который начнет нагревать камень и может его "добить до конца". Хотя,даже со сгоревшей ногой, им можно продожать пользоваться. Просто не использовать D3.
Поэтому сам тест я проводил "включаем светик на три секунды". Достаточно что-бы понять "работает ли", а если нет... то шансы "навредить еще больше" - снижены. Через три секунды, мы все возвращаем в "изначальное состояние". Пин включаем на вход, отключаем подтягивающий. Возвращаем все "как было" при включении контроллера (INPUT+LOW).
Сугубо из принципа "не навреди", так как мы не имеем уверенности что все это запускается на не поврежденном камне.
Вообщем "проверл тест" - верни все как было.
Мне 12 строчка не нравится - переключаем выход на вход и удивляемся побочным эффектам
А 13-тая, подает туда LOW. Все выключилось. Никаких "полтергейсов". Ничего не горит.
Жалобы "горит тускло" - явно относились не к тесту #7
Там описание поведения должно было звучать так: "включился на 3 секунды и погас".
Никаких удивление на побочные эффекты (их просто нет) - этот тест просто не запускали.
Все жалобы на побочные эффекты - относились к изначальному скетчу.
А 13-тая, подает туда LOW. Все выключилось. Никаких "полтергейсов". Ничего не горит.
Допустим, я прогоняю тест. "Ага, один работает. А несколько?". Копирую несколько раз нужные фрагменты. Далее думаю, что пусть светодиоды не тухнут и горят, и удаляю 13-е строки, но по ошибке в первом фрагменте удаляю сразу две соседних строки - 12 и 13. В результате и получаем ситуацию, когда один светодиод горит ярко, а остальные еле тлеют. "Что за фигня? Неужели что-то все-таки с платой не так?"
Помоему в вас уже явно говорит "дух противоречия".
А 13-тая, подает туда LOW. Все выключилось. Никаких "полтергейсов". Ничего не горит.
Допустим, я прогоняю тест. "Ага, один работает.
И все. Об этом и нужно сообщить на форуме. Было подозрение что D3 сгоревший. Тестом выяснили что "железо в норме". Значит нужно все-таки еще раз внимательно смотреть что не так и изначальным скетчем.
Вы высказали жалобу, вам перечислили действия "для диагностики". Нужно их выполнить и сообщить что получилось.
А несколько?". Копирую несколько раз нужные фрагменты. Далее думаю, что пусть светодиоды не тухнут и горят, и удаляю 13-е строки, но по ошибке в первом фрагменте удаляю сразу две соседних строки - 12 и 13. В результате и получаем ситуацию, когда один светодиод горит ярко, а остальные еле тлеют. "Что за фигня? Неужели что-то все-таки с платой не так?"
То есть вы спросили совет, вам сказали что нужно сделать, вы сделали "по своему", вы накосячили... а виноват тот кто сказал что нужно делать?
Помоему очевидно кто в этой ситуации "сам себе злобный буратино".
А совсем не "строка 12-ть".
Кстати привыкайте. Что один и тот же пин, "по ходу пьессы" может менять свой режим "вход/выход" несколько раз. Что это не та вещь которую "один раз выставил в setup() и все" (хотя согласен что в большинсве случае это именно так).
Более того.... в целях безопастности (защиты от все тех же ошибок подключения, статики и т.п.) если мы знаем что он нам долго не потребуется, то его даже РЕКОМЕНДУЕТСЯ включать на вход. В режиме INPUT у ноги выживаемость гораздо выше, если снаружи прилетело "что-то не то".
Помоему в вас уже явно говорит "дух противоречия".
Дык, не с той стороны зашли. Я так считаю
Помоему в вас уже явно говорит "дух противоречия".
Дык, не с той стороны зашли. Я так считаю
Да почему же "не с той"? Подозрение на железо.... Значит нужно "просто включить". Максимально просто. Один светик. Без массивов, циклов и пременных. Что-бы исключить вероятность ошибки програмной.
Так как есть опасения в неисправности камня (и что удаленный человек вовремя заметит разогрев и т.п.) - лучше на долго не выключать. Отсюда и выключение после.
Так как это опять-таки удаленно, то что-бы не объяснять "возмите тестер... в течении трех сек. успейте померять" - используем тот тестер который есть под рукой. Serial.println(diditalRead()); Ну да, в принципе это можно было-бы и опустить... вернее оставить на "следующую итерацию" (если светик не зажегся). Но опять, таки. Так как это "форум" и цикл вопрос-ответ достаточно длительный... желательно собрать максимум ифны за один раз.
Цель скетча - проверить версию. Не более того. После чего он выкидыает. И как "база для дальнейшего развития" - совершенно не планировался.
(не, что-то не получается у меня сформулировать)
Есть машинка на ардуино уно.Хочу,чтобы приезжала из одной комнаты в другую,но машинка нестабильно поварачивает.Что можно сделать для стабилизации поворотов?