Скетч "Blink". Почему мигает вполсилы встроенный диод, когда не инициализирован порт?

Тема в разделе "Arduino & Shields", создана пользователем Krendelyok, 5 окт 2016.

  1. rkit

    rkit Гуру

    Ты меня явно не понимаешь. Еще раз говорю: это не не ошибка. в штатная ситуация. Ты хочешь, чтобы IDE ругалась на штатную ситуацию. В этом никакого смысла нет. Отдельная функция это просто сокращение для "перевести порт в режим чтения и записать туда 1".
     
  2. Krendelyok

    Krendelyok Нерд

    Еще , кстати, в книге "Руководство пользователя. Базовый набор" вовсю предлагают опробовать работу ШИМ на 13 порте. На котором ШИМ быть не может) Ляп на ляпе. Во времена моей молодости такого не было.
     
  3. Krendelyok

    Krendelyok Нерд

    Штатная ситуация, когда порт не инициализирован, но в программе идет к нему обращение? Ну эт наверное, для ЕГЭшников штатная ситуация. Для меня - нет))
     
  4. rkit

    rkit Гуру

    Порт может быть в состоянии 1 -- ввод, может быть 0 -- вывод, а "не инициализирован" он быть не может. Нету у него такого состояния. Если оно тебе так нужно, то можешь сам написать, израсходовав память и циклы. И ИДЕ написать, которая будет это тебе проверять методом суперкомпиляции с линейными типами.
     
  5. Krendelyok

    Krendelyok Нерд

    По-моему, не совсем так. Прочитайте то, о чем я писал в самом начале. Что мы имеем. По умолчанию порт находится в состоянии "вход". Ок. Мы запускаем "Blink" без инициализации порта. Что мы видим? Диод светится на 10%, только когда подается команда записи "1" в этот порт (подключается резистор подтяжки). А перед тем, как подключился резистор подтяжки, вы утверждаете, что пин находился в состоянии "0". Но это не так)) По-моему, пин просто "висел в воздухе". Так что состояний получается три. Чуть сложнее, чем вы рассудили.
     
    Последнее редактирование: 6 окт 2016
  6. rkit

    rkit Гуру

    Специально для зануд, полный список состояний пина, работающего в режиме IO:.
    ввод высокий
    ввод низкий, состояние по умолчанию
    вывод высокий
    вывод низкий
     
  7. Правильно сказал наш друг Ostrov:
    Самое низкое 1010111101010....
    Здесь есть два пути:
    1) Сложный Вы пошли по нему, разобраться.
    2) Мигать не встроенным светодиодом, а другим.
     
  8. Krendelyok

    Krendelyok Нерд

    По-моему, вы куда-то потеряли резистор подтяжки. Или по-вашему логическая единица всегда задается резистором подтяжки?)) Из даташита:
    Tri-state (Hi-Z)
    Input Yes Pxn will source current if ext. pulled low
    Input No Tri-state (Hi-Z)
    Output No Output Low (Sink)
    Output No Output High (Source)
     
    Последнее редактирование: 6 окт 2016
  9. А Вы delay() использовали?
     
  10. Krendelyok

    Krendelyok Нерд

    Боюсь, будет ровно то же самое, если взять диод с теми же параметрами ;)
     
  11. Krendelyok

    Krendelyok Нерд

    Не понял вопроса.
     
  12. Мне кажется, что при иницилизации ( да и всё что с ним связано) порта ардуинка отвлекается на него и как-бы замораживает светодиод на высоком уровне, а когда иницилизации нет то он постоянно переключается а глаз не может заметить это и он светит слабо. Тогда надо использовать задержку на высоком уровне, чтобы было всё видно, желательно больше 500.
    Иначе есть другой выход, недостаток платы